Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
ad4e916
e (#14639)
Bibby0110 Jun 28, 2022
ba330c0
Merge remote-tracking branch 'upstream/mastеr'
Marmio64 Jan 6, 2023
b5287d5
Merge remote-tracking branch 'upstream/master'
Marmio64 Feb 16, 2023
c7fbdb3
Merge branch 'master' into hecatabloodsucker
Marmio64 Mar 6, 2023
5843681
Squashed commit of the following:
Marmio64 Mar 6, 2023
3d61345
initial framework
Marmio64 Mar 7, 2023
bd92cc3
morework
Marmio64 Mar 13, 2023
204ad6a
fix
Marmio64 Apr 13, 2023
9498965
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 Apr 13, 2023
d4da80f
more hecata work
Marmio64 Apr 13, 2023
d470f41
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 Apr 14, 2023
ee979f8
spritechanges
Marmio64 Apr 16, 2023
a6da569
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 Apr 16, 2023
c623d6f
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 Apr 17, 2023
200b983
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 Apr 18, 2023
d23ab0f
not needed
Marmio64 Apr 22, 2023
dc8b9ef
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 Apr 22, 2023
0a17c2b
Merge branch 'master' of https://github.com/Marmio64/Yogstation
Marmio64 Apr 23, 2023
419ec54
Merge remote-tracking branch 'upstream/master'
Marmio64 Apr 23, 2023
0993281
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 Apr 30, 2023
34e0d54
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 Apr 30, 2023
1a21421
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 May 6, 2023
4fb08d2
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 May 7, 2023
fe74612
Fix changelog
Marmio64 May 9, 2023
a56dd71
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 May 9, 2023
12cd1ff
try fix changelog again
Marmio64 May 9, 2023
de6f248
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 May 9, 2023
6061be7
proc ref
Marmio64 May 9, 2023
db47165
another proc ref
Marmio64 May 9, 2023
ff4a51e
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 May 12, 2023
9b88673
turdis
Marmio64 May 12, 2023
0d83ba7
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 May 17, 2023
cae59d2
Merge branch 'master' of https://github.com/Marmio64/Yogstation
Marmio64 May 21, 2023
db04876
sure?
Marmio64 May 21, 2023
f594378
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 May 21, 2023
0da9703
Merge branch 'master' into hecatabloodsucker
Marmio64 May 21, 2023
34bb254
Merge remote-tracking branch 'upstream/master' into hecatabloodsucker
Marmio64 May 23, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 51 additions & 51 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,51 +1,51 @@
*.dmm eol=crlf
*.md eol=crlf
*.txt eol=crlf
*.html eol=crlf
#this breaks if its in crlf
code/__DEFINES/rust_g.dm eol=lf
## Enforce text mode and LF line breaks
*.bat text eol=lf
*.cjs text eol=lf
*.css text eol=lf
*.dm text eol=lf
*.dme text eol=lf
*.dmf text eol=lf
*.htm text eol=lf
*.html text eol=lf
*.js text eol=lf
*.json text eol=lf
*.jsx text eol=lf
*.md text eol=lf
*.ps1 text eol=lf
*.py text eol=lf
*.scss text eol=lf
*.sh text eol=lf
*.sql text eol=lf
*.svg text eol=lf
*.ts text eol=lf
*.tsx text eol=lf
*.txt text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
## Enforce binary mode
*.bmp binary
*.dll binary
*.dmb binary
*.exe binary
*.gif binary
*.jpg binary
*.png binary
*.so binary
# merger hooks, run tools/hooks/install.bat or install.sh to set up
*.dmm merge=dmm
*.dmi merge=dmi
# force changelog merging to use union
html/changelog.html merge=union

*.dmm eol=crlf
*.md eol=crlf
*.txt eol=crlf
*.html eol=crlf
#this breaks if its in crlf
code/__DEFINES/rust_g.dm eol=lf


## Enforce text mode and LF line breaks
*.bat text eol=lf
*.cjs text eol=lf
*.css text eol=lf
*.dm text eol=lf
*.dme text eol=lf
*.dmf text eol=lf
*.htm text eol=lf
*.html text eol=lf
*.js text eol=lf
*.json text eol=lf
*.jsx text eol=lf
*.md text eol=lf
*.ps1 text eol=lf
*.py text eol=lf
*.scss text eol=lf
*.sh text eol=lf
*.sql text eol=lf
*.svg text eol=lf
*.ts text eol=lf
*.tsx text eol=lf
*.txt text eol=lf
*.yaml text eol=lf
*.yml text eol=lf

## Enforce binary mode
*.bmp binary
*.dll binary
*.dmb binary
*.exe binary
*.gif binary
*.jpg binary
*.png binary
*.so binary


# merger hooks, run tools/hooks/install.bat or install.sh to set up
*.dmm merge=dmm
*.dmi merge=dmi

# force changelog merging to use union
html/changelog.html merge=union
5 changes: 4 additions & 1 deletion code/__DEFINES/bloodsuckers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
#define CLAN_GANGREL "Gangrel Clan"
#define CLAN_LASOMBRA "Lasombra Clan"
#define CLAN_TZIMISCE "Tzimisce Clan"
#define CLAN_HECATA "Hecata Clan"

#define TRIPLECHEST_MONSTER "Triple Chest (300 Blood)"
#define ARMMY_MONSTER "Armmy (100 Blood)"
Expand Down Expand Up @@ -70,6 +71,8 @@
#define HUNTER_CAN_BUY (1<<4)
/// This Power can be purchased by Tzimisce Bloodsuckers
#define TZIMISCE_CAN_BUY (1<<5)
/// This Power can be purchased by Hecata Bloodsuckers
#define HECATA_CAN_BUY (1<<6)

/// This Power is a Toggled Power
#define BP_AM_TOGGLE (1<<0)
Expand All @@ -82,4 +85,4 @@

// Signals

#define COMSIG_BLOODSUCKER_RANKS_SPENT
#define COMSIG_BLOODSUCKER_RANKS_SPENT
25 changes: 24 additions & 1 deletion code/modules/antagonists/bloodsuckers/bloodsucker_flaws.dm
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,16 @@
CLAN_GANGREL,
CLAN_LASOMBRA,
CLAN_TOREADOR,
CLAN_HECATA,
)
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, strange outcomes from being on frenzy, special power.\n\
Lasombra - Life in the shadows, very weak to fire but no brute damage, upgradable abilities through tasks.\n\
Toreador - More human then other bloodsucker, easily disguise among crew, but bound with morals."))
Toreador - More human then other bloodsucker, easily disguise among crew, but bound with morals.\n\
Hecata - Can raise the dead and summon wraiths, though incapable of silent feeding or benefitting from blood altars."))

var/answer = input("You have Ranked up far enough to remember your clan. Which clan are you part of?", "Your mind feels luxurious...") in options
if(!answer)
Expand Down Expand Up @@ -96,5 +98,26 @@
continue
masquarade_spell.bloodcost = 0
masquarade_spell.constant_bloodcost = 0 //Wow very cool code, good job
if(CLAN_HECATA)
my_clan = CLAN_HECATA
to_chat(owner, span_announce("You have Ranked up enough to learn: You are part of the Hecata Clan!\n\
* As part of the Hecata clan, you are an avid practioner of necromancy.\n\
* You are capable of raising the dead as zombies, making them into temporary vassals loyal to you. Dead vassals are instead permanently revived\n\
* You can also call for help from the beyond by summoning wraiths.\n\
* In addition, you can send messages to all your vassals no matter their location via Deathly Communion.\n\
* However, feeding on people causes them deep pain, making it impossible to feed silently.\n\
* You also are unable to use the blood altar in order to gain tasks for ranks.\n\
* Finally, your Favorite Vassal will transform into a zombie if they weren't one already, and gain the Spirit Call ability."))
BuyPower(new /datum/action/bloodsucker/targeted/hecata/necromancy)
BuyPower(new /datum/action/bloodsucker/hecata/spiritcall)
BuyPower(new /datum/action/bloodsucker/hecata/communion)
bloodsucker.faction |= "bloodhungry"
var/datum/objective/bloodsucker/necromance/hecata_objective = new
hecata_objective.owner = owner
objectives += hecata_objective
for(var/datum/action/bloodsucker/feed/feed_spell in powers)
if(!istype(feed_spell))
continue
feed_spell.suppressible = 0

owner.announce_objectives()
40 changes: 40 additions & 0 deletions code/modules/antagonists/bloodsuckers/bloodsucker_mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -262,3 +262,43 @@
else
new /obj/structure/bloodsucker/possessedarmor(src.loc)
qdel(src)


/mob/living/simple_animal/hostile/bloodsucker/wraith
name = "wraith"
real_name = "Wraith"
desc = "An angry, tormented spirit, which looks to let out it's wrath on whoever is nearby."
gender = PLURAL
icon_state = "wraith"
mob_biotypes = list(MOB_SPIRIT)
maxHealth = 30
health = 30
spacewalk = TRUE
healable = 0
speak_emote = list("hisses")
emote_hear = list("wails.","screeches.")
response_help = "puts their hand through"
response_disarm = "flails at"
response_harm = "punches"
speak_chance = 1
melee_damage_lower = 6
melee_damage_upper = 6
attacktext = "torments"
minbodytemp = 0
maxbodytemp = INFINITY
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
status_flags = 0
status_flags = CANPUSH
movement_type = FLYING

/mob/living/simple_animal/hostile/bloodsucker/wraith/Life()
. = ..()
if(!src)
return
if(src.stat != DEAD) //Wraith loses 1 health every 2 seconds, which means it will disperse after 60 seconds if not damaged.
adjustHealth(1)

/mob/living/simple_animal/hostile/bloodsucker/wraith/death()
deathmessage = "withers away into nothing."
qdel(src) //Del on death for some reason doesn't work, might be due to previous code preventing it for /bloodsucker mobs.
..()
23 changes: 23 additions & 0 deletions code/modules/antagonists/bloodsuckers/bloodsucker_objectives.dm
Original file line number Diff line number Diff line change
Expand Up @@ -427,3 +427,26 @@
if(bloodsuckerdatum && bloodsuckerdatum.vassals >= target_amount)
return TRUE
return FALSE


/// Necromance X amount of people
/datum/objective/bloodsucker/necromance
name = "necromance"

/datum/objective/bloodsucker/necromance/New()
target_amount = rand(6,8)
..()


/datum/objective/bloodsucker/necromance/update_explanation_text()
. = ..()
explanation_text = "Using Necromancy, revive people [target_amount] times."

/datum/objective/bloodsucker/necromance/check_completion()
var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.current.mind.has_antag_datum(/datum/antagonist/bloodsucker)
if(!bloodsuckerdatum)
return FALSE
if(bloodsuckerdatum.clanprogress >= target_amount)
return TRUE
return FALSE

8 changes: 8 additions & 0 deletions code/modules/antagonists/bloodsuckers/bloodsuckers_objects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -389,5 +389,13 @@
<b>Weakness</b>: Immensely weak to burn damage."
if(CLAN_TZIMISCE)
dat += "The page is covered in blood..."
if(CLAN_HECATA)
dat += "This Clan seems to enjoy experimenting with the <i>dead</i> and researching them.<br> \
They have a morbid curiosity of the dead, and may find it irrestible to not toy with them.<br> \
They are interested in finding corpses and trying to reverse their death, however successful they may be.<br> \
They have the ability to bring the dead back to a state of undeath and servitude to themself.<br> \
<b>Favorite Vassal</b>: Their Favorite Vassal will always be a zombie, and has similar spirit calling abilities. \
<b>Strength</b>: They can raise the dead and receive assistance from the beyond.<br> \
<b>Weakness</b>: Unable to silently feed on others, and their vassals tend to have obvious undead forms."

reader << browse("<meta charset=UTF-8><TT><I>Penned by [author].</I></TT> <BR>" + "[dat]", "window=book[window_size != null ? ";size=[window_size]" : ""]")
5 changes: 5 additions & 0 deletions code/modules/antagonists/bloodsuckers/powers/feed.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@
var/warning_full = FALSE
var/warning_target_bloodvol = 99999
var/was_alive = FALSE
//can you silently feed? Hecata can't.
var/suppressible = 1

/datum/action/bloodsucker/feed/CheckCanUse(mob/living/carbon/user)
. = ..()
Expand Down Expand Up @@ -86,6 +88,9 @@
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
if(suppressible == 0 && owner.grab_state <= GRAB_PASSIVE)
to_chat(owner, span_warning("Feeding as a Hecata would cause enough pain to the victim to make silent feeding like this impossible."))
return FALSE
return TRUE

/// If I'm not grabbing someone, find me someone nearby.
Expand Down
Loading