Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[PORT] Removes vampire race, replaces them with vampire antagonist (bloodsuckers) #12092

Open
wants to merge 36 commits into
base: master
Choose a base branch
from

Conversation

mrmanlikesbt
Copy link
Contributor

@mrmanlikesbt mrmanlikesbt commented Dec 27, 2024

About The Pull Request

Vampires

vampire

Vampires are team-based antagonists with roughly the same power level as changelings which constantly lose blood and have to feed off of humans to replenish it. They must create a lair and are incentivized to vassalize the crew. They have night vision and heat vision, they are immune to addictions, and they punch harder.

While a vampire is not in the Masquerade they have a set of inherent traits

  • Their heart does not beat
  • They don't breathe
  • They are sleep immune
  • They are immune to the cold
  • They are immune to radiation
  • They do not fall unconscious in crit
  • They can't taste food
  • They can't get sick
  • They can't take toxin damage

Entering a Frenzy and Humanity

frenzy

When a vampire's blood dips below a certain point, they will enter a frenzy. The point at which a vampire enters a frenzy by default is 25. This is increased by how much humanity you have lost. Humanity is lost when you feed off of a dead person.

When a vampire enters a frenzy they become deaf and mute, their screen turns blood red, they lose access to all powers except Feed and Trespass, and they can instantly aggressively grab people. If you are part of the Malkavian clan you become stun immune as well.

The Masquerade

masquerade_broken

Vampires have one rule, don't get noticed feeding. If a non-vampire or non-vassalized person sees you feeding, then you will receive a Masquerade Infraction. If you receive 3 infractions you will have broken the masquerade and are now open to extermination by all vampires, members of the Malkavian clan gain an objective to slay you, and all other vampires can now steal your vassals.

Sol

sol

Sol is an event that happens every 10 minutes and lasts 1 minute. When Sol arrives, a vampire must be in either a coffin or a closet, otherwise they risk Final Death. During Sol, vampires enter Torpor where they will heal and sleep away the rest of Sol. At the end of Sol, vampires are given a rank to spend on a new power, or whatever gimmick the clan has.

Torpor

torpor

Torpor is triggered in one of two ways: a vampire dies, or Sol puts them to sleep while in a coffin.
When a vampire enters Torpor, they fall asleep and are healed (assuming the masquerade power is not active). If a vampire enters torpor because they died, they will eventually be resurrected.

Final Death

final_death

When Final Death is triggered (almost) all vassals are released from the vampire's control, and the vampire is either gibbed or dusted. Final Death can be triggered in one of four ways.

  • You are gibbed
  • You are dusted
  • You take 250% of your health in burn damage
  • You are staked while unconscious

Clans

caitiff

Vampires are part of a clan of their choosing, by default, they are in the Caitiff clan. This clan has no specific positives or negatives to it

Malkavian

malkavian

  • Members of the Malkavian clan gain hallucinations upon joining and a special brain trauma that allows them to see Phobetor Tears and travel through them, granted nobody is watching, they gain X-RAY eyes, and when they enter a frenzy they are stun immune. When a member of the Malkavian clan succumbs to Final Death, they are turned into a soulstone instead of being round-removed.
  • The Malkavian clan gains the objective to slay anyone who has broken the Masquerade.
  • The Malkavian clan's favorite vassal gains hallucinations and the Phobetor Trauma.

Nosferatu

nosferatu

  • Members of the Nosferatu clan are easily recognized as vampires, they lose the Masquerade and Veil ability while also gaining a bad back and becoming disfigured, their strength is the ability to vent-crawl.
  • The Nosferatu clan's objective is to steal the Archive of the Kindred.
  • The Nosferatu clan's favorite vassal also becomes disfigured and can vent-crawl while naked.

Tremere

tremere

  • Members of the Tremere clan will burn in the chapel. Instead of having access to the same powers every other clan has, Tremere members are given three new clan-specific powers that they can level up (see the powers section). Tremere members gain ranks by vassalizing people instead of how they are normally obtained.
  • The Tremere clan's objective is to upgrade one of their powers to its maximum level.
  • The Tremere clan's favorite vassal gains the ability to transform into a bat at will.

Ventrue

ventrue

  • Members of the Ventrue clan can only level up 3 times, any further ranks are used on their favorite vassal, they can only drink from people with a mind and refuse to drink from mice.
  • The Ventrue clan's objective is to level up your favorite vassal until they become a vampire
  • The Ventrue clan's favorite vassal is leveled up by their master until they eventually become a vampire

Vassals

vassal

A vassal is a crewmember enslaved to a vampire. Besides the default type, there are three types of vassals. To create a vassal, use a persuasion rack. Vassals are also given two powers to aid them.

Sanguine Recuperation

power_recuperate
BLOOD DRAIN: 1.5

Use this power to heal your wounds at the cost of your stamina and blood from both you and your master.

Distress

power_distress
BLOOD COST: 10

Use this power and your master will instantly be alerted to your location.

The Favorite Vassal

favorite_vassal
The favorite vassal is different relative to the clan their master is in.

Malkavian - You now suffer hallucinations and gain the ability to use Phobetor Tears
Nosferatu - You are now disfigured and gain the ability to vent-crawl while naked
Tremere - You gain the ability to transform into a bat at will
Ventrue - Your master can spend their ranks to give you powers and turn you into a vampire

The Revenge Vassal

revenge_vassal
When a revenge vassal's master succumbs to Final Death they are not deconverted. Instead, the vassal gains the objective to avenge their vampire and they gain all of their master's former powers, alongside three new ones.

Create Blood

power_bleed
BLOOD COST: 150

Use this power with a blood bag in hand to fill it with vampiric blood.

Check Vassals

power_mez
BLOOD COST: 10

Use this power to check the health and location of all vassals brought back into the fold.

Reconvert Ex-Vassal

power_torpor
BLOOD COST: 50

Use this power while grabbing an Ex-Vassal to bring them back into the fold.

The Ex-Vassal

ex_vassal
When a vassal's master succumbs to Final Death they lose their allegiance to their former master and are free... Unless the vampire had a revenge vassal and they are brought back into the fold. When an Ex-Vassal is brought back into the fold they must drink vampiric blood once every 10 minutes or they will be permanently deconverted.

Your Crypt

securecoffin

Every proper vampire needs a crypt, whether it be in maintenance or the captain's bathroom, this is where you will get up to the majority of your evil deeds. A crypt may be claimed by dragging a coffin into a room that hasn't already been claimed by another vampire and sleeping in it. After claiming your crypt you will gain access to three new structures which you can make in the crafting menu.

The Persuasion Rack

vassalrack

Persuasion racks are used to convert crewmembers into your vassals. To use the rack, you must first find a "volunteer" and drag them onto the rack. After this, hit the rack with an empty hand (while not on help intent) and you will start torturing them. If the person you are torturing has any of the following 4 traits, they are unconvertable.

  • They are a changeling, cultist, or vampire

  • They are a vassal AND their master has not broken the masquerade

  • They are asleep

  • You have reached your max vassals

  • They are mindshielded or an antagonist and do not want vassilization. (They will be given a popup asking whether or not they want to be vassilized.)

If you have a tool in your off-hand this will decrease the amount of time it takes to torture someone, generally the sharper and more damage it deals, the better. After torturing your new friend for a total of three times they will become your completely loyal vassal.

When finished, you can unbuckle your new vassal by clicking on the rack while on help intent, or you can turn them into a special vassal by clicking the rack while not on help intent.

The Candelabrum

candelabrum

The candelabrum is a structure that can be turned on and off by vampires and vassals. If you view the candelabrum while it's lit you are given a mood-debuff and will experience hallucinations, you are not affected by this if you are a vampire, vassal, or curator.

The Blood Throne

bloodthrone

The blood throne allows vampires to communicate with their vassals telepathically via the vampire speaking out loud. If a non-vampire attempts to sit on the throne they will be paralyzed for 10 seconds.

Things to note

  • Bloodsuckers are originally from fulpstation, however, this pr uses a lot of the code from monkestation's original port
  • Monster hunters are NOT in this port. The curator replaces all relevant interactions, sort of giving them the same importance as a chaplain.
  • Due to how awful the hud system is and my not wanting to refactor large parts of it, vampires cannot see each others' HUDS. Instead, every vampire team is assigned one antag hud to which all team members are added. Hopefully, this can be changed when the following PR is merged.
  • [PORT] Follows up TG's atom_hud system #10897

Why It's Good For The Game

bloodsucker.antag.mp4

Testing Photographs and Procedure

Screenshots&Videos

Put screenshots and videos here with an empty line between the screenshots and the <details> tags.

Changelog

🆑 mrmanlikesbt, TheSwain, JohnFulpWillard, absolucy
add: new antagonist, vampire (bloodsuckers)
del: vampire race
imageadd: radial menu yes and no icon
tweak: you can drink from blood bags now
code: new trait helper for adding a list of traits to a mob
/:cl:

base bloodsucker functionality
fixed veil power not changing identity
fixed gohome power
fixed sol not putting bloodsuckers to sleep
fixed some malkavian clan things
fixed new coffins not opening
fixed the masquerade status alert not having a background
fixed runtime errors
fixed lunge ability
slightly adjusted the persuasion rack's bloodsucker description
the persuasion rack can no longer be walked over when secured
securing/unsecuring a bloodsucker building plays the ratchet sfx
removed the constant moodlet for bloodsuckers
bloodsuckers cant use the momento mori anymore
using targeted powers changes your mouse icon
lunging onto a dead person removes all their chest organs
Copy link

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot added Sprites Sound TGUI-Changes Contains changes to TGUI. Make sure its up to date with TGUI 4.0 labels Dec 27, 2024
fixes two balloon alerts being shown when trying to vassalize a mindless mob
fixes malkavians not getting a new objective when another bloodsucker breaks the masquerade
fixed phobetor tears showing up as the wrong icon
non-humans can no longer be vassalized (sorry animal intelligence players)
renames the finaldeath proc
nosferatu clan gives badback
bloodsucker teams are now actually initialized
malkavians can use phobetor tears if being watched by bloodsuckers or vassals
cleaned up a bit of code
@Absolucy
Copy link
Contributor

please do not port the code 1:1

bloodsucker code is infamously HORRIBLE and would be much better off with extensive refactors/rewrites

@mrmanlikesbt
Copy link
Contributor Author

fair enough

various code cleanup and fix prs (all of which by absolucy)
i rewrote the vassal conversion code
@mrmanlikesbt
Copy link
Contributor Author

@itsmeow how are antagonist preference icons decided? I've been trying to figure this out for a few days, but haven't been able to figure it out. The code below always has the traitor icon.

/datum/role_preference/antagonist/bloodsucker
	name = "Bloodsucker"
	description = "..."
	antag_datum = /datum/antagonist/bloodsucker
	preview_outfit = /datum/outfit/bloodsucker

/datum/outfit/bloodsucker
	name = "Bloodsucker outfit (Preview only)"
	suit = /obj/item/clothing/suit/costume/dracula

Screenshot 2024-12-31 033355

I've also tried to change other antagonist preferences' preview outfits, but I couldn't even get that to work. This led me to believe that maybe they're compiled with tgui, so re-compiled it to no avail. After that I wasted my time by going down some other rabbit holes that lead no where.

@itsmeow
Copy link
Member

itsmeow commented Dec 31, 2024

@mrmanlikesbt
Debug -> Regenerate Asset Cache

@TsunamiAnt
Copy link
Contributor

why is it bloodsucker and not vampire anyhow. Honestly ruins the vibe a bit.

@mrmanlikesbt
Copy link
Contributor Author

There is a vampire race and bloodsucker antagonist, I don't want to cause confusion between the two. Or we can just delete the vampire race and rename bloodsuckers to vampires.

@TsunamiAnt
Copy link
Contributor

Just delete vampires and rename 'em. Our vamps were always just a Halloween gimmick anyhow

@mrmanlikesbt
Copy link
Contributor Author

Just delete vampires and rename 'em. Our vamps were always just a Halloween gimmick anyhow

@PowerfulBacon ?

@mrmanlikesbt mrmanlikesbt changed the title [PORT] Bloodsuckers from monkestation [PORT] Bloodsuckers Jan 3, 2025
@PowerfulBacon
Copy link
Member

I don't really care what happens to the halloween races

@mrmanlikesbt mrmanlikesbt marked this pull request as ready for review January 11, 2025 05:15
<Box
as="img"
height="15rem"
src={resolveAsset(`bloodsucker.${selectedPower.power_icon}.png`)}
Copy link
Contributor

Choose a reason for hiding this comment

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

these are just the icons used by the actions, right?
you could totally just implement a spritesheet using subtypesof with the actions.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yes. I would've done that but I've got no idea how tgui works so idk how I would go about implementing that

@mrmanlikesbt mrmanlikesbt changed the title [PORT] Bloodsuckers [PORT] Removes vampire race, replaces them with vampire antagonist (bloodsuckers) Jan 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants