diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm index a3f2438e03e..0bdab8a92f8 100644 --- a/code/game/antagonist/antagonist.dm +++ b/code/game/antagonist/antagonist.dm @@ -155,6 +155,8 @@ if(spawn_target == null) spawn_target = initial_spawn_target + log_debug("ANTAG SPAWN: Attempting antag spawn. Antag: [id], spawn target: [spawn_target], ") + // Update our boundaries. if(!candidates.len) return 0 diff --git a/code/game/antagonist/antagonist_update.dm b/code/game/antagonist/antagonist_update.dm index f1017df4143..80950986bee 100644 --- a/code/game/antagonist/antagonist_update.dm +++ b/code/game/antagonist/antagonist_update.dm @@ -90,6 +90,7 @@ // Minimum: initial_spawn_target // Maximum: hard_cap or hard_cap_round cur_max = max(initial_spawn_target,min(round(count/ticker.mode.antag_scaling_coeff),cur_max)) + log_debug("ANTAG SPAWN: Updated current max. Antag: [id], players: [count], new current max: [cur_max].") // Updates the initial spawn target to match the player count. // Intended to stop 6 nuke ops in a 15 player round. RIP those rounds. @@ -110,7 +111,5 @@ var/new_cap = max(initial_spawn_req, round(count/modifier)) // Default to the hardcap if we're about to surpass it - if (new_cap > hard_cap) - initial_spawn_target = hard_cap - else - initial_spawn_target = new_cap + initial_spawn_target = min(hard_cap, new_cap) + log_debug("ANTAG SPAWN: Updated initial spawn target. Antag: [id], players: [count], new spawn target: [initial_spawn_target].") diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index db21c0f1a85..cf27f230531 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -3,7 +3,7 @@ round_description = "There are Vampires from Space Transylvania on the station, keep your blood close and neck safe!" extended_round_description = "Life always finds a way. However, life can sometimes take a more disturbing route. Humanity's extensive knowledge of xeno-biological specimens has made them confident and arrogant. Yet something slipped past their eyes. Something dangerous. Something alive. Most frightening of all, however, is that this something is someone. An unknown alien specimen has incorporated itself into the crew of the NSS Exodus. No one knows where it came from. No one knows who it is or what it wants. One thing is for certain though... there is never just one of them. Good luck." config_tag = "vampire" - required_players = 1 + required_players = 2 required_enemies = 1 end_on_antag_death = 1 antag_scaling_coeff = 8 diff --git a/code/game/gamemodes/vampire/vampire_helpers.dm b/code/game/gamemodes/vampire/vampire_helpers.dm index 8be80a2c046..6400475d00a 100644 --- a/code/game/gamemodes/vampire/vampire_helpers.dm +++ b/code/game/gamemodes/vampire/vampire_helpers.dm @@ -6,6 +6,10 @@ if (!mind.vampire) mind.vampire = new /datum/vampire() + // No powers to thralls. Ew. + if (mind.vampire.status & VAMP_ISTHRALL) + return + mind.vampire.blood_usable += 30 verbs += new/datum/game_mode/vampire/verb/vampire_help diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index 2895a7e1f30..e45e56326df 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -38,7 +38,7 @@ vampire.status |= VAMP_DRAINING - visible_message("\red [src.name] bites [T.name]'s neck!", "\red You bite [T.name]'s neck and begin to drain their blood.", "\blue You hear a soft puncture and a wet sucking noise") + visible_message("[src.name] bites [T.name]'s neck!", "You bite [T.name]'s neck and begin to drain their blood.", "You hear a soft puncture and a wet sucking noise") admin_attack_log(src, T, "drained blood from [key_name(T)]", "was drained blood from by [key_name(src)]", "is draining blood from") T << "You are unable to resist or even move. Your mind blanks as you're being fed upon." @@ -47,14 +47,14 @@ while (do_mob(src, T, 50)) if (!mind.vampire) - src << "\red Your fangs have disappeared!" + src << "Your fangs have disappeared!" return blood_total = vampire.blood_total blood_usable = vampire.blood_usable if (!T.vessel.get_reagent_amount("blood")) - src << "\red [T] has no more blood left to give." + src << "[T] has no more blood left to give." break if (!T.stunned) @@ -85,22 +85,22 @@ blood = min(5, T.vessel.get_reagent_amount("blood")) vampire.blood_usable += blood - frenzy_lower_chance = 20 + frenzy_lower_chance = 40 if (prob(frenzy_lower_chance) && vampire.frenzy > 0) vampire.frenzy-- if (blood_total != vampire.blood_total) - var/update_msg = "\blue You have accumulated [vampire.blood_total] [vampire.blood_total > 1 ? "units" : "unit"] of blood." + var/update_msg = "You have accumulated [vampire.blood_total] [vampire.blood_total > 1 ? "units" : "unit"] of blood." if (blood_usable != vampire.blood_usable) - update_msg += " And have [vampire.blood_usable] left to use." + update_msg += " And have [vampire.blood_usable] left to use." src << update_msg check_vampire_upgrade() T.vessel.remove_reagent("blood", 25) vampire.status &= ~VAMP_DRAINING - src << "\blue You extract your fangs from [T.name]'s neck and stop draining them of blood. They will remember nothing of this occurance. Provided they survived." + src << "You extract your fangs from [T.name]'s neck and stop draining them of blood. They will remember nothing of this occurance. Provided they survived." if (T.stat != 2) T << "You remember nothing about being fed upon. Instead, you simply remember having a pleasant encounter with [src.name]." @@ -122,7 +122,7 @@ src << "You're blindfolded!" return - visible_message("\red [src.name]'s eyes emit a blinding flash!") + visible_message("[src.name]'s eyes emit a blinding flash!") var/list/victims = list() for (var/mob/living/carbon/human/H in view(2)) if (H == src) @@ -133,7 +133,7 @@ H.Weaken(8) H.stuttering = 20 - H << "\red You are blinded by [src]'s glare!" + H << "You are blinded by [src]'s glare!" flick("flash", H.flash) victims += H @@ -175,11 +175,11 @@ src << "You begin peering into [T.name]'s mind, looking for a way to render them useless." if (do_mob(src, T, 50)) - src << "\red You dominate [T.name]'s mind and render them temporarily powerless to resist." - T << "\red You are captivated by [src.name]'s gaze, and find yourself unable to move or even speak." - T.Weaken(20) - T.Stun(20) - T.stuttering = 20 + src << " You dominate [T.name]'s mind and render them temporarily powerless to resist." + T << " You are captivated by [src.name]'s gaze, and find yourself unable to move or even speak." + T.Weaken(25) + T.Stun(25) + T.silent += 30 vampire.use_blood(10) admin_attack_log(src, T, "used hypnotise to stun [key_name(T)]", "was stunned by [key_name(src)] using hypnotise", "used hypnotise on") @@ -188,7 +188,7 @@ spawn(1200) verbs += /mob/living/carbon/human/proc/vampire_hypnotise else - src << "\red You broke your gaze." + src << "You broke your gaze." // Targeted teleportation, must be to a low-light tile. /mob/living/carbon/human/proc/vampire_veilstep(var/turf/T in world) diff --git a/html/changelogs/skull132-VampiricUpdate.yml b/html/changelogs/skull132-VampiricUpdate.yml new file mode 100644 index 00000000000..fa94286586a --- /dev/null +++ b/html/changelogs/skull132-VampiricUpdate.yml @@ -0,0 +1,17 @@ +# Your name. +author: Skull132 + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Vampire's Hypnotise ability now renders the victim unable to speak while stunned, much like the changeling's silence sting." + - tweak: "Vampire scaling boosted, we should now see the game spawn more than one vampire." + - tweak: "Vampires now lose frenzy faster while feeding. One victim, completely drained, should be enough to get out of a mid-level frenzy." + - bugfix: "Vampire thralls are no longer given vampiric abilities/powers." + - wip: "Added debug logs relating to antag spawning. Will keep these active for a bit to see what's going where." diff --git a/ingame_manuals/vampire.html b/ingame_manuals/vampire.html index fd8e7cf48cc..965d3bbd971 100644 --- a/ingame_manuals/vampire.html +++ b/ingame_manuals/vampire.html @@ -6,7 +6,7 @@ This guide contains important OOC information on vampire related mechanics, as w Vampires are individuals who, after attempting blood magic or being converted by a vampire themselves, have been corrupted by the Veil and given insidious power. As creatures of the night they have lost all need to eat or drink and are instead consumed with an unquenching thirst for blood to sustain themselves and to grow more powerful and grow ever closer to tapping the full power of The Veil.

Mechanics


-Blood - Blood comes in two forms: usable and total. The usable blood can be considered your mana pool. It gets trained as you use more powers. Total blood can be thought of as experience points. They cannot be removed, and they will move you further up the power tree.
+Blood - Blood comes in two forms: usable and total. The usable blood can be considered your mana pool. It gets trained as you use more powers. Total blood can be thought of as experience points. They cannot be removed, and they will move you further up the power tree.
You start with 30 units of usable blood. Be careful with your initial pool: if you expend it, you will start slowly frenzying.
Progression - Vampire's progression is linear. The more total blood you train, the more powers you unlock. As the final step, you will unlock the Veil's full power, which augments the existing powers.
Frenzy - With the raw corruption of the Veil locked within your body, maintaining your sanity is a constant battle. Should you ever run out of usable blood, or become enraged through other means, you may find yourself frenzied. You are reverted to a snarling creature who only wants to consume blood until you are able to break out of it, and regain control. This is done by draining blood.
@@ -17,7 +17,7 @@ Vampire's powers all come from blood magic. In essence, it's similar to the Cult Drain Blood - The most basic power a vampire needs. Feeding. Your victim will be unable to resist from the moment you've sunk your fangs into them, and will not remember anything about the encounter, beyond having a pleasant interaction with your character. For every 10 points of blood gained, you drain roughly twice that from your victim. While draining blood, you also sate the Veil's desires, and thus lower your frenzy counter.
Blood Heal - Uses the blood of your victims to heal you. You must not move or be interrupted in any other way while doing this act of magic. Eventually, all damage will be healed, including broken bones and damaged organs.
Glare - An area of effect stun ability. Knocks out everyone not wearing proper eyeprotection within a 2 tile radius.
-Hypnotise - A targeted stun ability. Requires that you and your target remain stationary for a short amount of time. The stun effect lasts longer than that applied by Glare.
+Hypnotise - A targeted stun ability. Requires that you and your target remain stationary for a short amount of time. In addition to the stun effects lasting longer than that of Glare's, the target of Hypnotise is also rendered unable to speak for a short amount of time.
Presence - When toggled and activated, you begin emitting a positive influence towards other characters. Other players within sight range, if influencable through blood magic, will see messages encouraging them to be warmer and more receptive towards your character than they normally would be.
Veil Step - Activated by right clicking on any tile in the game. You jump to that tile, provided that it's covered in shadows to some degree. If you're a vampire that's gained full power, you will also take anyone you're grabbing along with you.
Dominate - Activation mechanics are the same as hypnotise: both you and your target need to remain stationary and undisturbed for a short amount of time. Once you succeed in activating it, you get to issue a command to your target. These commands have to be accomplishable in the short term future. For example, you can ask someone to open the doors to the armoury, but you cannot ask someone to remain as your ally forever. A vampire having reached his full potential can dominate a victim instantly.