Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
c1569cc
Базовый вурдалак
Kush1Push1 Apr 20, 2025
2f766be
Начальный перевод, быстрый фикс
Kush1Push1 Apr 20, 2025
31504e2
Перевод
Kush1Push1 Apr 20, 2025
a9761fe
Апдейт
Kush1Push1 Apr 20, 2025
8c8c164
QOL для вурдалака
Kush1Push1 Apr 20, 2025
890ff55
Корректное удаление статуса стазиса
Kush1Push1 Apr 20, 2025
b69de0c
Merge branch 'main' of https://github.com/BlueMoon-Labs/Redmoon-Keep …
Kush1Push1 Apr 21, 2025
fcc94a1
Ослабляем реген вампира, улучшаем его метапрогрессию
Kush1Push1 Apr 21, 2025
8b9f9db
Минорные фиксы
Kush1Push1 Apr 24, 2025
344a655
Merge branch 'BlueMoon-Labs:main' into vurdalak
Kush1Push1 Apr 29, 2025
cd567f1
Апдейт вурдалака
Kush1Push1 Apr 29, 2025
e14474b
Чуть не забыл!
Kush1Push1 Apr 29, 2025
f82e332
Убираем сломанный звук ходьбы
Kush1Push1 Apr 29, 2025
5194120
Merge branch 'BlueMoon-Labs:main' into vurdalak
Kush1Push1 Apr 30, 2025
847ff88
Исправление способности говорить
Kush1Push1 Apr 30, 2025
f66eda3
Апдейт вурдалакича
Kush1Push1 Apr 30, 2025
e6404b2
Merge branch 'BlueMoon-Labs:main' into vurdalak
Kush1Push1 May 3, 2025
a0053ea
Исправлено, что вампиры блюю при попытке соснуть крови
Kush1Push1 May 3, 2025
f81e3a2
Вурдалак не спавнится, если менее 30 игроков.
Kush1Push1 May 5, 2025
0c34ecb
Merge branch 'main' of https://github.com/Kush1Push1/Redmoon-Keep int…
Kush1Push1 May 13, 2025
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
1 change: 1 addition & 0 deletions code/__DEFINES/role_bans.dm
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
ROLE_SYNDICATE,\
ROLE_MANIAC,\
ROLE_WEREWOLF,\
ROLE_VURDALAK,\
ROLE_VAMPIRE,\
ROLE_NBEAST,\
ROLE_BANDIT,\
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/role_preferences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#define ROLE_MANIAC "Maniac"
#define ROLE_WEREWOLF "Werewolf"
#define ROLE_VAMPIRE "Vampire"
#define ROLE_VURDALAK "Vurdalak"
#define ROLE_NBEAST "Vampire Lord"
#define ROLE_BANDIT "Bandit"
#define ROLE_DELF "Dark Elf"
Expand Down Expand Up @@ -64,6 +65,7 @@ GLOBAL_LIST_INIT(special_roles_rogue, list(
ROLE_BANDIT = /datum/antagonist/bandit,
ROLE_ASPIRANT = /datum/antagonist/aspirant,
ROLE_WEREWOLF = /datum/antagonist/werewolf,
ROLE_VURDALAK = /datum/antagonist/vurdalak,
ROLE_ZIZOIDCULTIST = /datum/antagonist/zizocultist,
ROLE_NBEAST = /datum/antagonist/vampirelord,
ROLE_LICH = /datum/antagonist/lich
Expand Down
3 changes: 2 additions & 1 deletion code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,8 @@ GLOBAL_LIST_INIT(roguetraits, list(
TRAIT_SHARPER_BLADES = span_info("My weapons lose their sharpness slower."), // REDMOON ADD
TRAIT_BLACKLEG = span_info("I can cheat by rigging coin and dice, and peek at cards."), // REDMOON ADD
TRAIT_INQUISITION = span_info("I am a member of the Inquisition. I can easily identify others of my cadre at a glance."), // REDMOON ADD
TRAIT_BARDIC_TRAINING = "Xylixian inspiration grants my songs boons and ailments.",
TRAIT_BARDIC_TRAINING = "Xylixian inspiration grants my songs boons and ailments.", // REDMOON ADD
TRAIT_GROUNDSLEEPER = span_info("I can sleep on floor or even bare soil with ease."), // REDMOON ADD
TRAIT_STUDENT = span_info("The scholar has taught me new skills!"),
TRAIT_DARKLING = span_info("I am a creature of the dark and am sensitive to the light. The hateful sun is especially harsh on my eyes, and I prefer to sleep during the dae."),
TRAIT_BOG_TREKKING = "Expert in navigating these lands.",
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions code/__REDFINES/traits.dm → code/___REDFINES/traits.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#define TRAIT_INQUISITION "Member of the Inquisition"
#define TRAIT_BARDIC_TRAINING "Bardic Training"
#define TRAIT_GROUNDSLEEPER "Ground Sleeper"
#define TRAIT_SOFTHEARTED "softhearted" //no bad mood from dismembering or seeing this
#define BODYTYPE_FEMALE_PLUMP "female_plump"
#define TRAIT_EORA "Eora"
1 change: 1 addition & 0 deletions code/_globalvars/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_SEEPRICES" = TRAIT_SEEPRICES,
"Bardic Training" = TRAIT_BARDIC_TRAINING, // REDMOON ADD
"Blackleg" = TRAIT_BLACKLEG, // REDMOON ADD
"TRAIT_GROUNDSLEEPER" = TRAIT_GROUNDSLEEPER, // REDMOON ADD
"TRAIT_STUDENT" = TRAIT_STUDENT,
"TRAIT_BOG_TREKKING" = TRAIT_BOG_TREKKING,
"TRAIT_DEATHBYSNUSNU" = TRAIT_DEATHBYSNUSNU,
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/hud/screen_objects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -755,7 +755,7 @@
var/mob/living/carbon/human/H = hud.mymob
if(H.mind && H.mind.antag_datums)
for(var/datum/antagonist/D in H.mind.antag_datums)
if(istype(D, /datum/antagonist/vampirelord) || istype(D, /datum/antagonist/vampire) || istype(D, /datum/antagonist/bandit) || istype(D, /datum/antagonist/lich))
if(istype(D, /datum/antagonist/vampirelord) || istype(D, /datum/antagonist/vampire) || istype(D, /datum/antagonist/bandit) || istype(D, /datum/antagonist/lich) || istype(D, /datum/antagonist/vurdalak))
qdel(src)
return
if(H.advsetup)
Expand Down
5 changes: 5 additions & 0 deletions code/_onclick/other_mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,11 @@
caused_wound?.werewolf_infect_attempt()
if(prob(60))
user.werewolf_feed(src)
if(user.mind.has_antag_datum(/datum/antagonist/vurdalak))
if(prob(20))
visible_message(span_danger("[user] откусывает кусок от [src]!"), \
span_userdanger("ОНО ЕСТ МЕНЯ ЖИВЬЁМ!!"))
user.vurdalak_feed(src)
// both player and npc deadites can infect
if(user.mind.has_antag_datum(/datum/antagonist/zombie) || istype(user, /mob/living/carbon/human/species/deadite))
var/datum/antagonist/zombie/existing_zomble = mind?.has_antag_datum(/datum/antagonist/zombie)
Expand Down
2 changes: 1 addition & 1 deletion code/datums/character_flaw/addiction.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
return
if(user.mind.antag_datums)
for(var/datum/antagonist/D in user.mind.antag_datums)
if(istype(D, /datum/antagonist/vampirelord) || istype(D, /datum/antagonist/werewolf) || istype(D, /datum/antagonist/skeleton) || istype(D, /datum/antagonist/zombie) || istype(D, /datum/antagonist/lich))
if(istype(D, /datum/antagonist/vampirelord) || istype(D, /datum/antagonist/werewolf) || istype(D, /datum/antagonist/skeleton) || istype(D, /datum/antagonist/zombie) || istype(D, /datum/antagonist/lich) || istype(D, /datum/antagonist/vurdalak))
return
var/mob/living/carbon/human/H = user
var/oldsated = sated
Expand Down
20 changes: 17 additions & 3 deletions code/game/gamemodes/roguetown/roguetown.dm
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@ var/global/list/roguegamemodes = list("Rebellion", "Vampires and Werewolves", "N
return TRUE
if(SSticker.manualmodes)
forcedmodes |= SSticker.manualmodes

if(num_players() < 20)
return TRUE // Убираем рол антагонистов, если низкий онлайн
if(forcedmodes.len)
message_admins("Manual gamemodes selected.")
for(var/G in forcedmodes)
Expand Down Expand Up @@ -162,7 +163,7 @@ var/global/list/roguegamemodes = list("Rebellion", "Vampires and Werewolves", "N
log_game("Major Antagonist: None")
return TRUE

if(num_players() >= 64)
if(num_players() >= 50)
var/major_roll_highpop = pick(1,2,3,4)
switch(major_roll_highpop)
if(1)
Expand All @@ -178,7 +179,7 @@ var/global/list/roguegamemodes = list("Rebellion", "Vampires and Werewolves", "N
if(4)
pick_lich()
log_game("Major Antagonist: Lich")
else if(num_players() >= 52)
else if(num_players() >= 40)
var/major_roll_midpop = pick(1,2,3)
switch(major_roll_midpop)
if(1)
Expand Down Expand Up @@ -208,6 +209,11 @@ var/global/list/roguegamemodes = list("Rebellion", "Vampires and Werewolves", "N
pick_bandits()
log_game("Minor Antagonist: Bandit")

if(num_players() >= 30)
if(prob(100))
pick_vurdalaks()
log_game("Minor Antagonist: Vurdalak")

if(prob(45))
pick_aspirants()
log_game("Minor Antagonist: Aspirant")
Expand Down Expand Up @@ -691,6 +697,14 @@ var/global/list/roguegamemodes = list("Rebellion", "Vampires and Werewolves", "N
rebelguy.add_antag_datum(new_antag)
GLOB.pre_setup_antags -= rebelguy

///////////////// VURDALAK
for(var/datum/mind/vurdalak in pre_vurdalaks)
var/datum/antagonist/new_antag = new /datum/antagonist/vurdalak()
//addtimer(CALLBACK(werewolf, TYPE_PROC_REF(/datum/mind, add_antag_datum), new_antag), rand(10,100))
vurdalak.add_antag_datum(new_antag)
GLOB.pre_setup_antags -= vurdalak
vurdalaks += vurdalak

..()
//We're not actually ready until all traitors are assigned.
gamemode_ready = FALSE
Expand Down
2 changes: 2 additions & 0 deletions code/modules/antagonists/roguetown/roleobjs/skeleton.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
return span_boldnotice("Another deadite.")
if(istype(examined_datum, /datum/antagonist/skeleton))
return span_boldnotice("Another deadite. My ally.")
if(istype(examined_datum, /datum/antagonist/vurdalak))
return span_boldwarning("Another deadite... May be hostile. Better not provoke.")

/datum/antagonist/skeleton/on_gain()

Expand Down
2 changes: 2 additions & 0 deletions code/modules/antagonists/roguetown/villain/vampirelord.dm
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ GLOBAL_LIST_EMPTY(vampire_objects)
return span_boldnotice("Another deadite.")
if(istype(examined_datum, /datum/antagonist/skeleton))
return span_boldnotice("Another deadite.")
if(istype(examined_datum, /datum/antagonist/vurdalak))
return span_boldwarning("Another deadite... A competitor for blood. Hunter of the terror bog.")

/datum/antagonist/vampirelord/apply_innate_effects(mob/living/mob_override)
var/mob/living/M = mob_override || owner.current
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,9 @@ var/sound_cooldown = 10 * 60 * 10 // cooldown in deciseconds (15 minutes)
if(target.mind.has_antag_datum(/datum/antagonist/vampirelord))
to_chat(src, span_warning("... What? Its an elder vampire!"))
return
if(target.mind.has_antag_datum(/datum/antagonist/vurdalak))
to_chat(src, span_warning("... What? Its an undead!"))
return
(!do_after(user, 7 SECONDS, target = target))
var/ramount = 20
var/rid = /datum/reagent/medicine/healthpot
Expand Down
2 changes: 2 additions & 0 deletions code/modules/antagonists/roguetown/villain/zomble.dm
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@
return span_boldnotice("Another deadite. [fellow_zombie.has_turned ? "My ally." : span_warning("Hasn't turned yet.")]")
if(istype(examined_datum, /datum/antagonist/skeleton))
return span_boldnotice("Another deadite.")
if(istype(examined_datum, /datum/antagonist/vurdalak))
return span_boldwarning("Another deadite. May be agressive...")

/datum/antagonist/zombie/on_gain()
var/mob/living/carbon/human/zombie = owner?.current
Expand Down
6 changes: 5 additions & 1 deletion code/modules/mob/living/carbon/human/examine.dm
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,8 @@
else
if(mind && mind.special_role == "Vampire Lord")
. += "<span class='userdanger'>A MONSTER!</span>"

else if(mind?.special_role == ROLE_VURDALAK)
. += span_userdanger("A MONSTER!")

var/commie_text
if(mind)
Expand All @@ -194,6 +195,9 @@
if(mind.special_role == "Vampire Lord")
. += span_userdanger("A MONSTER!")

if(mind.special_role == ROLE_VURDALAK)
. += span_userdanger("A MONSTER!")

if(mind.assigned_role == "Lunatic")
. += span_userdanger("LUNATIC!")

Expand Down
2 changes: 2 additions & 0 deletions code/modules/mob/living/carbon/human/human.dm
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,8 @@
if(VD)
if(statpanel("Stats"))
stat("Vitae:",VD.vitae)
if(skin_armor)
stat("Skin Armor Integrity:", skin_armor.obj_integrity)
if((mind.assigned_role == "Confessor") || (mind.assigned_role == "Inquisitor"))
if(statpanel("Status"))
stat("Confessions sent: [GLOB.confessors.len]")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
TRAIT_HARDDISMEMBER, //Decapping Volfs causes them to bug out, badly, and need admin intervention to fix. Bandaid fix.
TRAIT_PIERCEIMMUNE, //Prevents weapon dusting and caltrop effects due to them transforming when killed/stepping on shards.
TRAIT_BOG_TREKKING,
TRAIT_GROUNDSLEEPER, // REDMOON ADD
TRAIT_IGNORESLOWDOWN
)
inherent_biotypes = MOB_HUMANOID
Expand Down
2 changes: 2 additions & 0 deletions code/modules/mob/living/carbon/life.dm
Original file line number Diff line number Diff line change
Expand Up @@ -727,5 +727,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
recovery_amt = max_energy * 0.005 // 7.5 минут на полный отдых за сон на земле
else
recovery_amt = max_energy * 0.0035 // REDMOON ADD END - 10 минут на полный отдых за лежание на земле без сна, чтобы был смысл искать кровати
if(HAS_TRAIT(src, TRAIT_GROUNDSLEEPER))
recovery_amt = max_energy * 0.01 // 3 минуты на полный отдых за сон на земле

energy_add(recovery_amt)
13 changes: 13 additions & 0 deletions code/modules/mob/living/grabbing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -536,6 +536,7 @@

if(user.mind && C.mind)
var/datum/antagonist/vampirelord/VDrinker = user.mind.has_antag_datum(/datum/antagonist/vampirelord)
var/datum/antagonist/vurdalak/vurdalak_drinker = user.mind.has_antag_datum(/datum/antagonist/vurdalak)
var/datum/antagonist/vampirelord/VVictim = C.mind.has_antag_datum(/datum/antagonist/vampirelord)
var/zomwerewolf = C.mind.has_antag_datum(/datum/antagonist/werewolf)
if(!zomwerewolf)
Expand Down Expand Up @@ -565,6 +566,16 @@
VDrinker.handle_vitae(500)
else
to_chat(user, span_warning("No more vitae from this blood..."))
else if(vurdalak_drinker)
if(C.vitae_bank > 500)
C.blood_volume = max(C.blood_volume-45, 0)
C.vitae_bank -= 1500
if(!C.vitae_bank)
if(!(C.real_name in vurdalak_drinker.unique_victims))
vurdalak_drinker.unique_victims += C.real_name
vurdalak_drinker.handle_power_up()
else
to_chat(user, span_warning("No more vitae from this blood..."))
else
if(VVictim)
to_chat(user, "<span class='notice'>A strange, sweet taste tickles my throat.</span>")
Expand All @@ -581,6 +592,8 @@
VDrinker.handle_vitae(300, 300)
else
VDrinker.handle_vitae(300)
else if(user.mind.has_antag_datum(/datum/antagonist/vurdalak))
to_chat(user, span_warning("I feel no lifeforce in this blood... It's useless."))

C.blood_volume = max(C.blood_volume-5, 0)
C.handle_blood()
Expand Down
3 changes: 3 additions & 0 deletions code/modules/mob/mob_movement.dm
Original file line number Diff line number Diff line change
Expand Up @@ -656,6 +656,9 @@
return
if(L.energy <= 0)
return
if(HAS_TRAIT(L, TRAIT_NORUN))
to_chat(L, span_warning("My joints have decayed too much for running!"))
return
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(!H.check_armor_skill() || H.legcuffed)
Expand Down
5 changes: 5 additions & 0 deletions code/modules/roguetown/roguejobs/gravedigger/hole.dm
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@
faildirt = 3
icon_state = "grave"

/obj/structure/closet/dirthole/grave/Initialize()
..()
if(is_valid_hunting_area(get_area(src)))
GLOB.vurdalak_spawn_locations += get_turf(src)

/obj/structure/closet/dirthole/closed
desc = "A mound of dirt with something below."
stage = 4
Expand Down
2 changes: 1 addition & 1 deletion code/modules/spells/roguetown/acolyte/pestra.dm
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@
revert_cast()
return FALSE
// If, for whatever reason, someone manages to capture a vampire with (somehow) rot??? This prevents them from losing their undead biotype.
if(target.mind?.has_antag_datum(/datum/antagonist/vampire) || target.mind?.has_antag_datum(/datum/antagonist/vampire/lesser) || target.mind?.has_antag_datum(/datum/antagonist/vampirelord))
if(target.mind?.has_antag_datum(/datum/antagonist/vampire) || target.mind?.has_antag_datum(/datum/antagonist/vampire/lesser) || target.mind?.has_antag_datum(/datum/antagonist/vampirelord) || target.mind?.has_antag_datum(/datum/antagonist/vurdalak))
to_chat(user, span_warning("It's of an incurable evil, I can't."))
revert_cast()
return FALSE
Expand Down
2 changes: 1 addition & 1 deletion code/modules/spells/roguetown/acolyte/sawbones.dm
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@
return FALSE

// If, for whatever reason, someone manages to capture a vampire with (somehow) rot??? This prevents them from losing their undead biotype.
if(target.mind?.has_antag_datum(/datum/antagonist/vampire) || target.mind?.has_antag_datum(/datum/antagonist/vampire/lesser) || target.mind?.has_antag_datum(/datum/antagonist/vampirelord))
if(target.mind?.has_antag_datum(/datum/antagonist/vampire) || target.mind?.has_antag_datum(/datum/antagonist/vampire/lesser) || target.mind?.has_antag_datum(/datum/antagonist/vampirelord) || target.mind?.has_antag_datum(/datum/antagonist/vurdalak))
to_chat(user, span_warning("It's of an incurable evil, I can't."))
revert_cast()
return FALSE
Expand Down
Loading