From 01afa03b0e50640e751ec094fc9cc8367179b79d Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Wed, 5 Aug 2026 09:48:40 -0700 Subject: [PATCH 01/16] Co-authored-by: dwinters99 --- code/__DEFINES/jobs.dm | 2 + code/__DEFINES/~darkpack/factions.dm | 3 +- code/__DEFINES/~darkpack/jobs.dm | 14 ++++--- .../~darkpack/lock_access_defines.dm | 2 + code/controllers/subsystem/job.dm | 27 ++++++++++++ .../modules/mob/dead/new_player/new_player.dm | 4 ++ .../modules/doors/code/keys/keys.dm | 20 +++++++-- .../modules/jobs/code/_job_assignment.dm | 18 ++++++++ modular_darkpack/modules/jobs/code/_jobs.dm | 5 ++- .../modules/jobs/code/anarchs/baron.dm | 4 +- .../modules/jobs/code/anarchs/bruiser.dm | 2 +- .../modules/jobs/code/anarchs/emissary.dm | 2 +- .../modules/jobs/code/anarchs/sweeper.dm | 2 +- .../modules/jobs/code/anarchs/tapster.dm | 9 ++-- .../code/camarilla/primogens/banu_haqim.dm | 2 +- .../jobs/code/camarilla/primogens/duskborn.dm | 42 +++++++++++++++++++ .../jobs/code/camarilla/primogens/lasombra.dm | 5 +-- .../code/camarilla/primogens/malkavian.dm | 5 +-- .../code/camarilla/primogens/nosferatu.dm | 5 +-- .../jobs/code/camarilla/primogens/toreador.dm | 5 +-- .../jobs/code/camarilla/primogens/ventrue.dm | 2 +- .../modules/jobs/code/clinic/director.dm | 19 ++++++--- .../modules/jobs/code/clinic/doctor.dm | 14 +++---- .../modules/jobs/code/giovanni/capo.dm | 2 +- .../modules/jobs/code/giovanni/la_famiglia.dm | 2 +- .../modules/jobs/code/giovanni/la_squadra.dm | 2 +- .../modules/jobs/code/tzimisce/bogatyr.dm | 4 +- .../modules/jobs/code/tzimisce/voivode.dm | 25 +++++++++-- .../modules/jobs/code/tzimisce/zadruga.dm | 2 +- modular_darkpack/modules/matrix/code/job.dm | 38 +++++++++++++---- .../npc/code/nonhuman/hostile/szlachta.dm | 2 +- modular_zapoc/modules/jobs/code/voivode.dm | 4 +- tgstation.dme | 1 + 33 files changed, 226 insertions(+), 69 deletions(-) create mode 100644 modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index c91f00eb2313..3e801a5b1e99 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -29,6 +29,8 @@ #define JOB_UNAVAILABLE_KINDRED_CLAN 15 #define JOB_UNAVAILABLE_FERA_TRIBE 16 #define JOB_UNAVAILABLE_FERA_AUSPICE 17 +#define JOB_UNAVAILABLE_CLAN_SLOTS 18 // APOC EDIT START +#define JOB_UNAVAILABLE_TRIBE_SLOTS 19 // APOC EDIT END // DARKPACK EDIT ADD END diff --git a/code/__DEFINES/~darkpack/factions.dm b/code/__DEFINES/~darkpack/factions.dm index edfa94b41185..1aa5ca1b91dc 100644 --- a/code/__DEFINES/~darkpack/factions.dm +++ b/code/__DEFINES/~darkpack/factions.dm @@ -4,7 +4,8 @@ #define FACTION_ANARCHS "anarchs" #define FACTION_CAMARILLA "camarilla" #define FACTION_SABBAT "sabbat" -#define FACTION_GIOVANNI "giovanni-faction" +#define FACTION_BLACK_SUITS "black-suits" +#define FACTION_VOIVODATE "seers-voivodate" // City faction #define FACTION_CITY "city" diff --git a/code/__DEFINES/~darkpack/jobs.dm b/code/__DEFINES/~darkpack/jobs.dm index dc0a0e29b8cb..7592da4c690f 100644 --- a/code/__DEFINES/~darkpack/jobs.dm +++ b/code/__DEFINES/~darkpack/jobs.dm @@ -35,7 +35,8 @@ //Anarch #define JOB_BARON "Baron" -#define JOB_TAPSTER "The Anarchy Rose Employee" // APOC EDIT CHANGE - JOBS +#define JOB_TAPSTER "Retinue" // APOC EDIT CHANGE - JOBS +#define JOB_REEVE "Reeve" // APOC EDIT CHANGE - JOBS #define JOB_BRUISER "Bruiser" #define JOB_EMISSARY "Emissary" #define JOB_SWEEPER "Sweeper" @@ -60,7 +61,7 @@ #define JOB_FEDERAL_INVESTIGATOR "Federal Investigator" //Clinic -#define JOB_CLINIC_DIRECTOR "Clinic Director" +#define JOB_CLINIC_DIRECTOR "Senior Doctor" #define JOB_DOCTOR "Doctor" //Church @@ -135,10 +136,11 @@ #define JOB_DISPLAY_ORDER_BARON 1 #define JOB_DISPLAY_ORDER_EMISSARY 2 -#define JOB_DISPLAY_ORDER_SWEEPER 3 -#define JOB_DISPLAY_ORDER_BRUISER 4 -#define JOB_DISPLAY_ORDER_LIAISON 5 -#define JOB_DISPLAY_ORDER_TAPSTER 6 +#define JOB_DISPLAY_ORDER_REEVE 3 +#define JOB_DISPLAY_ORDER_SWEEPER 4 +#define JOB_DISPLAY_ORDER_BRUISER 5 +#define JOB_DISPLAY_ORDER_LIAISON 6 +#define JOB_DISPLAY_ORDER_TAPSTER 7 #define JOB_DISPLAY_ORDER_REGENT 1 #define JOB_DISPLAY_ORDER_ARCHIVIST 2 diff --git a/code/__DEFINES/~darkpack/lock_access_defines.dm b/code/__DEFINES/~darkpack/lock_access_defines.dm index 12d6d17fdfdc..0d67c1da5926 100644 --- a/code/__DEFINES/~darkpack/lock_access_defines.dm +++ b/code/__DEFINES/~darkpack/lock_access_defines.dm @@ -4,6 +4,8 @@ #define LOCKACCESS_PRINCE "prince" #define LOCKACCESS_PRIMOGEN "primogen" +#define LOCKACCESS_DUSKBORN_PRIMOGEN "duskborn" + #define LOCKACCESS_BANU "banuhaqim" #define LOCKACCESS_BANU_PRIMOGEN "primBanu" diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 8dd28a795465..47608cd24eba 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -258,6 +258,33 @@ SUBSYSTEM_DEF(job) player.mind.set_assigned_role(job) unassigned -= player job.current_positions++ + // APOC EDIT CHANGE START + var/splat_pref = player.client.prefs.read_preference(/datum/preference/choiced/splats) + var/datum/splat/vampire/kindred/clan_pref = get_kindred_splat(player) + var/datum/splat/werewolf/tribe_pref = get_werewolf_splat(player) + var/player_splat_id + var/player_clan_id + var/player_tribe_id + if(ispath(splat_pref)) + var/datum/splat/player_splat = GLOB.splat_prototypes[splat_pref] + player_splat_id = player_splat.id + else + player_splat_id = splat_pref + + if(clan_pref) // APOC EDIT ADD START + player_clan_id = clan_pref.clan.id + else if(tribe_pref) + player_tribe_id = tribe_pref.name + if(job.splat_slots) + if(job.splat_slots[player_splat_id] > 0) + job.splat_slots[player_splat_id] = job.splat_slots[player_splat_id] - 1 + if(job.clan_slots) + if(job.clan_slots[player_clan_id] > 0) + job.clan_slots[player_clan_id] = job.clan_slots[player_clan_id] - 1 + if(job.tribe_slots) + if(job.tribe_slots[player_tribe_id] > 0) + job.tribe_slots[player_tribe_id] = job.tribe_slots[player_tribe_id] - 1 + // APOC EDIT CHANGE END return TRUE /datum/controller/subsystem/job/proc/find_occupation_candidates(datum/job/job, level = 0) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 0a556c850a7c..dfcbe7599110 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -153,6 +153,10 @@ return "Your character's tribe is incompatible for [jobtitle]." if(JOB_UNAVAILABLE_FERA_AUSPICE) return "Your character's auspice is incompatible for [jobtitle]." + if(JOB_UNAVAILABLE_CLAN_SLOTS) // APOC EDIT ADD START + return "[jobtitle] doesn't have any free clan slots for you." + if(JOB_UNAVAILABLE_TRIBE_SLOTS) + return "[jobtitle] doesn't have any free tribe slots for your tribe." // APOC EDIT ADD END // DARKPACK EDIT END return GENERIC_JOB_UNAVAILABLE_ERROR diff --git a/modular_darkpack/modules/doors/code/keys/keys.dm b/modular_darkpack/modules/doors/code/keys/keys.dm index 42c98e809e52..a9746d1f22f1 100644 --- a/modular_darkpack/modules/doors/code/keys/keys.dm +++ b/modular_darkpack/modules/doors/code/keys/keys.dm @@ -173,8 +173,7 @@ GLOBAL_LIST_INIT(city_door_lock_ids, list()) name = "dark keys" accesslocks = list( LOCKACCESS_LASOMBRA, - LOCKACCESS_KIASYD, - LOCKACCESS_CHURCH + LOCKACCESS_KIASYD ) color = "#290355" @@ -183,11 +182,9 @@ GLOBAL_LIST_INIT(city_door_lock_ids, list()) accesslocks = list( LOCKACCESS_LASOMBRA, LOCKACCESS_KIASYD, - LOCKACCESS_CHURCH, LOCKACCESS_PRIMOGEN, LOCKACCESS_PRIMOGEN_LASOMBRA, LOCKACCESS_JAZZ_CLUB, - LOCKACCESS_THEATRE, LOCKACCESS_CAMARILLA, LOCKACCESS_PRIMOGEN_LASOMBRA, ) @@ -218,6 +215,12 @@ GLOBAL_LIST_INIT(city_door_lock_ids, list()) ) color = "#8cc4ff" +/obj/item/vamp/keys/giovanni + name = "church keys" + accesslocks = list( + LOCKACCESS_CHURCH + ) + /obj/item/vamp/keys/malkav/primogen name = "really insane keys" accesslocks = list( @@ -248,6 +251,15 @@ GLOBAL_LIST_INIT(city_door_lock_ids, list()) ) color = "#06053d" +/obj/item/vamp/keys/duskborn/primogen + name = "brass keys" + accesslocks = list( + LOCKACCESS_JAZZ_CLUB, + LOCKACCESS_THEATRE, + LOCKACCESS_CAMARILLA, + LOCKACCESS_DUSKBORN_PRIMOGEN + ) + /obj/item/vamp/keys/banuhaqim/primogen name = "really just keys" // lol accesslocks = list( diff --git a/modular_darkpack/modules/jobs/code/_job_assignment.dm b/modular_darkpack/modules/jobs/code/_job_assignment.dm index 426fc90b6316..05544ce03618 100644 --- a/modular_darkpack/modules/jobs/code/_job_assignment.dm +++ b/modular_darkpack/modules/jobs/code/_job_assignment.dm @@ -18,13 +18,23 @@ /datum/controller/subsystem/job/proc/check_job_eligibility_darkpack(mob/dead/new_player/player, datum/job/possible_job, debug_prefix = "", add_job_to_log = FALSE) var/client/player_client = GET_CLIENT(player) var/splat_pref = player_client.prefs.read_preference(/datum/preference/choiced/splats) + var/datum/splat/clan_pref = get_kindred_splat(player) // APOC EDIT ADD START + var/datum/splat/tribe_pref = get_werewolf_splat(player) // APOC EDIT ADD END var/player_splat_id + var/player_clan_id // APOC EDIT ADD START + var/player_tribe_id // APOC EDIT ADD END + if(ispath(splat_pref)) var/datum/splat/player_splat = GLOB.splat_prototypes[splat_pref] player_splat_id = player_splat.id else player_splat_id = splat_pref + if(clan_pref) // APOC EDIT ADD START + player_clan_id = clan_pref.id + else if(tribe_pref) + player_tribe_id = tribe_pref.name + if(possible_job.allowed_splats && !(player_splat_id in possible_job.allowed_splats)) job_debug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_SPLAT, possible_job.title)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]") return JOB_UNAVAILABLE_SPLAT @@ -33,6 +43,14 @@ job_debug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_SPLAT_SLOTS, possible_job.title)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]") return JOB_UNAVAILABLE_SPLAT_SLOTS + if(possible_job.clan_slots && (possible_job.clan_slots[player_clan_id] == 0)) // APOC EDIT ADD START + job_debug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_CLAN_SLOTS, possible_job.title)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]") + return JOB_UNAVAILABLE_CLAN_SLOTS + + if(possible_job.tribe_slots && (possible_job.tribe_slots[player_tribe_id] == 0)) + job_debug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_TRIBE_SLOTS, possible_job.title)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]") + return JOB_UNAVAILABLE_TRIBE_SLOTS // APOC EDIT ADD END + /* if(possible_job.whitelisted) job_debug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_WHITELIST, possible_job.title)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]") diff --git a/modular_darkpack/modules/jobs/code/_jobs.dm b/modular_darkpack/modules/jobs/code/_jobs.dm index f31c0912168a..4bd3a76937e1 100644 --- a/modular_darkpack/modules/jobs/code/_jobs.dm +++ b/modular_darkpack/modules/jobs/code/_jobs.dm @@ -23,6 +23,8 @@ var/list/allowed_clans ///List of Clans that are disallowed to do this job. var/list/disallowed_clans + ///List of clans that are limited to a certain amount of that clan doing this job. e.g.: list(VAMPIRE_CLAN_TZIMISCE = 1, VAMPIRE_CLAN_MALKAVIAN = 0) // APOC EDIT ADD START + var/list/clan_slots // APOC EDIT ADD END // WTA ///Minimum Renown Rank necessary to do this job. @@ -33,7 +35,8 @@ ///List of Auspices that are allowed to do this job. var/list/allowed_auspice var/list/disallowed_auspice - + ///List of tribe that are limited to a certain amount of that tribe doing this job. e.g.: list(TRIBE_BLACK_SPIRAL_DANCERS = 1, TRIBE_BONE_GNAWERS = 0) // APOC EDIT ADD START + var/list/tribe_slots // APOC EDIT ADD END ///If this job requires whitelisting before it can be selected for characters. var/whitelisted = FALSE diff --git a/modular_darkpack/modules/jobs/code/anarchs/baron.dm b/modular_darkpack/modules/jobs/code/anarchs/baron.dm index ca815fab1478..793af751613e 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/baron.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/baron.dm @@ -3,7 +3,7 @@ faction = FACTION_ANARCHS total_positions = 1 spawn_positions = 1 - supervisors = "the Anarchs and the Traditions" + supervisors = "the Anarchs and the Status Perfectus" config_tag = "BARON" job_flags = CITY_JOB_FLAGS outfit = /datum/outfit/job/vampire/baron @@ -16,7 +16,7 @@ known_contacts = list("Bouncer", "Emissary", "Sweeper", "Prince", "Sheriff") allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BAALI, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) allowed_splats = list(SPLAT_KINDRED) - description = "You lead the Anarchs in the City. A Camarilla faction that values freedom and individuality. While not a fan of the traditions, you still respect the Masquerade." + description = "You hold ground on what the Second Revolt has left in the city. As one of San Francisco's Barons, you directly represent the Status Perfectus and the Second Revolt. You have a haven under the Dragonsbreath Smokeshop, your cover business." minimum_masquerade = 3 /datum/outfit/job/vampire/baron diff --git a/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm b/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm index ee3cf10de71a..1eeec9c46d6b 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm @@ -29,7 +29,7 @@ allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL) maximal_generation = 9 maximum_immortal_age = 200 - description = "You are the enforcer of the Anarchs. The baron is always in need of muscle power. Enforce the Traditions - in the anarch way." + description = "You are the enforcer of the Anarchs. The baron is always in need of muscle power. Enforce the Status Perfectus. You can find the Anarch haven under the Dragonsbreath Smokeshop." minimum_masquerade = 2 /datum/outfit/job/vampire/bruiser diff --git a/modular_darkpack/modules/jobs/code/anarchs/emissary.dm b/modular_darkpack/modules/jobs/code/anarchs/emissary.dm index d2722725efdb..573bd794b78b 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/emissary.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/emissary.dm @@ -16,7 +16,7 @@ known_contacts = list("Baron", "Bouncer", "Emissary", "Sweeper", "Prince", "Sheriff") allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) allowed_splats = list(SPLAT_KINDRED) - description = "You are a diplomat for the anarchs. Make deals, keep the peace, all through words, not violence. But the latter may come to pass if the former fails." + description = "You are a diplomat for the anarchs. Make deals, keep the peace, all through words, not violence. But the latter may come to pass if the former fails. You can find the Anarch haven under the Dragonsbreath Smokeshop." minimum_masquerade = 2 /datum/outfit/job/vampire/emissary diff --git a/modular_darkpack/modules/jobs/code/anarchs/sweeper.dm b/modular_darkpack/modules/jobs/code/anarchs/sweeper.dm index 38a5d3123a09..9fe1400f086c 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/sweeper.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/sweeper.dm @@ -16,7 +16,7 @@ known_contacts = list("Baron", "Bouncer", "Emissary", "Sweeper") allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL) - description = "You are the observer of the anarchs. You watch out for any new kindred, suspicious individuals, and any new rumors near the anarch turf, and then report it to your anarchs." + description = "You are the observer of the anarchs. You watch out for any new kindred, suspicious individuals, and any new rumors near the anarch turf, and then report it to your anarchs. You can find the Anarch haven under the Dragonsbreath Smokeshop." minimum_masquerade = 2 /datum/outfit/job/vampire/sweeper diff --git a/modular_darkpack/modules/jobs/code/anarchs/tapster.dm b/modular_darkpack/modules/jobs/code/anarchs/tapster.dm index a1dea1c3635d..b5d188e02d6e 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/tapster.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/tapster.dm @@ -26,13 +26,14 @@ */ known_contacts = list("Baron", "Bouncer", "Emissary", "Sweeper") - allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL) - splat_slots = list(SPLAT_NONE = 2, SPLAT_GHOUL = 2) - description = "You are an employee of the local smoke shop. Serve the eclectic clients that pass through, and try not to ask too many questions." // APOC EDIT CHANGE - JOBS + allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL, SPLAT_KINDRED) + splat_slots = list(SPLAT_NONE = 2, SPLAT_GHOUL = 2, SPLAT_KINDRED = 1) + maximum_immortal_age = 5 + description = "You have been given keys to the DragonsBreath Smokeshop, but are not trusted to hold a real title. You are either a ghoul, a doll, a fledgeling, or someone impersonating one of the three." // APOC EDIT CHANGE - JOBS minimum_masquerade = 0 /datum/outfit/job/vampire/tapster - name = "Tapster" + name = "Retinue" jobtype = /datum/job/vampire/tapster id = /obj/item/card/tapster diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm index 4816a28c0b25..c05c6b349bfd 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm @@ -1,6 +1,6 @@ /datum/job/vampire/primogen_banu title = JOB_PRIMOGEN_BANU_HAQIM - description = "Offer your infinite knowledge to Prince of the City, while overseeing the Banu Haqim in the city. Monitor their contracts and ensure they remain true to the ways of the Clan. You have an official cover with the Police Department as a local civilian consultant, ensure things run smoothly, on either end." + description = "Offer your infinite knowledge to Prince of the City, while overseeing the Banu Haqim in the city. Monitor their contracts and ensure they remain true to the ways of the Clan." auto_deadmin_role_flags = DEADMIN_POSITION_HEAD faction = FACTION_CAMARILLA total_positions = 1 diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm new file mode 100644 index 000000000000..819e8ac48d2b --- /dev/null +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm @@ -0,0 +1,42 @@ +/datum/job/vampire/primogen_duskborn + title = JOB_PRIMOGEN_MALKAVIAN + description = "You are too valuable to not have a position, but you are not recognized enough for anything more. You are tasked with managing the city's thinbloods and Caitiff population. You may be a Caitiff yourself, however unlikely that may be." + auto_deadmin_role_flags = DEADMIN_POSITION_HEAD + faction = FACTION_CAMARILLA + total_positions = 1 + spawn_positions = 1 + supervisors = SUPERVISOR_TRADITIONS + req_admin_notify = 1 + minimal_player_age = 14 + exp_requirements = 180 + exp_required_type = EXP_TYPE_CAMARILLA + exp_required_type_department = EXP_TYPE_CAMARILLA + exp_granted_type = EXP_TYPE_CAMARILLA + config_tag = "PRIMOGEN_MALKAVIAN" + job_flags = CITY_JOB_FLAGS + outfit = /datum/outfit/job/vampire/duskborn + +// display_order = JOB_DISPLAY_ORDER_DUSKBORN + departments_list = list( + /datum/job_department/camarilla + ) + + minimal_generation = 10 + minimum_immortal_age = 150 + minimum_masquerade = 5 + allowed_splats = list(SPLAT_KINDRED) + allowed_clans = list(VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_WARRIOR_SALUBRI) + + known_contacts = list("Prince") + +/datum/outfit/job/vampire/duskborn + name = "Duskborn Primogen" + jobtype = /datum/job/vampire/primogen_duskborn + + ears = /obj/item/radio/headset/darkpack + id = /obj/item/card/primogen + uniform = /obj/item/clothing/under/vampire/suit + suit = /obj/item/clothing/suit/vampire/trench + shoes = /obj/item/clothing/shoes/vampire/jackboots +// l_pocket = /obj/item/smartphone/duskborn_primo + backpack_contents = list(/obj/item/vamp/keys/duskborn/primogen=1, /obj/item/card/credit/elder=1, /obj/item/card/whip, /obj/item/card/steward, /obj/item/card/myrmidon) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm index d5090b7b1ad3..cea16231d9fc 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm @@ -1,6 +1,6 @@ /datum/job/vampire/primogen_lasombra title = JOB_PRIMOGEN_LASOMBRA - description = "Offer your infinite knowledge to Prince of the City. Monitor those of your Clan and your lesser cousins, while holding a Court of Blood as need be, for all it takes for the Camarilla to turn on you is one mistake. You and Your Clan were given a domain in the local Church and in the vicinity of a swarm of Lupines, keep matters under control." + description = "Offer your infinite knowledge to Prince of the City. Monitor those of your Clan and your lesser cousins, while holding a Court of Blood as need be, for all it takes for the Camarilla to turn on you is one mistake." auto_deadmin_role_flags = DEADMIN_POSITION_HEAD faction = FACTION_CAMARILLA total_positions = 1 @@ -18,8 +18,7 @@ display_order = JOB_DISPLAY_ORDER_LASOMBRA departments_list = list( - /datum/job_department/church, - /datum/job_department/camarilla, + /datum/job_department/camarilla ) minimal_generation = 12 diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm index 174c2c996329..17ccc4cbc201 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm @@ -1,6 +1,6 @@ /datum/job/vampire/primogen_malkavian title = JOB_PRIMOGEN_MALKAVIAN - description = "Offer your infinite knowledge to Prince of the City. You likely have a hold over the local hospital, make good use of it and ensure the blood bags remain available." + description = "Offer your infinite knowledge to Prince of the City. Uphold clan interests. Lead the children of the moon and shattered mirror." auto_deadmin_role_flags = DEADMIN_POSITION_HEAD faction = FACTION_CAMARILLA total_positions = 1 @@ -18,8 +18,7 @@ display_order = JOB_DISPLAY_ORDER_MALKAVIAN departments_list = list( - /datum/job_department/clinic, - /datum/job_department/camarilla, + /datum/job_department/camarilla ) minimal_generation = 12 diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm index 9f5d30d84860..161e458e7dd6 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm @@ -1,6 +1,6 @@ /datum/job/vampire/primogen_nosferatu title = JOB_PRIMOGEN_NOSFERATU - description = "Offer your infinite knowledge to Prince of the City, and run the warren, your domain watches over the sewers." + description = "Offer your infinite knowledge to Prince of the City. Manage what's left of your Warrens. Keep your clan interests in mind." auto_deadmin_role_flags = DEADMIN_POSITION_HEAD faction = FACTION_CAMARILLA total_positions = 1 @@ -18,8 +18,7 @@ display_order = JOB_DISPLAY_ORDER_NOSFERATU departments_list = list( - /datum/job_department/camarilla, - /datum/job_department/city_services + /datum/job_department/camarilla ) minimal_generation = 12 diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm index b9ccff0ea6e2..e5c2a0406ac1 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm @@ -1,6 +1,6 @@ /datum/job/vampire/primogen_toreador title = JOB_PRIMOGEN_TOREADOR - description = "Offer your infinite knowledge to Prince of the City. Take care of the Strip Club and its Elysium, for it is your domain and a social center within the city." + description = "Offer your infinite knowledge to Prince of the City. Keep clan interests in mind." auto_deadmin_role_flags = DEADMIN_POSITION_HEAD faction = FACTION_CAMARILLA total_positions = 1 @@ -18,8 +18,7 @@ display_order = JOB_DISPLAY_ORDER_TOREADOR departments_list = list( - /datum/job_department/strip_club, - /datum/job_department/camarilla, + /datum/job_department/camarilla ) minimal_generation = 12 diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm index 2a4ae75592e8..dccef34f5770 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm @@ -1,6 +1,6 @@ /datum/job/vampire/primogen_ventrue title = JOB_PRIMOGEN_VENTRUE - description = "Offer your infinite knowledge to Prince of the City. Maintain the local Jazz Club, in front of the Tower, and its Elysium." + description = "Offer your infinite knowledge to Prince of the City. Uphold Clan interests and look out for prospective protege for it." auto_deadmin_role_flags = DEADMIN_POSITION_HEAD faction = FACTION_CAMARILLA total_positions = 1 diff --git a/modular_darkpack/modules/jobs/code/clinic/director.dm b/modular_darkpack/modules/jobs/code/clinic/director.dm index 4229413981c9..35964b020cc1 100644 --- a/modular_darkpack/modules/jobs/code/clinic/director.dm +++ b/modular_darkpack/modules/jobs/code/clinic/director.dm @@ -1,24 +1,31 @@ /datum/job/vampire/clinic_director title = JOB_CLINIC_DIRECTOR faction = FACTION_CITY - total_positions = 1 - spawn_positions = 1 + total_positions = 2 + spawn_positions = 2 supervisors = "the Hospital Administrator" exp_required_type_department = EXP_TYPE_CLINIC config_tag = "CLINIC_DIRECTOR" outfit = /datum/outfit/job/vampire/clinic_director job_flags = CITY_JOB_FLAGS display_order = JOB_DISPLAY_ORDER_CLINICS_DIRECTOR + known_contacts = list("Senior Doctor", "Doctor") departments_list = list( /datum/job_department/clinic, ) - description = "Keep Saint John's clinic up and running. Collect blood by helping mortals at the Clinic." - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_NONE) - allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_BAALI, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_GIOVANNI, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_NAGARAJA) + description = "Senior staff at Ocean Clinic, help the rest of the doctors, nurses, and EMTs with whatever they need. Uphold high standards of care." + allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_NONE, SPLAT_GAROU, SPLAT_KINFOLK, SPLAT_CORAX) +// allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_BAALI, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_GIOVANNI, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_NAGARAJA, VAMPIRE_CLAN_WARRIOR_SALUBRI) + + alt_titles = list( + "Head of Surgery", + "Care Coordinator", + "Shift Operations Supervisor" + ) /datum/outfit/job/vampire/clinic_director - name = "Clinic Director" + name = "Senior Doctor" jobtype = /datum/job/vampire/clinic_director ears = /obj/item/radio/headset/darkpack diff --git a/modular_darkpack/modules/jobs/code/clinic/doctor.dm b/modular_darkpack/modules/jobs/code/clinic/doctor.dm index 7f1c0e083e9c..9be073edeb37 100644 --- a/modular_darkpack/modules/jobs/code/clinic/doctor.dm +++ b/modular_darkpack/modules/jobs/code/clinic/doctor.dm @@ -14,12 +14,12 @@ /datum/job_department/clinic, ) - description = "Help your fellow kindred in all matters medicine related. Sell blood. Keep your human colleagues ignorant." - maximal_generation = 9 - maximum_immortal_age = 200 - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_KINFOLK, SPLAT_NONE) - allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_BAALI, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_VENTRUE_ANTITRIBU, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_GIOVANNI, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_NAGARAJA) - known_contacts = list("Clinic Director") + description = "Work your job at the Ocean Clinic. Help patients, keep a tidy space, and uphold high standards of care." +// maximal_generation = 9 +// maximum_immortal_age = 200 + allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_KINFOLK, SPLAT_NONE, SPLAT_CORAX, SPLAT_GAROU) +// allowed_clans = list(VAMPIRE_CLAN_WARRIOR_SALUBRI, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_BAALI, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_VENTRUE_ANTITRIBU, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_GIOVANNI, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_NAGARAJA) + known_contacts = list("Senior Doctor", "Doctor") alt_titles = list( "Doctor", @@ -31,7 +31,7 @@ "Surgeon", "Physician", "Paramedic", - "EMT", + "EMT" ) diff --git a/modular_darkpack/modules/jobs/code/giovanni/capo.dm b/modular_darkpack/modules/jobs/code/giovanni/capo.dm index 589e2881f17d..9ce65a39e548 100644 --- a/modular_darkpack/modules/jobs/code/giovanni/capo.dm +++ b/modular_darkpack/modules/jobs/code/giovanni/capo.dm @@ -1,6 +1,6 @@ /datum/job/vampire/capo title = JOB_CAPO - faction = FACTION_GIOVANNI +// faction = FACTION_GIOVANNI total_positions = 1 spawn_positions = 1 supervisors = "the Family and the Traditions" diff --git a/modular_darkpack/modules/jobs/code/giovanni/la_famiglia.dm b/modular_darkpack/modules/jobs/code/giovanni/la_famiglia.dm index 50c180c1786c..748e3cc5e26b 100644 --- a/modular_darkpack/modules/jobs/code/giovanni/la_famiglia.dm +++ b/modular_darkpack/modules/jobs/code/giovanni/la_famiglia.dm @@ -1,6 +1,6 @@ /datum/job/vampire/famiglia title = JOB_LA_FAMIGLIA - faction = FACTION_GIOVANNI +// faction = FACTION_GIOVANNI total_positions = 10 spawn_positions = 10 supervisors = "the Family" diff --git a/modular_darkpack/modules/jobs/code/giovanni/la_squadra.dm b/modular_darkpack/modules/jobs/code/giovanni/la_squadra.dm index bd713ff7881c..c85c2a1f9821 100644 --- a/modular_darkpack/modules/jobs/code/giovanni/la_squadra.dm +++ b/modular_darkpack/modules/jobs/code/giovanni/la_squadra.dm @@ -1,6 +1,6 @@ /datum/job/vampire/squadra title = JOB_LA_SQUADRA - faction = FACTION_GIOVANNI +// faction = FACTION_GIOVANNI total_positions = 10 spawn_positions = 10 supervisors = "the Family and the Traditions" diff --git a/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm b/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm index 27dc2f822c46..b0392e38762c 100644 --- a/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm +++ b/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm @@ -1,7 +1,7 @@ /datum/job/vampire/bogatyr title = JOB_BOGATYR - faction = FACTION_SABBAT + faction = FACTION_VOIVODATE total_positions = 2 // APOC EDIT CHANGE - JOBS - (Voivode) spawn_positions = 2 // APOC EDIT CHANGE - JOBS - (Voivode) supervisors = " the Laws of Hospitality" @@ -22,7 +22,7 @@ maximum_immortal_age = 200 minimum_masquerade = 2 - known_contacts = list("Prince", "Baron", "Sheriff") + known_contacts = list("Voivode", "Zadruga", "Bogatyr", "Bogatyr Captain") /datum/outfit/job/vampire/bogatyr name = "Bogatyr" diff --git a/modular_darkpack/modules/jobs/code/tzimisce/voivode.dm b/modular_darkpack/modules/jobs/code/tzimisce/voivode.dm index 504648e4ce91..8095ab66bba1 100644 --- a/modular_darkpack/modules/jobs/code/tzimisce/voivode.dm +++ b/modular_darkpack/modules/jobs/code/tzimisce/voivode.dm @@ -1,8 +1,8 @@ /datum/job/vampire/voivode title = JOB_VOIVODE - faction = FACTION_SABBAT - total_positions = 1 - spawn_positions = 1 + faction = FACTION_VOIVODATE + total_positions = 2 + spawn_positions = 2 supervisors = " the Laws of Hospitality" config_tag = "VOIVODE" outfit = /datum/outfit/job/vampire/voivode @@ -16,6 +16,8 @@ allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_OLD_CLAN_TZIMISCE) // APOC EDIT CHANGE - JOBS - (Voivode) + clan_slots = list(VAMPIRE_CLAN_TZIMISCE = 1, VAMPIRE_CLAN_MALKAVIAN = 1, VAMPIRE_CLAN_TOREADOR = 1, VAMPIRE_CLAN_OLD_CLAN_TZIMISCE = 1) + description = "You are a leader of the Seer's Voivodate. A congregation of Seer clans, leading the new Voivodate in the face of near systemic Collapse. Oversee the Hospitality on your lands, and guard the Sarcophagus of the Voivode-in-Waiting in Waiting kept in your basement." // APOC EDIT CHANGE - JOBS - (Voivode) minimum_masquerade = 2 @@ -31,4 +33,19 @@ shoes = /obj/item/clothing/shoes/vampire/jackboots belt = /obj/item/storage/belt/sheath/vamp/sword l_pocket = /obj/item/smartphone/voivode - backpack_contents = list(/obj/item/vamp/keys/voivodate/master = 1, /obj/item/instrument/eguitar/vamp = 1, /obj/item/card/credit/elder = 1) // DARKPACK EDIT CHANGE - JOBS - (Voivode) + backpack_contents = list(/obj/item/vamp/keys/voivodate/master = 1, /obj/item/card/credit/elder = 1) // DARKPACK EDIT CHANGE - JOBS - (Voivode) + +/* +/datum/job/vampire/voivode/after_spawn(mob/living/spawned, client/player_client) + . = ..() + RegisterSignal(spawned, COMSIG_MOB_GHOSTIZED, PROC_REF(on_mob_ghost)) + var/datum/splat/our_splat = get_kindred_splat(spawned) + var/clan_id = our_splat.clan.id + allowed_clans -= clan_id + +/datum/job/vampire/voivode/proc/on_mob_ghost(mob/living/despawning) + SIGNAL_HANDLER + var/datum/splat/our_splat = get_kindred_splat(spawned) + var/clan_id = our_splat.clan.id + allowed_clans += clan_id +*/ diff --git a/modular_darkpack/modules/jobs/code/tzimisce/zadruga.dm b/modular_darkpack/modules/jobs/code/tzimisce/zadruga.dm index e34781ae02e9..c053956977af 100644 --- a/modular_darkpack/modules/jobs/code/tzimisce/zadruga.dm +++ b/modular_darkpack/modules/jobs/code/tzimisce/zadruga.dm @@ -1,6 +1,6 @@ /datum/job/vampire/zadruga title = JOB_ZADRUGA - faction = FACTION_SABBAT + faction = FACTION_VOIVODATE total_positions = 2 spawn_positions = 2 supervisors = " the Laws of Hospitality" diff --git a/modular_darkpack/modules/matrix/code/job.dm b/modular_darkpack/modules/matrix/code/job.dm index ece34c3d22a4..b629020ecdef 100644 --- a/modular_darkpack/modules/matrix/code/job.dm +++ b/modular_darkpack/modules/matrix/code/job.dm @@ -7,13 +7,35 @@ job_debug("Freeing role: [job_datum.title]") job_datum.current_positions = max(0, job_datum.current_positions - 1) - - //Getting it from prefs is untrustworthy as they could have unlocked there sheet. (even before the move to splats) +// APOC EDIT CHANGE START + //Getting it from prefs is untrustworthy as they could have unlocked there sheet. (even before the move to splats) // //But getting it from spalts is impercise as those can change. //What to do with you. - /* - var/datum/species/player_species = despawning_mob.dna?.species - var/player_species_id = player_species?.id - if(job_datum.splat_slots[player_species_id] >= 0) - job_datum.splat_slots[player_species_id] = job_datum.splat_slots[player_species_id] + 1 - */ + var/splat_pref = despawning_mob.client.prefs.read_preference(/datum/preference/choiced/splats) + var/datum/splat/vampire/kindred/clan_pref = get_kindred_splat(despawning_mob) + var/datum/splat/werewolf/tribe_pref = get_werewolf_splat(despawning_mob) + var/player_splat_id + var/player_clan_id + var/player_tribe_id + + if(ispath(splat_pref)) + var/datum/splat/player_splat = GLOB.splat_prototypes[splat_pref] + player_splat_id = player_splat.id + else + player_splat_id = splat_pref + + if(clan_pref) // APOC EDIT ADD START + player_clan_id = clan_pref.clan.id + else if(tribe_pref) + player_tribe_id = tribe_pref.name + + if(job_datum.splat_slots) + if(job_datum.splat_slots[player_splat_id] >= 0) + job_datum.splat_slots[player_splat_id] = job_datum.splat_slots[player_splat_id] + 1 + if(job_datum.clan_slots) + if(job_datum.clan_slots[player_clan_id] >= 0) + job_datum.clan_slots[player_clan_id] = job_datum.clan_slots[player_clan_id] + 1 + if(job_datum.tribe_slots) + if(job_datum.tribe_slots[player_tribe_id] >= 0) + job_datum.tribe_slots[player_tribe_id] = job_datum.tribe_slots[player_tribe_id] + 1 +// APOC EDIT CHANGE END diff --git a/modular_darkpack/modules/npc/code/nonhuman/hostile/szlachta.dm b/modular_darkpack/modules/npc/code/nonhuman/hostile/szlachta.dm index bf3a58cf5142..09bc62dc6874 100644 --- a/modular_darkpack/modules/npc/code/nonhuman/hostile/szlachta.dm +++ b/modular_darkpack/modules/npc/code/nonhuman/hostile/szlachta.dm @@ -21,7 +21,7 @@ attack_verb_simple = "bite" attack_sound = 'sound/items/weapons/bite.ogg' speak_emote = list("gnashes") - faction = list(FACTION_SABBAT, VAMPIRE_CLAN_TZIMISCE) + faction = list(FACTION_VOIVODATE, VAMPIRE_CLAN_TZIMISCE) pressure_resistance = 200 bloodquality = BLOOD_QUALITY_LOW bloodpool = 2 diff --git a/modular_zapoc/modules/jobs/code/voivode.dm b/modular_zapoc/modules/jobs/code/voivode.dm index 6aa21eed36e2..9dfcd3fb0289 100644 --- a/modular_zapoc/modules/jobs/code/voivode.dm +++ b/modular_zapoc/modules/jobs/code/voivode.dm @@ -1,6 +1,6 @@ /datum/job/vampire/voivodate_citizen title = JOB_VOIVODATE_CITIZEN - faction = FACTION_SABBAT + faction = FACTION_VOIVODATE total_positions = 5 spawn_positions = 5 supervisors = " the Laws of Hospitality" @@ -44,7 +44,7 @@ description = "Captain of the Bogatyri, protectors of the Seer's Voivodate. You lead them in the protection of your family and the Voivode-in-Waiting who sleeps in the basement. Serve the Voivodes, and enforce the Hospitality on your family's lands." display_order = JOB_DISPLAY_ORDER_BOGATYR_CAPTAIN - known_contacts = list("Prince", "Baron", "Sheriff", "Emissary", "Seneschal", "Zadruga", "Bogatyr") + known_contacts = list("Voivode", "Zadruga", "Bogatyr", "Bogatyr Captain") /datum/outfit/job/vampire/bogatyr/captain name = "Bogatyr Captain" diff --git a/tgstation.dme b/tgstation.dme index c0bdda7d0859..0a78e46a3dda 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7465,6 +7465,7 @@ #include "modular_darkpack\modules\jobs\code\camarilla\sheriff.dm" #include "modular_darkpack\modules\jobs\code\camarilla\tower_employee.dm" #include "modular_darkpack\modules\jobs\code\camarilla\primogens\banu_haqim.dm" +#include "modular_darkpack\modules\jobs\code\camarilla\primogens\duskborn.dm" #include "modular_darkpack\modules\jobs\code\camarilla\primogens\lasombra.dm" #include "modular_darkpack\modules\jobs\code\camarilla\primogens\malkavian.dm" #include "modular_darkpack\modules\jobs\code\camarilla\primogens\nosferatu.dm" From ecc4deb6c52658b442bf5f65e74d3d1689d7bf51 Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Fri, 21 Aug 2026 03:36:08 -0700 Subject: [PATCH 02/16] I have infinite things to do --- modular_darkpack/modules/jobs/code/anarchs/reeve.dm | 0 .../modules/jobs/code/tzimisce/bogatyr.dm | 2 +- modular_zapoc/modules/items/code/keys.dm | 13 ++++++++++++- modular_zapoc/modules/jobs/code/voivode.dm | 1 + 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 modular_darkpack/modules/jobs/code/anarchs/reeve.dm diff --git a/modular_darkpack/modules/jobs/code/anarchs/reeve.dm b/modular_darkpack/modules/jobs/code/anarchs/reeve.dm new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm b/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm index b0392e38762c..2bb52e9b3a80 100644 --- a/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm +++ b/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm @@ -36,4 +36,4 @@ suit = /obj/item/clothing/suit/vampire/bogatyr belt = /obj/item/storage/belt/sheath/vamp/sword l_pocket = /obj/item/smartphone/bogatyr - backpack_contents = list(/obj/item/vamp/keys/voivodate = 1, /obj/item/card/credit=1) // DARKPACK EDIT CHANGE - JOBS - (Voivode) + backpack_contents = list(/obj/item/vamp/keys/voivodate/advanced = 1, /obj/item/card/credit=1) // DARKPACK EDIT CHANGE - JOBS - (Voivode) diff --git a/modular_zapoc/modules/items/code/keys.dm b/modular_zapoc/modules/items/code/keys.dm index 78a5f588852b..52c07c162b9b 100644 --- a/modular_zapoc/modules/items/code/keys.dm +++ b/modular_zapoc/modules/items/code/keys.dm @@ -5,7 +5,8 @@ #define LOCKACCESS_OCEAN "ocean" #define LOCKACCESS_VOIVODATE "voivodate_citizen" -#define LOCKACCESS_VOIVODATE_MASTER "seer_voivodate" +#define LOCKACCESS_VOIVODATE_ADVANCED "seer_voivodate" +#define LOCKACCESS_VOIVODATE_MASTER /obj/item/vamp/keys/veterinarian name = "veterinarian keys" @@ -69,10 +70,20 @@ /obj/effect/mapping_helpers/door/access/voivodate lock_id = LOCKACCESS_VOIVODATE +/obj/item/vamp/keys/voivodate/advanced + name = "Estate security keys" + accesslocks = list( + LOCKACCESS_VOIVODATE, + LOCKACCESS_VOIVODATE_ADVANCED + ) + +/obj/effect/mapping_helpers/door/access/voivodate/advanced + lock_id = LOCKACCESS_VOIVODATE_ADVANCED /obj/item/vamp/keys/voivodate/master name = "Estate master keys" accesslocks = list( + LOCKACCESS_VOIVODATE_ADVANCED, LOCKACCESS_VOIVODATE_MASTER, LOCKACCESS_VOIVODATE ) diff --git a/modular_zapoc/modules/jobs/code/voivode.dm b/modular_zapoc/modules/jobs/code/voivode.dm index 9dfcd3fb0289..192a6fd1dda7 100644 --- a/modular_zapoc/modules/jobs/code/voivode.dm +++ b/modular_zapoc/modules/jobs/code/voivode.dm @@ -50,3 +50,4 @@ name = "Bogatyr Captain" jobtype = /datum/job/vampire/bogatyr/captain // id = /obj/item/card/id/bogatyr/captain + backpack_contents = list(/obj/item/vamp/keys/voivodate/master = 1, /obj/item/card/credit=1) From 881f1e0419bbb50f20306851b8903e775a1d4cca Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Mon, 24 Aug 2026 04:15:35 -0700 Subject: [PATCH 03/16] jobs --- code/__DEFINES/~darkpack/jobs.dm | 1 + modular_darkpack/modules/jobs/code/anarchs/baron.dm | 4 +++- .../modules/jobs/code/anarchs/bruiser.dm | 12 ++++++------ .../modules/jobs/code/anarchs/emissary.dm | 6 ++++-- modular_darkpack/modules/jobs/code/anarchs/reeve.dm | 0 .../modules/jobs/code/anarchs/sweeper.dm | 10 +++++----- .../modules/jobs/code/camarilla/harpy.dm | 4 ++-- .../modules/jobs/code/camarilla/hound.dm | 4 ++-- .../jobs/code/camarilla/primogens/banu_haqim.dm | 2 ++ .../jobs/code/camarilla/primogens/duskborn.dm | 4 ++-- .../jobs/code/camarilla/primogens/lasombra.dm | 2 +- .../jobs/code/camarilla/primogens/malkavian.dm | 2 +- .../jobs/code/camarilla/primogens/nosferatu.dm | 2 +- .../jobs/code/camarilla/primogens/toreador.dm | 2 +- .../modules/jobs/code/camarilla/primogens/ventrue.dm | 2 +- .../modules/jobs/code/camarilla/prince.dm | 6 +++--- .../modules/jobs/code/camarilla/seneschal.dm | 2 +- .../modules/jobs/code/camarilla/sheriff.dm | 2 +- .../modules/jobs/code/camarilla/tower_employee.dm | 2 +- .../modules/jobs/code/miscelllaneous/priest.dm | 2 +- .../modules/jobs/code/tzimisce/bogatyr.dm | 1 + .../modules/jobs/code/tzimisce/voivode.dm | 1 + modular_zapoc/modules/jobs/code/voivode.dm | 2 ++ 23 files changed, 43 insertions(+), 32 deletions(-) delete mode 100644 modular_darkpack/modules/jobs/code/anarchs/reeve.dm diff --git a/code/__DEFINES/~darkpack/jobs.dm b/code/__DEFINES/~darkpack/jobs.dm index 7592da4c690f..9d7c31c0552c 100644 --- a/code/__DEFINES/~darkpack/jobs.dm +++ b/code/__DEFINES/~darkpack/jobs.dm @@ -32,6 +32,7 @@ #define JOB_PRIMOGEN_MALKAVIAN "Primogen Malkavian" #define JOB_PRIMOGEN_NOSFERATU "Primogen Nosferatu" #define JOB_PRIMOGEN_VENTRUE "Primogen Ventrue" +#define JOB_PRIMOGEN_DUSKBORN "Primogen of the Duskborn" //Anarch #define JOB_BARON "Baron" diff --git a/modular_darkpack/modules/jobs/code/anarchs/baron.dm b/modular_darkpack/modules/jobs/code/anarchs/baron.dm index 793af751613e..f9b966f279c5 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/baron.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/baron.dm @@ -7,6 +7,8 @@ config_tag = "BARON" job_flags = CITY_JOB_FLAGS outfit = /datum/outfit/job/vampire/baron + exp_requirements = 3000 + exp_required_type_department = EXP_TYPE_ANARCH display_order = JOB_DISPLAY_ORDER_BARON departments_list = list( @@ -16,7 +18,7 @@ known_contacts = list("Bouncer", "Emissary", "Sweeper", "Prince", "Sheriff") allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BAALI, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) allowed_splats = list(SPLAT_KINDRED) - description = "You hold ground on what the Second Revolt has left in the city. As one of San Francisco's Barons, you directly represent the Status Perfectus and the Second Revolt. You have a haven under the Dragonsbreath Smokeshop, your cover business." + description = "You hold ground on what the Second Revolt has left in the city. As one of San Francisco's Barons, you directly represent the Status Perfectus and the Second Revolt. Uphold the interests of your Anarchs and try not to turn your hot peace with the Camarilla into a hot war. You have a haven under the Dragonsbreath Smokeshop, your cover business." minimum_masquerade = 3 /datum/outfit/job/vampire/baron diff --git a/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm b/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm index 1eeec9c46d6b..edc0283aa082 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm @@ -1,8 +1,8 @@ /datum/job/vampire/bruiser title = JOB_BRUISER faction = FACTION_ANARCHS - total_positions = 7 - spawn_positions = 7 + total_positions = 3 + spawn_positions = 3 supervisors = SUPERVISOR_BARON config_tag = "BRUISER" job_flags = CITY_JOB_FLAGS @@ -25,12 +25,12 @@ ) known_contacts = list("Baron", "Bouncer", "Emissary", "Sweeper") - allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) +// allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL) - maximal_generation = 9 - maximum_immortal_age = 200 +// maximal_generation = 9 +// maximum_immortal_age = 200 description = "You are the enforcer of the Anarchs. The baron is always in need of muscle power. Enforce the Status Perfectus. You can find the Anarch haven under the Dragonsbreath Smokeshop." - minimum_masquerade = 2 + minimum_masquerade = 3 /datum/outfit/job/vampire/bruiser name = "Bruiser" diff --git a/modular_darkpack/modules/jobs/code/anarchs/emissary.dm b/modular_darkpack/modules/jobs/code/anarchs/emissary.dm index 573bd794b78b..f74adf80cb74 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/emissary.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/emissary.dm @@ -8,16 +8,18 @@ job_flags = CITY_JOB_FLAGS outfit = /datum/outfit/job/vampire/emissary + exp_requirements = 1600 + exp_required_type_department = EXP_TYPE_ANARCH display_order = JOB_DISPLAY_ORDER_EMISSARY departments_list = list( /datum/job_department/anarch, ) known_contacts = list("Baron", "Bouncer", "Emissary", "Sweeper", "Prince", "Sheriff") - allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) +// allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) allowed_splats = list(SPLAT_KINDRED) description = "You are a diplomat for the anarchs. Make deals, keep the peace, all through words, not violence. But the latter may come to pass if the former fails. You can find the Anarch haven under the Dragonsbreath Smokeshop." - minimum_masquerade = 2 + minimum_masquerade = 3 /datum/outfit/job/vampire/emissary name = "emissary" diff --git a/modular_darkpack/modules/jobs/code/anarchs/reeve.dm b/modular_darkpack/modules/jobs/code/anarchs/reeve.dm deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/modular_darkpack/modules/jobs/code/anarchs/sweeper.dm b/modular_darkpack/modules/jobs/code/anarchs/sweeper.dm index 9fe1400f086c..5d4c79887a74 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/sweeper.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/sweeper.dm @@ -1,8 +1,8 @@ /datum/job/vampire/sweeper title = JOB_SWEEPER faction = FACTION_ANARCHS - total_positions = 3 - spawn_positions = 3 + total_positions = 2 + spawn_positions = 2 supervisors = SUPERVISOR_BARON config_tag = "SWEEPER" job_flags = CITY_JOB_FLAGS @@ -10,14 +10,14 @@ display_order = JOB_DISPLAY_ORDER_SWEEPER departments_list = list( - /datum/job_department/anarch, + /datum/job_department/anarch ) known_contacts = list("Baron", "Bouncer", "Emissary", "Sweeper") - allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) +// allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL) description = "You are the observer of the anarchs. You watch out for any new kindred, suspicious individuals, and any new rumors near the anarch turf, and then report it to your anarchs. You can find the Anarch haven under the Dragonsbreath Smokeshop." - minimum_masquerade = 2 + minimum_masquerade = 3 /datum/outfit/job/vampire/sweeper name = "Sweeper" diff --git a/modular_darkpack/modules/jobs/code/camarilla/harpy.dm b/modular_darkpack/modules/jobs/code/camarilla/harpy.dm index dc9c5d7c338d..6288ed009c3b 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/harpy.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/harpy.dm @@ -9,7 +9,7 @@ config_tag = "HARPY" req_admin_notify = 1 minimal_player_age = 10 - exp_requirements = 180 + exp_requirements = 1000 exp_required_type = EXP_TYPE_CAMARILLA exp_required_type_department = EXP_TYPE_CAMARILLA exp_granted_type = EXP_TYPE_CAMARILLA @@ -30,7 +30,7 @@ known_contacts = list("Prince","Sheriff","Tremere Regent","Dealer","Emissary","Baron","Primogens") - allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) +// allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) /datum/outfit/job/vampire/harpy name = "Harpy" diff --git a/modular_darkpack/modules/jobs/code/camarilla/hound.dm b/modular_darkpack/modules/jobs/code/camarilla/hound.dm index 0f980d846e77..1ac7eb90c08c 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/hound.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/hound.dm @@ -7,7 +7,7 @@ spawn_positions = 7 supervisors = SUPERVISOR_SHERIFF minimal_player_age = 7 - exp_requirements = 20 +// exp_requirements = 20 exp_required_type = EXP_TYPE_CAMARILLA exp_required_type_department = EXP_TYPE_CAMARILLA exp_granted_type = EXP_TYPE_CAMARILLA @@ -24,7 +24,7 @@ maximum_immortal_age = 200 minimum_masquerade = 3 allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL) - allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) +// allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) known_contacts = list("Prince", "Sheriff") diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm index c05c6b349bfd..1fcc7ad7f989 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm @@ -16,6 +16,8 @@ job_flags = CITY_JOB_FLAGS outfit = /datum/outfit/job/vampire/banuprim + exp_requirements = 1600 + exp_required_type = EXP_TYPE_CAMARILLA display_order = JOB_DISPLAY_ORDER_BANU departments_list = list( /datum/job_department/camarilla, diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm index 819e8ac48d2b..4fc932cad563 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm @@ -1,5 +1,5 @@ /datum/job/vampire/primogen_duskborn - title = JOB_PRIMOGEN_MALKAVIAN + title = JOB_PRIMOGEN_DUSKBORN description = "You are too valuable to not have a position, but you are not recognized enough for anything more. You are tasked with managing the city's thinbloods and Caitiff population. You may be a Caitiff yourself, however unlikely that may be." auto_deadmin_role_flags = DEADMIN_POSITION_HEAD faction = FACTION_CAMARILLA @@ -8,7 +8,7 @@ supervisors = SUPERVISOR_TRADITIONS req_admin_notify = 1 minimal_player_age = 14 - exp_requirements = 180 + exp_requirements = 1600 exp_required_type = EXP_TYPE_CAMARILLA exp_required_type_department = EXP_TYPE_CAMARILLA exp_granted_type = EXP_TYPE_CAMARILLA diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm index cea16231d9fc..b4b72fcbae36 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm @@ -8,7 +8,7 @@ supervisors = SUPERVISOR_TRADITIONS req_admin_notify = 1 minimal_player_age = 14 - exp_requirements = 180 + exp_requirements = 1600 exp_required_type = EXP_TYPE_CAMARILLA exp_required_type_department = EXP_TYPE_CAMARILLA exp_granted_type = EXP_TYPE_CAMARILLA diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm index 17ccc4cbc201..6846346cb498 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm @@ -8,7 +8,7 @@ supervisors = SUPERVISOR_TRADITIONS req_admin_notify = 1 minimal_player_age = 14 - exp_requirements = 180 + exp_requirements = 1600 exp_required_type = EXP_TYPE_CAMARILLA exp_required_type_department = EXP_TYPE_CAMARILLA exp_granted_type = EXP_TYPE_CAMARILLA diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm index 161e458e7dd6..243220bfd1be 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm @@ -8,7 +8,7 @@ supervisors = SUPERVISOR_TRADITIONS req_admin_notify = 1 minimal_player_age = 14 - exp_requirements = 180 + exp_requirements = 1600 exp_required_type = EXP_TYPE_CAMARILLA exp_required_type_department = EXP_TYPE_CAMARILLA exp_granted_type = EXP_TYPE_CAMARILLA diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm index e5c2a0406ac1..f6dcde9fad91 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm @@ -8,7 +8,7 @@ supervisors = SUPERVISOR_TRADITIONS req_admin_notify = 1 minimal_player_age = 14 - exp_requirements = 180 + exp_requirements = 1600 exp_required_type = EXP_TYPE_CAMARILLA exp_required_type_department = EXP_TYPE_CAMARILLA exp_granted_type = EXP_TYPE_CAMARILLA diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm index dccef34f5770..b4fcd3191d94 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm @@ -8,7 +8,7 @@ supervisors = SUPERVISOR_TRADITIONS req_admin_notify = 1 minimal_player_age = 14 - exp_requirements = 180 + exp_requirements = 1600 exp_required_type = EXP_TYPE_CAMARILLA exp_required_type_department = EXP_TYPE_CAMARILLA exp_granted_type = EXP_TYPE_CAMARILLA diff --git a/modular_darkpack/modules/jobs/code/camarilla/prince.dm b/modular_darkpack/modules/jobs/code/camarilla/prince.dm index e86b3edde072..895269e1553e 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/prince.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/prince.dm @@ -1,6 +1,6 @@ /datum/job/vampire/prince title = JOB_PRINCE - description = "You are the top dog of this city. You hold Praxis over " + CITY_NAME + ", and your word is law. Make sure the Masquerade is upheld, and your status is respected." + description = "You are the Prince of San Francisco, a chair vacated and filled with regularity. You grasp Praxis of this city, holding over domain, at least on paper and wherever the Anarchs aren't pushing you out. Try not to turn your hot peace with them into a hot war." auto_deadmin_role_flags = DEADMIN_POSITION_HEAD faction = FACTION_CAMARILLA total_positions = 1 @@ -8,7 +8,7 @@ supervisors = SUPERVISOR_TRADITIONS req_admin_notify = 1 minimal_player_age = 14 - exp_requirements = 180 + exp_requirements = 3000 exp_required_type = EXP_TYPE_CAMARILLA exp_required_type_department = EXP_TYPE_CAMARILLA exp_granted_type = EXP_TYPE_CAMARILLA @@ -25,7 +25,7 @@ minimum_immortal_age = 75 minimum_masquerade = 5 allowed_splats = list(SPLAT_KINDRED) - allowed_clans = list(VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER) + allowed_clans = list(VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_CAITIFF) known_contacts = list( "Sheriff", diff --git a/modular_darkpack/modules/jobs/code/camarilla/seneschal.dm b/modular_darkpack/modules/jobs/code/camarilla/seneschal.dm index b4d93e481a52..bad6bb04f47a 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/seneschal.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/seneschal.dm @@ -8,7 +8,7 @@ supervisors = SUPERVISOR_PRINCE req_admin_notify = 1 minimal_player_age = 10 - exp_requirements = 180 + exp_requirements = 2000 exp_required_type = EXP_TYPE_CAMARILLA exp_required_type_department = EXP_TYPE_CAMARILLA exp_granted_type = EXP_TYPE_CAMARILLA diff --git a/modular_darkpack/modules/jobs/code/camarilla/sheriff.dm b/modular_darkpack/modules/jobs/code/camarilla/sheriff.dm index ad4bd4741b58..cd66e8804c8f 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/sheriff.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/sheriff.dm @@ -8,7 +8,7 @@ supervisors = SUPERVISOR_PRINCE req_admin_notify = 1 minimal_player_age = 14 - exp_requirements = 120 + exp_requirements = 2000 exp_required_type = EXP_TYPE_CAMARILLA exp_required_type_department = EXP_TYPE_CAMARILLA exp_granted_type = EXP_TYPE_CAMARILLA diff --git a/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm b/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm index 30112046d41e..6828327ad4f3 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm @@ -26,7 +26,7 @@ maximum_immortal_age = 200 known_contacts = list("Prince", "Sheriff", "Seneschal") allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL, SPLAT_KINDRED) - allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) +// allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) description = "You work directly for the Millenium Tower and its administrative staff in a variety of ways, you may even be a personal retainer of one of the top three, to the point that any oddities that you may see over night or hear are either things you are already aware or you simply laugh them off and try not to think about it." minimum_masquerade = 4 diff --git a/modular_darkpack/modules/jobs/code/miscelllaneous/priest.dm b/modular_darkpack/modules/jobs/code/miscelllaneous/priest.dm index 9b6d5bd50209..1bc73d2dba0f 100644 --- a/modular_darkpack/modules/jobs/code/miscelllaneous/priest.dm +++ b/modular_darkpack/modules/jobs/code/miscelllaneous/priest.dm @@ -13,7 +13,7 @@ /datum/job_department/church, ) allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL, SPLAT_KINDRED) - allowed_clans = list(VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_BANU_HAQIM_VIZIER) //Each have pretty big religious influences, so! +// allowed_clans = list(VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_BANU_HAQIM_VIZIER) //Each have pretty big religious influences, so! maximal_generation = 11 maximum_immortal_age = 100 description = "Be the shepherd of the flock in " + CITY_NAME + ", lead them to salvation, piety and righteousness." diff --git a/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm b/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm index 2bb52e9b3a80..92839291cc78 100644 --- a/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm +++ b/modular_darkpack/modules/jobs/code/tzimisce/bogatyr.dm @@ -8,6 +8,7 @@ config_tag = "BOGATYR" outfit = /datum/outfit/job/vampire/bogatyr job_flags = CITY_JOB_FLAGS + exp_requirements = 1000 exp_required_type_department = EXP_TYPE_MANOR departments_list = list( /datum/job_department/manor, diff --git a/modular_darkpack/modules/jobs/code/tzimisce/voivode.dm b/modular_darkpack/modules/jobs/code/tzimisce/voivode.dm index 8095ab66bba1..2ea97f7ca238 100644 --- a/modular_darkpack/modules/jobs/code/tzimisce/voivode.dm +++ b/modular_darkpack/modules/jobs/code/tzimisce/voivode.dm @@ -3,6 +3,7 @@ faction = FACTION_VOIVODATE total_positions = 2 spawn_positions = 2 + exp_requirements = 3000 supervisors = " the Laws of Hospitality" config_tag = "VOIVODE" outfit = /datum/outfit/job/vampire/voivode diff --git a/modular_zapoc/modules/jobs/code/voivode.dm b/modular_zapoc/modules/jobs/code/voivode.dm index 192a6fd1dda7..6e568599d1fd 100644 --- a/modular_zapoc/modules/jobs/code/voivode.dm +++ b/modular_zapoc/modules/jobs/code/voivode.dm @@ -43,6 +43,8 @@ config_tag = "BOGATYR_CAPTAIN" description = "Captain of the Bogatyri, protectors of the Seer's Voivodate. You lead them in the protection of your family and the Voivode-in-Waiting who sleeps in the basement. Serve the Voivodes, and enforce the Hospitality on your family's lands." + exp_requirements = 2000 + exp_required_type_department = EXP_TYPE_MANOR display_order = JOB_DISPLAY_ORDER_BOGATYR_CAPTAIN known_contacts = list("Voivode", "Zadruga", "Bogatyr", "Bogatyr Captain") From a68e2ce2528c6cc52e868e12241ddc3f6dbf29a6 Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Mon, 24 Aug 2026 04:38:53 -0700 Subject: [PATCH 04/16] more job stuff --- code/__DEFINES/~darkpack/factions.dm | 2 +- code/__DEFINES/~darkpack/jobs.dm | 3 +- .../modules/jobs/code/camarilla/harpy.dm | 6 +-- .../modules/jobs/code/camarilla/hound.dm | 4 +- .../code/camarilla/primogens/banu_haqim.dm | 2 +- .../jobs/code/camarilla/primogens/duskborn.dm | 10 ++--- .../jobs/code/camarilla/primogens/lasombra.dm | 2 +- .../code/camarilla/primogens/malkavian.dm | 4 +- .../code/camarilla/primogens/nosferatu.dm | 4 +- .../jobs/code/camarilla/primogens/toreador.dm | 2 +- .../jobs/code/camarilla/primogens/ventrue.dm | 2 +- .../modules/jobs/code/camarilla/prince.dm | 4 +- .../modules/jobs/code/camarilla/seneschal.dm | 2 +- .../modules/jobs/code/camarilla/sheriff.dm | 2 +- .../jobs/code/camarilla/tower_employee.dm | 4 +- .../modules/phones/code/phone_subtypes.dm | 44 +++++++++++-------- 16 files changed, 52 insertions(+), 45 deletions(-) diff --git a/code/__DEFINES/~darkpack/factions.dm b/code/__DEFINES/~darkpack/factions.dm index 1aa5ca1b91dc..6c9dd0f3b805 100644 --- a/code/__DEFINES/~darkpack/factions.dm +++ b/code/__DEFINES/~darkpack/factions.dm @@ -4,7 +4,7 @@ #define FACTION_ANARCHS "anarchs" #define FACTION_CAMARILLA "camarilla" #define FACTION_SABBAT "sabbat" -#define FACTION_BLACK_SUITS "black-suits" +#define FACTION_BLACK_SUITS "giovanni-faction" #define FACTION_VOIVODATE "seers-voivodate" // City faction diff --git a/code/__DEFINES/~darkpack/jobs.dm b/code/__DEFINES/~darkpack/jobs.dm index 9d7c31c0552c..e1c0d5677b8b 100644 --- a/code/__DEFINES/~darkpack/jobs.dm +++ b/code/__DEFINES/~darkpack/jobs.dm @@ -32,12 +32,11 @@ #define JOB_PRIMOGEN_MALKAVIAN "Primogen Malkavian" #define JOB_PRIMOGEN_NOSFERATU "Primogen Nosferatu" #define JOB_PRIMOGEN_VENTRUE "Primogen Ventrue" -#define JOB_PRIMOGEN_DUSKBORN "Primogen of the Duskborn" +#define JOB_PRIMOGEN_DUSKBORN "Primogen of the Duskborn" // APOC EDIT CHANGE - JOBS //Anarch #define JOB_BARON "Baron" #define JOB_TAPSTER "Retinue" // APOC EDIT CHANGE - JOBS -#define JOB_REEVE "Reeve" // APOC EDIT CHANGE - JOBS #define JOB_BRUISER "Bruiser" #define JOB_EMISSARY "Emissary" #define JOB_SWEEPER "Sweeper" diff --git a/modular_darkpack/modules/jobs/code/camarilla/harpy.dm b/modular_darkpack/modules/jobs/code/camarilla/harpy.dm index 6288ed009c3b..bb26cfaf2e36 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/harpy.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/harpy.dm @@ -22,9 +22,9 @@ ) minimal_generation = 12 //Uncomment when players get exp enough - maximal_generation = 9 - maximum_immortal_age = 200 - minimum_masquerade = 5 +// maximal_generation = 9 +// maximum_immortal_age = 200 + minimum_masquerade = 4 allowed_splats = list(SPLAT_KINDRED) diff --git a/modular_darkpack/modules/jobs/code/camarilla/hound.dm b/modular_darkpack/modules/jobs/code/camarilla/hound.dm index 1ac7eb90c08c..8292d78d85b5 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/hound.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/hound.dm @@ -20,8 +20,8 @@ /datum/job_department/camarilla, ) - maximal_generation = 9 - maximum_immortal_age = 200 +// maximal_generation = 9 +// maximum_immortal_age = 200 minimum_masquerade = 3 allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL) // allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm index 1fcc7ad7f989..0f2ae46a6aab 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm @@ -25,7 +25,7 @@ minimal_generation = 12 minimum_immortal_age = 50 - minimum_masquerade = 5 + minimum_masquerade = 4 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm index 4fc932cad563..884e6bcfc86a 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm @@ -21,11 +21,11 @@ /datum/job_department/camarilla ) - minimal_generation = 10 - minimum_immortal_age = 150 - minimum_masquerade = 5 + minimal_generation = 13 + minimum_immortal_age = 50 + minimum_masquerade = 4 allowed_splats = list(SPLAT_KINDRED) - allowed_clans = list(VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_WARRIOR_SALUBRI) +// allowed_clans = list(VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_WARRIOR_SALUBRI) known_contacts = list("Prince") @@ -38,5 +38,5 @@ uniform = /obj/item/clothing/under/vampire/suit suit = /obj/item/clothing/suit/vampire/trench shoes = /obj/item/clothing/shoes/vampire/jackboots -// l_pocket = /obj/item/smartphone/duskborn_primo + l_pocket = /obj/item/smartphone/duskborn_primo backpack_contents = list(/obj/item/vamp/keys/duskborn/primogen=1, /obj/item/card/credit/elder=1, /obj/item/card/whip, /obj/item/card/steward, /obj/item/card/myrmidon) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm index b4b72fcbae36..c556983e687d 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/lasombra.dm @@ -23,7 +23,7 @@ minimal_generation = 12 minimum_immortal_age = 50 - minimum_masquerade = 5 + minimum_masquerade = 4 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_LASOMBRA) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm index 6846346cb498..f40364b59ea9 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/malkavian.dm @@ -22,8 +22,8 @@ ) minimal_generation = 12 - minimum_immortal_age = 5 // Actually Malkavian Primo is whoever showed for work that day. Crazy bunch. - minimum_masquerade = 5 + minimum_immortal_age = 50 // Actually Malkavian Primo is whoever showed for work that day. Crazy bunch. + minimum_masquerade = 4 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm index 243220bfd1be..da905fc8a7de 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/nosferatu.dm @@ -22,8 +22,8 @@ ) minimal_generation = 12 - minimum_immortal_age = 15 - minimum_masquerade = 5 + minimum_immortal_age = 50 + minimum_masquerade = 4 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_NOSFERATU) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm index f6dcde9fad91..b9fb736e796b 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/toreador.dm @@ -23,7 +23,7 @@ minimal_generation = 12 minimum_immortal_age = 50 - minimum_masquerade = 5 + minimum_masquerade = 4 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_TOREADOR) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm index b4fcd3191d94..d03ddd508843 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm @@ -23,7 +23,7 @@ minimal_generation = 12 minimum_immortal_age = 50 - minimum_masquerade = 5 + minimum_masquerade = 4 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_VENTRUE) diff --git a/modular_darkpack/modules/jobs/code/camarilla/prince.dm b/modular_darkpack/modules/jobs/code/camarilla/prince.dm index 895269e1553e..f4c6082306e2 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/prince.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/prince.dm @@ -21,9 +21,9 @@ /datum/job_department/camarilla, ) - minimal_generation = 10 + minimal_generation = 12 minimum_immortal_age = 75 - minimum_masquerade = 5 + minimum_masquerade = 4 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_CAITIFF) diff --git a/modular_darkpack/modules/jobs/code/camarilla/seneschal.dm b/modular_darkpack/modules/jobs/code/camarilla/seneschal.dm index bad6bb04f47a..595fa86b33c1 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/seneschal.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/seneschal.dm @@ -22,7 +22,7 @@ ) minimal_generation = 12 - minimum_masquerade = 5 + minimum_masquerade = 4 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD) diff --git a/modular_darkpack/modules/jobs/code/camarilla/sheriff.dm b/modular_darkpack/modules/jobs/code/camarilla/sheriff.dm index cd66e8804c8f..50348a892937 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/sheriff.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/sheriff.dm @@ -22,7 +22,7 @@ ) minimal_generation = 12 - minimum_masquerade = 5 + minimum_masquerade = 4 allowed_splats = list(SPLAT_KINDRED) allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) diff --git a/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm b/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm index 6828327ad4f3..3ce81a8c5c9b 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm @@ -22,8 +22,8 @@ "Tower Personal Attendant" ) - maximal_generation = 9 - maximum_immortal_age = 200 +// maximal_generation = 9 +// maximum_immortal_age = 200 known_contacts = list("Prince", "Sheriff", "Seneschal") allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL, SPLAT_KINDRED) // allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) diff --git a/modular_darkpack/modules/phones/code/phone_subtypes.dm b/modular_darkpack/modules/phones/code/phone_subtypes.dm index 813f90e3d258..bab0ab959f4f 100644 --- a/modular_darkpack/modules/phones/code/phone_subtypes.dm +++ b/modular_darkpack/modules/phones/code/phone_subtypes.dm @@ -1,13 +1,13 @@ /obj/item/smartphone/prince contact_networks_pre_init = list( alist(NETWORK_ID = MILLENIUM_TOWER_NETWORK, OUR_ROLE = "C.E.O.", USE_JOB_TITLE = FALSE) - , alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "TransAmerica Corporation C.E.O.", USE_JOB_TITLE = FALSE) + , alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Millenium Group C.E.O.", USE_JOB_TITLE = FALSE) ) /obj/item/smartphone/seneschal contact_networks_pre_init = list( alist(NETWORK_ID = MILLENIUM_TOWER_NETWORK, OUR_ROLE = "C.O.O.", USE_JOB_TITLE = FALSE) - , alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "TransAmerica Corporation C.O.O", USE_JOB_TITLE = FALSE) + , alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Millenium Group C.O.O", USE_JOB_TITLE = FALSE) ) /obj/item/smartphone/sheriff @@ -37,7 +37,7 @@ /obj/item/smartphone/ventrue_primo important_contact_of = VAMPIRE_CLAN_VENTRUE contact_networks_pre_init = list( - alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Crown Blue Jazz Club Owner", USE_JOB_TITLE = FALSE) + alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Management", USE_JOB_TITLE = FALSE) ) // TOREADOR @@ -45,7 +45,7 @@ /obj/item/smartphone/toreador_primo important_contact_of = VAMPIRE_CLAN_TOREADOR contact_networks_pre_init = list( - alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = (PRIMARY_NIGHTCLUB_COMPANY + " Night Club Owner"), USE_JOB_TITLE = FALSE) + alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = (PRIMARY_NIGHTCLUB_COMPANY + "Sunday Friend"), USE_JOB_TITLE = FALSE) ) // NOSFERATU @@ -53,7 +53,7 @@ /obj/item/smartphone/nosferatu_primo important_contact_of = VAMPIRE_CLAN_NOSFERATU contact_networks_pre_init = list( - alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Utility Administrator", USE_JOB_TITLE = FALSE) + alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Administrator", USE_JOB_TITLE = FALSE) ) // MALKAVIAN @@ -61,7 +61,15 @@ /obj/item/smartphone/malkavian_primo important_contact_of = VAMPIRE_CLAN_MALKAVIAN contact_networks_pre_init = list( - alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Hospital Administrator", USE_JOB_TITLE = FALSE) + alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Contact", USE_JOB_TITLE = FALSE) + ) + +// DUSKBORN + +/obj/item/smartphone/duskborn_primo + important_contact_of = VAMPIRE_CLAN_CAITIFF + contact_networks_pre_init = list( + alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Outreach", USE_JOB_TITLE = FALSE) ) // LASOMBRA @@ -69,13 +77,13 @@ /obj/item/smartphone/lasombra_primo important_contact_of = VAMPIRE_CLAN_LASOMBRA contact_networks_pre_init = list( - alist(NETWORK_ID = LASOMBRA_NETWORK, OUR_ROLE = "Church Administrator", USE_JOB_TITLE = FALSE) - , alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Church Administrator", USE_JOB_TITLE = FALSE) + alist(NETWORK_ID = LASOMBRA_NETWORK, OUR_ROLE = "Open Shoulder", USE_JOB_TITLE = FALSE) + , alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Open Shoulder", USE_JOB_TITLE = FALSE) ) /obj/item/smartphone/lasombra_caretaker contact_networks_pre_init = list( - alist(NETWORK_ID = LASOMBRA_NETWORK, OUR_ROLE = "Church Caretaker", USE_JOB_TITLE = FALSE) + alist(NETWORK_ID = LASOMBRA_NETWORK, OUR_ROLE = "Caretaker", USE_JOB_TITLE = FALSE) ) // BANU HAQIM @@ -83,7 +91,7 @@ /obj/item/smartphone/banu_primo important_contact_of = VAMPIRE_CLAN_BANU_HAQIM contact_networks_pre_init = list( - alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "SFPD Civilian Consultant", USE_JOB_TITLE = FALSE) + alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Head of the Household", USE_JOB_TITLE = FALSE) ) // TREMERE @@ -147,34 +155,34 @@ /obj/item/smartphone/baron contact_networks_pre_init = list( - alist(NETWORK_ID = ANARCH_NETWORK, OUR_ROLE = "Club Manager", USE_JOB_TITLE = FALSE) - , alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Anarchy Rose Club Manager", USE_JOB_TITLE = FALSE) + alist(NETWORK_ID = ANARCH_NETWORK, OUR_ROLE = "Dragonsbreath Manager", USE_JOB_TITLE = FALSE) + , alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Dragonsbreath Smokeshop Manager", USE_JOB_TITLE = FALSE) ) /obj/item/smartphone/emissary contact_networks_pre_init = list( - alist(NETWORK_ID = ANARCH_NETWORK, OUR_ROLE = "Club Representative", USE_JOB_TITLE = FALSE) - , alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Anarchy Rose Club Representative", USE_JOB_TITLE = FALSE) + alist(NETWORK_ID = ANARCH_NETWORK, OUR_ROLE = "Dragonsbreath HR", USE_JOB_TITLE = FALSE) + , alist(NETWORK_ID = VAMPIRE_LEADER_NETWORK, OUR_ROLE = "Dragonsbreath Smokeshop HR", USE_JOB_TITLE = FALSE) ) /obj/item/smartphone/bruiser contact_networks_pre_init = list( - alist(NETWORK_ID = ANARCH_NETWORK, OUR_ROLE = "Club Bouncer", USE_JOB_TITLE = FALSE) + alist(NETWORK_ID = ANARCH_NETWORK, OUR_ROLE = "Dragonsbreath Security", USE_JOB_TITLE = FALSE) ) /obj/item/smartphone/sweeper contact_networks_pre_init = list( - alist(NETWORK_ID = ANARCH_NETWORK, OUR_ROLE = "Club Bartender", USE_JOB_TITLE = FALSE) + alist(NETWORK_ID = ANARCH_NETWORK, OUR_ROLE = "Dragonsbreath Shift Lead", USE_JOB_TITLE = FALSE) ) /obj/item/smartphone/liaison contact_networks_pre_init = list( - alist(NETWORK_ID = ANARCH_NETWORK, OUR_ROLE = "Club Promotor", USE_JOB_TITLE = FALSE) + alist(NETWORK_ID = ANARCH_NETWORK, OUR_ROLE = "TELL A CODER! - Liason", USE_JOB_TITLE = FALSE) ) /obj/item/smartphone/tapster contact_networks_pre_init = list( - alist(NETWORK_ID = ANARCH_NETWORK, OUR_ROLE = "Club Bartender", USE_JOB_TITLE = FALSE) + alist(NETWORK_ID = ANARCH_NETWORK, OUR_ROLE = "Dragonsbreath Employee", USE_JOB_TITLE = FALSE) ) // SUPPLY From aea6dce487f993dc7e0106d1ee046ca9ca18de8d Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Mon, 24 Aug 2026 04:40:15 -0700 Subject: [PATCH 05/16] GGH --- code/__DEFINES/~darkpack/factions.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES/~darkpack/factions.dm b/code/__DEFINES/~darkpack/factions.dm index 6c9dd0f3b805..a4b24c493ce0 100644 --- a/code/__DEFINES/~darkpack/factions.dm +++ b/code/__DEFINES/~darkpack/factions.dm @@ -4,7 +4,7 @@ #define FACTION_ANARCHS "anarchs" #define FACTION_CAMARILLA "camarilla" #define FACTION_SABBAT "sabbat" -#define FACTION_BLACK_SUITS "giovanni-faction" +#define FACTION_GIOVANNI "giovanni-faction" #define FACTION_VOIVODATE "seers-voivodate" // City faction From 72ac800870203fef8453631e07395421ca96809e Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Mon, 24 Aug 2026 04:48:07 -0700 Subject: [PATCH 06/16] KEY --- modular_zapoc/modules/items/code/keys.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_zapoc/modules/items/code/keys.dm b/modular_zapoc/modules/items/code/keys.dm index 52c07c162b9b..69daf314cba8 100644 --- a/modular_zapoc/modules/items/code/keys.dm +++ b/modular_zapoc/modules/items/code/keys.dm @@ -6,7 +6,7 @@ #define LOCKACCESS_VOIVODATE "voivodate_citizen" #define LOCKACCESS_VOIVODATE_ADVANCED "seer_voivodate" -#define LOCKACCESS_VOIVODATE_MASTER +#define LOCKACCESS_VOIVODATE_MASTER "voivodate_master" /obj/item/vamp/keys/veterinarian name = "veterinarian keys" @@ -88,7 +88,7 @@ LOCKACCESS_VOIVODATE ) -/obj/effect/mapping_helpers/door/access/voivodate_master +/obj/effect/mapping_helpers/door/access/voivodate/master lock_id = LOCKACCESS_VOIVODATE_MASTER From a8be90dc6650bc80717672ce32a03fc5053a8b0f Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Mon, 24 Aug 2026 05:10:28 -0700 Subject: [PATCH 07/16] more touchups --- code/__DEFINES/~darkpack/jobs.dm | 15 ++++++++------- .../modules/jobs/code/anarchs/baron.dm | 2 +- .../modules/jobs/code/anarchs/tapster.dm | 4 ++-- .../modules/jobs/code/camarilla/harpy.dm | 4 ++-- .../modules/jobs/code/camarilla/hound.dm | 4 ++-- .../jobs/code/camarilla/primogens/banu_haqim.dm | 2 +- .../jobs/code/camarilla/primogens/duskborn.dm | 6 +++--- .../jobs/code/camarilla/primogens/ventrue.dm | 2 +- .../modules/jobs/code/camarilla/tower_employee.dm | 4 ++-- 9 files changed, 22 insertions(+), 21 deletions(-) diff --git a/code/__DEFINES/~darkpack/jobs.dm b/code/__DEFINES/~darkpack/jobs.dm index 57c1108d49ef..e1b64e580977 100644 --- a/code/__DEFINES/~darkpack/jobs.dm +++ b/code/__DEFINES/~darkpack/jobs.dm @@ -26,13 +26,13 @@ #define JOB_TOWERWORK "Tower Employee" //Primogens -#define JOB_PRIMOGEN_TOREADOR "Primogen Toreador" -#define JOB_PRIMOGEN_BANU_HAQIM "Primogen Banu Haqim" -#define JOB_PRIMOGEN_LASOMBRA "Primogen Lasombra" -#define JOB_PRIMOGEN_MALKAVIAN "Primogen Malkavian" -#define JOB_PRIMOGEN_NOSFERATU "Primogen Nosferatu" -#define JOB_PRIMOGEN_VENTRUE "Primogen Ventrue" -#define JOB_PRIMOGEN_DUSKBORN "Primogen of the Duskborn" // APOC EDIT CHANGE - JOBS +#define JOB_PRIMOGEN_TOREADOR "Toreador Primogen" +#define JOB_PRIMOGEN_BANU_HAQIM "Banu Haqim Primogen" +#define JOB_PRIMOGEN_LASOMBRA "Lasombra Primogen" +#define JOB_PRIMOGEN_MALKAVIAN "Malkavian Primogen" +#define JOB_PRIMOGEN_NOSFERATU "Nosferatu Primogen" +#define JOB_PRIMOGEN_VENTRUE "Ventrue Primogen" +#define JOB_PRIMOGEN_DUSKBORN "Duskborn Primogen" // APOC EDIT CHANGE - JOBS //Anarch #define JOB_BARON "Baron" @@ -123,6 +123,7 @@ #define JOB_DISPLAY_ORDER_NOSFERATU 10 #define JOB_DISPLAY_ORDER_TOREADOR 11 #define JOB_DISPLAY_ORDER_VENTRUE 12 +#define JOB_DISPLAY_ORDER_DUSKBORN 13 #define JOB_DISPLAY_ORDER_CLINICS_DIRECTOR 1 #define JOB_DISPLAY_ORDER_DOCTOR 2 diff --git a/modular_darkpack/modules/jobs/code/anarchs/baron.dm b/modular_darkpack/modules/jobs/code/anarchs/baron.dm index 87b4f4bf8627..1e7b104bca4f 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/baron.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/baron.dm @@ -16,7 +16,7 @@ ) known_contacts = list("Bouncer", "Emissary", "Sweeper", "Prince", "Sheriff") - allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BAALI, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) + allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BAALI, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) allowed_splats = list(SPLAT_KINDRED) description = "You hold ground on what the Second Revolt has left in the city. As one of San Francisco's Barons, you directly represent the Status Perfectus and the Second Revolt. Uphold the interests of your Anarchs and try not to turn your hot peace with the Camarilla into a hot war. You have a haven under the Dragonsbreath Smokeshop, your cover business." minimum_masquerade = 3 diff --git a/modular_darkpack/modules/jobs/code/anarchs/tapster.dm b/modular_darkpack/modules/jobs/code/anarchs/tapster.dm index b5d188e02d6e..02faadde3de4 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/tapster.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/tapster.dm @@ -1,8 +1,8 @@ /datum/job/vampire/tapster title = JOB_TAPSTER faction = FACTION_ANARCHS - total_positions = 2 - spawn_positions = 2 + total_positions = 3 + spawn_positions = 3 supervisors = SUPERVISOR_BARON_PUBLIC config_tag = "TAPSTER" job_flags = CITY_JOB_FLAGS diff --git a/modular_darkpack/modules/jobs/code/camarilla/harpy.dm b/modular_darkpack/modules/jobs/code/camarilla/harpy.dm index bb26cfaf2e36..090f0986fcc0 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/harpy.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/harpy.dm @@ -3,8 +3,8 @@ description = "You are an expert on the nightlife of Cainite society. Acting as one of the chief advisors on all things related to boons and diplomacy, the Prince defers quite the amount of judgement to you. Don't squander it." auto_deadmin_role_flags = DEADMIN_POSITION_HEAD faction = FACTION_CAMARILLA - total_positions = 3 - spawn_positions = 3 + total_positions = 2 + spawn_positions = 2 supervisors = SUPERVISOR_PRINCE config_tag = "HARPY" req_admin_notify = 1 diff --git a/modular_darkpack/modules/jobs/code/camarilla/hound.dm b/modular_darkpack/modules/jobs/code/camarilla/hound.dm index 8292d78d85b5..98fcab9b0a48 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/hound.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/hound.dm @@ -3,8 +3,8 @@ description = "You are the Prince's enforcer. You report to the Sheriff and uphold the Traditions." auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY faction = FACTION_CAMARILLA - total_positions = 7 - spawn_positions = 7 + total_positions = 3 + spawn_positions = 3 supervisors = SUPERVISOR_SHERIFF minimal_player_age = 7 // exp_requirements = 20 diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm index 0f2ae46a6aab..af7b946fca11 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/banu_haqim.dm @@ -32,7 +32,7 @@ known_contacts = list("Prince") /datum/outfit/job/vampire/banuprim - name = "Primogen Banu Haqim" + name = "Banu Haqim Primogen" jobtype = /datum/job/vampire/primogen_banu ears = /obj/item/radio/headset/darkpack diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm index 884e6bcfc86a..a111c06b5140 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm @@ -12,11 +12,11 @@ exp_required_type = EXP_TYPE_CAMARILLA exp_required_type_department = EXP_TYPE_CAMARILLA exp_granted_type = EXP_TYPE_CAMARILLA - config_tag = "PRIMOGEN_MALKAVIAN" + config_tag = "PRIMOGEN_DUSKBORN" job_flags = CITY_JOB_FLAGS outfit = /datum/outfit/job/vampire/duskborn -// display_order = JOB_DISPLAY_ORDER_DUSKBORN + display_order = JOB_DISPLAY_ORDER_DUSKBORN departments_list = list( /datum/job_department/camarilla ) @@ -30,7 +30,7 @@ known_contacts = list("Prince") /datum/outfit/job/vampire/duskborn - name = "Duskborn Primogen" + name = "Primogen Duskborn" jobtype = /datum/job/vampire/primogen_duskborn ears = /obj/item/radio/headset/darkpack diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm index d03ddd508843..57e4390f468b 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/ventrue.dm @@ -30,7 +30,7 @@ known_contacts = list("Prince") /datum/outfit/job/vampire/ventrue - name = "Primogen Ventrue" + name = "Primogen Ventrue Primogen" jobtype = /datum/job/vampire/primogen_ventrue ears = /obj/item/radio/headset/darkpack diff --git a/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm b/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm index 3ce81a8c5c9b..cf6714e19c5e 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm @@ -1,8 +1,8 @@ /datum/job/vampire/towerwork title = JOB_TOWERWORK faction = FACTION_CAMARILLA - total_positions = 4 - spawn_positions = 4 + total_positions = 3 + spawn_positions = 3 supervisors = SUPERVISOR_SENESCHAL_PUBLIC exp_granted_type = EXP_TYPE_CAMARILLA config_tag = "TOWER_EMPLOYEE" From 248c60159484ec1253387718fd48495ca622a533 Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Mon, 24 Aug 2026 05:19:12 -0700 Subject: [PATCH 08/16] map --- .../special_fran/special_francisco.dmm | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/_maps/map_files/Vampire/special_fran/special_francisco.dmm b/_maps/map_files/Vampire/special_fran/special_francisco.dmm index a0b1cb4afa12..ebabf0b36234 100644 --- a/_maps/map_files/Vampire/special_fran/special_francisco.dmm +++ b/_maps/map_files/Vampire/special_fran/special_francisco.dmm @@ -3473,8 +3473,8 @@ /obj/structure/vampdoor/prison{ dir = 8 }, -/obj/effect/mapping_helpers/door/access/voivodate_master, /obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate/master, /turf/open/floor/city/plating_mono, /area/vtm/interior/voivodate/sanctum) "cbT" = ( @@ -5251,8 +5251,8 @@ /obj/structure/vampdoor/reinf{ dir = 8 }, -/obj/effect/mapping_helpers/door/access/voivodate_master, /obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate/advanced, /turf/open/floor/plating/stone, /area/vtm/interior/voivodate/sanctum) "daK" = ( @@ -12237,8 +12237,8 @@ /area/vtm/interior/ghetto) "heH" = ( /obj/structure/vampdoor/reinf, -/obj/effect/mapping_helpers/door/access/voivodate_master, /obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate/master, /turf/open/floor/wood/smooth, /area/vtm/interior/voivodate) "heM" = ( @@ -13173,8 +13173,8 @@ /obj/structure/vampdoor/reinf{ dir = 8 }, -/obj/effect/mapping_helpers/door/access/voivodate_master, /obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate/advanced, /turf/open/floor/plating/sidewalk/old, /area/vtm/interior/voivodate/sanctum) "hJu" = ( @@ -14725,8 +14725,8 @@ /obj/structure/vampdoor/reinf{ dir = 8 }, -/obj/effect/mapping_helpers/door/access/voivodate_master, /obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate/advanced, /turf/open/floor/city/plating_mono, /area/vtm/interior/voivodate/sanctum) "izL" = ( @@ -16759,8 +16759,8 @@ /area/vtm/interior/gang) "jNQ" = ( /obj/structure/vampdoor/prison, -/obj/effect/mapping_helpers/door/access/voivodate_master, /obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate/advanced, /turf/open/floor/city/plating_mono, /area/vtm/interior/voivodate/sanctum) "jNV" = ( @@ -21636,8 +21636,8 @@ /area/vtm/interior/endron_facility/restricted) "mIw" = ( /obj/structure/vampdoor/prison, -/obj/effect/mapping_helpers/door/access/voivodate_master, /obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate/advanced, /turf/open/floor/plating/stone, /area/vtm/interior/voivodate/sanctum) "mIC" = ( @@ -23775,8 +23775,8 @@ dir = 4 }, /obj/structure/vampdoor/reinf, -/obj/effect/mapping_helpers/door/access/voivodate_master, /obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate/advanced, /turf/open/floor/city/plating_mono, /area/vtm/interior/voivodate/sanctum) "nXv" = ( @@ -25583,8 +25583,8 @@ dir = 1 }, /obj/structure/vampdoor/oldwood, -/obj/effect/mapping_helpers/door/access/voivodate_master, /obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate/advanced, /turf/open/floor/city/plating_mono, /area/vtm/interior/voivodate) "oVN" = ( @@ -32568,8 +32568,8 @@ dir = 8 }, /obj/structure/vampdoor/reinf, -/obj/effect/mapping_helpers/door/access/voivodate_master, /obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate/advanced, /turf/open/floor/city/plating_mono, /area/vtm/interior/voivodate/sanctum) "sPw" = ( @@ -37270,8 +37270,8 @@ /obj/structure/vampdoor/reinf{ dir = 4 }, -/obj/effect/mapping_helpers/door/access/voivodate_master, /obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate/advanced, /turf/open/floor/wood/smooth/old, /area/vtm/interior/voivodate) "vws" = ( @@ -38203,8 +38203,8 @@ /obj/structure/vampdoor/prison{ dir = 8 }, -/obj/effect/mapping_helpers/door/access/voivodate_master, /obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate/master, /turf/open/floor/city/plating_mono, /area/vtm/interior/voivodate/sanctum) "wcF" = ( @@ -38748,8 +38748,8 @@ /obj/structure/vampdoor/reinf{ dir = 8 }, -/obj/effect/mapping_helpers/door/access/voivodate_master, /obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate/advanced, /turf/open/floor/city/plating_mono, /area/vtm/interior/voivodate/sanctum) "wuR" = ( From d811e6ba6dd5dc85089b825ccf78f1c455a775ab Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Mon, 24 Aug 2026 08:16:43 -0700 Subject: [PATCH 09/16] locks --- .../special_fran/special_francisco.dmm | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/_maps/map_files/Vampire/special_fran/special_francisco.dmm b/_maps/map_files/Vampire/special_fran/special_francisco.dmm index ebabf0b36234..a3cac811b145 100644 --- a/_maps/map_files/Vampire/special_fran/special_francisco.dmm +++ b/_maps/map_files/Vampire/special_fran/special_francisco.dmm @@ -13017,6 +13017,17 @@ /obj/effect/turf_decal/bordur, /turf/open/floor/plating/sidewalk/old, /area/vtm/interior/hotel) +"hEY" = ( +/obj/effect/turf_decal/bordur{ + dir = 1 + }, +/obj/structure/vampdoor/reinf{ + dir = 8 + }, +/obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate, +/turf/open/floor/city/plating_mono, +/area/vtm/interior/voivodate/sanctum) "hFd" = ( /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 8 @@ -15210,6 +15221,15 @@ /obj/structure/coclock, /turf/open/floor/city/plating, /area/vtm/interior/museum) +"iSq" = ( +/obj/effect/turf_decal/bordur, +/obj/structure/vampdoor/reinf{ + dir = 8 + }, +/obj/effect/mapping_helpers/door/lock, +/obj/effect/mapping_helpers/door/access/voivodate, +/turf/open/floor/city/plating_mono, +/area/vtm/interior/voivodate/sanctum) "iSP" = ( /obj/effect/turf_decal/siding/white/corner{ color = "#570090" @@ -23776,7 +23796,7 @@ }, /obj/structure/vampdoor/reinf, /obj/effect/mapping_helpers/door/lock, -/obj/effect/mapping_helpers/door/access/voivodate/advanced, +/obj/effect/mapping_helpers/door/access/voivodate, /turf/open/floor/city/plating_mono, /area/vtm/interior/voivodate/sanctum) "nXv" = ( @@ -25584,7 +25604,7 @@ }, /obj/structure/vampdoor/oldwood, /obj/effect/mapping_helpers/door/lock, -/obj/effect/mapping_helpers/door/access/voivodate/advanced, +/obj/effect/mapping_helpers/door/access/voivodate, /turf/open/floor/city/plating_mono, /area/vtm/interior/voivodate) "oVN" = ( @@ -32569,7 +32589,7 @@ }, /obj/structure/vampdoor/reinf, /obj/effect/mapping_helpers/door/lock, -/obj/effect/mapping_helpers/door/access/voivodate/advanced, +/obj/effect/mapping_helpers/door/access/voivodate, /turf/open/floor/city/plating_mono, /area/vtm/interior/voivodate/sanctum) "sPw" = ( @@ -88651,8 +88671,8 @@ tBB tBB tBB tBB -izK -wuQ +hEY +iSq tBB tBB tBB From 6adab038281227f3d4ac9311a9e124f4fa9641ee Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Mon, 24 Aug 2026 08:21:06 -0700 Subject: [PATCH 10/16] KEY --- modular_zapoc/modules/items/code/keys.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_zapoc/modules/items/code/keys.dm b/modular_zapoc/modules/items/code/keys.dm index 69daf314cba8..5dd723462a21 100644 --- a/modular_zapoc/modules/items/code/keys.dm +++ b/modular_zapoc/modules/items/code/keys.dm @@ -109,4 +109,5 @@ #undef LOCKACCESS_OCEAN #undef LOCKACCESS_VOIVODATE +#undef LOCKACCESS_VOIVODATE_ADVANCED #undef LOCKACCESS_VOIVODATE_MASTER From 26b7915b8735a9c9eaacb79722278af18d80ff73 Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Fri, 11 Sep 2026 17:29:05 -0700 Subject: [PATCH 11/16] ggh --- modular_darkpack/modules/jobs/code/anarchs/baron.dm | 2 -- modular_darkpack/modules/jobs/code/anarchs/bruiser.dm | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/modular_darkpack/modules/jobs/code/anarchs/baron.dm b/modular_darkpack/modules/jobs/code/anarchs/baron.dm index e1ed83819daf..da4b202cc23d 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/baron.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/baron.dm @@ -7,8 +7,6 @@ config_tag = "BARON" job_flags = CITY_JOB_FLAGS outfit = /datum/outfit/job/vampire/baron - exp_requirements = 3000 - exp_required_type_department = EXP_TYPE_ANARCH display_order = JOB_DISPLAY_ORDER_BARON departments_list = list( diff --git a/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm b/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm index 5aa10311470d..63a065df7e44 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm @@ -31,7 +31,7 @@ JOB_SWEEPER, JOB_BRUISER ) - // allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) +// allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL) // maximal_generation = 9 // maximum_immortal_age = 200 From 4b9cba2eb6eec39c79e02712d2c146ff7c85819b Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Fri, 11 Sep 2026 18:11:26 -0700 Subject: [PATCH 12/16] landmarks --- .../modules/jobs/icons/landmarks.dmi | Bin 31976 -> 31327 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modular_darkpack/modules/jobs/icons/landmarks.dmi b/modular_darkpack/modules/jobs/icons/landmarks.dmi index 9f6026a02a6a44cd28c2f359d5c663510bd542b9..5d5da2e6efddda2090102f427ff84f0131c70729 100644 GIT binary patch literal 31327 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 literal 31976 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 From 33c9378189d0408210d3b12aea20a7d66c186bbb Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Mon, 14 Sep 2026 20:49:39 -0700 Subject: [PATCH 13/16] Squashed commit of the following: commit ade83fe076bcada190100f226fb052ab81405c18 Author: Potatocrip Date: Tue Sep 8 21:00:02 2026 -0400 The Dancer Hole commit b8b3396508ad6f3f2d7937876a0419fae3fffa93 Merge: 47d68cd6540 d82e77fa690 Author: Potatocrip <87494248+Potatocrip@users.noreply.github.com> Date: Mon Sep 7 16:49:58 2026 -0400 Merge branch 'master' into sisyphean-ananasi commit 47d68cd654076e328120f38679453ba5938d42e5 Author: Potatocrip Date: Mon Sep 7 16:47:26 2026 -0400 should be good now commit 5553c7d113a501fda29752b9e376f1ba4fce32b7 Author: Potatocrip Date: Mon Sep 7 16:11:40 2026 -0400 Merge branch 'master' into sisyphean-ananasi commit 2683f1f3d29ac28acdd20ca750d1491c7ab46638 Author: Potatocrip Date: Mon Sep 7 15:51:40 2026 -0400 web2 commit e3caf8287e49c7618b5515aeb2090ed6497d9c47 Author: Potatocrip Date: Mon Sep 7 15:50:27 2026 -0400 web commit 954ea5a31c3556a728fe98e9fdf65371cc774d76 Author: Potatocrip Date: Thu Aug 27 08:38:55 2026 -0400 stam check pass sound commit 94ba7b7d22825d287a582820d11d3c2039a14677 Author: Potatocrip Date: Thu Aug 27 03:06:19 2026 -0400 cabal icons and descriptions commit 1fb6542fbb9c7186e814af36b17ee007c2fae600 Author: Potatocrip Date: Thu Aug 27 01:58:48 2026 -0400 better beneath notice commit a7ce0b6ae230688ec999bae28b2ca91425555403 Author: Potatocrip Date: Wed Aug 26 14:09:13 2026 -0400 blood of pain and beneath notice gifts commit 9c6a1124efa43a106d3a210197207655d6203610 Author: Potatocrip Date: Wed Aug 26 08:09:32 2026 -0400 groom gift commit 53351f1fb7ec11a52eb13789b7ae2d41f0671480 Author: Potatocrip Date: Wed Aug 26 06:40:15 2026 -0400 tribe traits and wyrmling kinship commit 70ca77dd855a9b3af14e83b4835436f58d5b7096 Author: Potatocrip Date: Wed Aug 26 04:00:03 2026 -0400 tribe defines n gift sound commit bf555dc625553626254af355c016bcdf5c965d12 Author: Potatocrip Date: Mon Aug 24 21:27:51 2026 -0400 more gift icon commit f00f12f9e4209629e5ce864e8164b6900405f1a9 Author: Potatocrip Date: Sun Aug 23 03:03:02 2026 -0400 oops lmao commit a6e165f77c4fc6d25a451e4ca4db0eeb447e948c Merge: e8febf967f5 66a7ad71196 Author: Potatocrip Date: Sat Aug 22 07:08:02 2026 -0400 Merge branch 'sisyphean-ananasi' of https://github.com/Potatocrip/ApocRebaseHELPMEHELPME into sisyphean-ananasi commit 66a7ad71196710b8175c2f507bd616fad85b7f24 Merge: 8653bd2149f 13cb4102798 Author: Potatocrip <87494248+Potatocrip@users.noreply.github.com> Date: Sat Aug 22 07:07:46 2026 -0400 Merge branch 'ApocryphaXIII:master' into sisyphean-ananasi commit e8febf967f516ddc0fcf3f5dbc9e48eaf5dddb3b Author: Potatocrip Date: Sat Aug 22 07:06:14 2026 -0400 cabal gifts pt1 commit 87ac7a252dd9c55cc7c26111507a0987a6032d1d Author: Potatocrip Date: Sat Aug 22 07:05:54 2026 -0400 alter mood commit d8fdb686a290382229e23e17746dbdc670e1929e Author: Potatocrip Date: Sat Aug 22 05:14:57 2026 -0400 aspect examine text commit b27e8484a8356e0dab836b55aca7a018030136db Merge: c4d862f526c 8653bd2149f Author: Potatocrip Date: Thu Aug 20 17:22:02 2026 -0400 Merge branch 'sisyphean-ananasi' of https://github.com/Potatocrip/ApocRebaseHELPMEHELPME into sisyphean-ananasi commit 8653bd2149f7adfdc36ad389a5fa13b1aac7b2b4 Merge: 82051a27044 019652d9862 Author: Potatocrip <87494248+Potatocrip@users.noreply.github.com> Date: Thu Aug 20 17:14:57 2026 -0400 Merge branch 'master' into sisyphean-ananasi commit c4d862f526c7a565d889c38492a147ad0b0212ec Author: Potatocrip Date: Thu Aug 20 17:06:50 2026 -0400 cabals commit 82051a27044f91169893face49cdeaa981ce7e16 Author: Potatocrip Date: Fri Aug 14 13:55:42 2026 -0400 fur colors commit 6667a43f095da4a44d1224634d2c090e30a6883d Author: Potatocrip Date: Fri Aug 14 13:44:14 2026 -0400 this is jobshit commit 45c49467e98c0797c669d2318a999a8c1b2b97f7 Author: Potatocrip Date: Fri Aug 14 11:35:40 2026 -0400 im jobbing commit 9b90adbdd7cb0393bc0307addd1f9bb08d37f1f6 Author: Potatocrip Date: Thu Aug 13 13:04:30 2026 -0400 better kiss commit 674bf54d7fc191b733770a0e13278f4eb685a75b Author: Potatocrip Date: Wed Aug 12 21:44:16 2026 -0400 oops commit 64d68cfc55e9e00396cc55804760386c33caca75 Author: Potatocrip Date: Wed Aug 12 21:33:59 2026 -0400 perk desc commit bb69605751219fc0e0f1a69ccb5d48c33b4fefb3 Author: Potatocrip Date: Wed Aug 12 21:28:30 2026 -0400 better shifting commit 8afa9ff012357c444009f33b8d4e8251aba6de88 Author: Potatocrip Date: Wed Aug 12 20:18:48 2026 -0400 no passive healing commit 9425c81b94007598e281261aaf27074348b05973 Author: Potatocrip Date: Wed Aug 12 17:08:17 2026 -0400 the dehowlening commit 46f11cb16f05d8548c779145455ee2eccd07ae70 Author: Potatocrip Date: Wed Aug 12 16:56:27 2026 -0400 gift stuff commit 09bd81d684107b48b806e643b0ff11b0fc3e5e35 Author: Potatocrip Date: Wed Aug 12 10:39:40 2026 -0400 hghghgh commit 0a53ff0c8130026ab0b9b497ecd1afdc06c735e5 Author: Potatocrip Date: Tue Aug 11 23:54:55 2026 -0400 placeholder sprites n rage commit 4cc4fc137acb4fb8d419db38bab20fa6f56aa386 Author: Potatocrip Date: Tue Aug 11 22:41:30 2026 -0400 stolen moments commit bdb84e1f3890e8beba1de25caa23b750a1ba85a0 Author: Potatocrip Date: Tue Aug 11 21:28:43 2026 -0400 oh my god bruh commit 21d7fac405700ea06760d6b2b258505b839bf700 Author: Potatocrip Date: Tue Aug 11 18:06:33 2026 -0400 Update ananasi.dm commit 3b0c14fb6fd4f4e1682e9be8f7ef5659db2f799b Merge: b654b60612d 9b538877a52 Author: Potatocrip Date: Tue Aug 11 08:38:15 2026 -0400 Merge branch 'sisyphean-ananasi' of https://github.com/Potatocrip/ApocRebaseHELPMEHELPME into sisyphean-ananasi commit b654b60612d1a35fe1f702fcd3bab5df5cde9b23 Author: Potatocrip Date: Tue Aug 11 08:38:13 2026 -0400 Update vamp_bite.dm commit 9b538877a52a449d1e9f4eae4855b69c04ae9bf4 Merge: ecb5d668001 40dd0d97512 Author: Potatocrip <87494248+Potatocrip@users.noreply.github.com> Date: Tue Aug 11 08:37:52 2026 -0400 Merge branch 'ApocryphaXIII:master' into sisyphean-ananasi commit 3b0266efe659cf0979f71211bb9b1384987cf3ee Author: Potatocrip Date: Sun Aug 2 07:14:16 2026 -0400 hmmmm not yet plus it doesnt work anyways commit ecb5d668001b8e23d2d1e138799ddfbc524b0af5 Author: Potatocrip Date: Thu Jul 30 23:26:20 2026 -0400 so it begins --- code/__DEFINES/~darkpack/fera/fera.dm | 13 +- .../~darkpack/fera/werewolf_tribe.dm | 16 +- code/__DEFINES/~darkpack/signals_kindred.dm | 5 +- code/__DEFINES/~darkpack/splats.dm | 3 +- .../~darkpack/traits/declarations.dm | 10 + code/__DEFINES/~darkpack/traits/sources.dm | 3 + code/_globalvars/traits/_traits.dm | 5 + code/_globalvars/traits/admin_tooling.dm | 4 + code/datums/components/bloodysoles.dm | 2 +- code/modules/forensics/forensics_helpers.dm | 4 + .../spider/giant_spider/giant_spiders.dm | 6 + config/darkpack_config.txt | 12 + .../carbon/human/species_types/zombies.dm | 14 +- .../blood_drinking/code/drinksomeblood.dm | 13 +- .../modules/blood_drinking/code/vamp_bite.dm | 11 +- .../modules/jobs/code/anarchs/bruiser.dm | 3 +- .../modules/jobs/code/anarchs/tapster.dm | 4 +- .../modules/jobs/code/camarilla/hound.dm | 3 +- .../jobs/code/camarilla/tower_employee.dm | 3 +- .../modules/jobs/code/clinic/doctor.dm | 2 +- .../jobs/code/miscelllaneous/club_worker.dm | 2 - .../modules/jobs/code/supply/dealer.dm | 1 - .../splats/kindred_splat/kindred_splat.dm | 9 +- .../code/gifts/auspices/philodox.dm | 2 +- .../code/gifts/changing_breeds/ananasi.dm | 488 ++++++++++++++++++ .../code/gifts/innate/howling.dm | 9 +- .../werewolf_the_apocalypse/code/hud.dm | 41 +- .../code/preferences/breed.dm | 4 + .../preferences/customization/fur_color.dm | 3 + .../code/preferences/tribe.dm | 4 + .../code/species/fera_species.dm | 4 +- .../code/species/transformation.dm | 10 + .../code/splats/examine_text.dm | 22 +- .../code/splats/fera_splat.dm | 52 +- .../code/splats/is_werewolf_helpers.dm | 5 + .../code/splats/pref_lore.dm | 36 ++ .../code/subsplats/breeds/ananasi.dm | 30 ++ .../code/subsplats/breeds/garou.dm | 3 + .../code/subsplats/tribes/_tribe.dm | 15 +- .../code/subsplats/tribes/ananasi.dm | 85 +++ .../icons/ananasi_forms/crawlerling.dmi | Bin 0 -> 7475 bytes .../icons/ananasi_forms/lilian.dmi | Bin 0 -> 7448 bytes .../icons/ananasi_forms/pithus.dmi | Bin 0 -> 7448 bytes .../werewolf_the_apocalypse/icons/tribes.dmi | Bin 4248 -> 4043 bytes .../icons/werewolf_abilities.dmi | Bin 20008 -> 12138 bytes .../sounds/ananasi_transform.ogg | Bin 0 -> 68795 bytes .../sounds/gifts/altermood.ogg | Bin 0 -> 16018 bytes .../sounds/gifts/blood_of_pain.ogg | Bin 0 -> 22943 bytes .../sounds/gifts/blood_of_pain_pass.ogg | Bin 0 -> 15504 bytes .../modules/decor/code/agility_shortcut.dm | 2 +- tgstation.dme | 3 + .../character_preferences/darkpack_fera.tsx | 4 + 52 files changed, 900 insertions(+), 70 deletions(-) create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/changing_breeds/ananasi.dm create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/crawlerling.dmi create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/lilian.dmi create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/pithus.dmi create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/sounds/ananasi_transform.ogg create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/altermood.ogg create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain.ogg create mode 100644 modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain_pass.ogg diff --git a/code/__DEFINES/~darkpack/fera/fera.dm b/code/__DEFINES/~darkpack/fera/fera.dm index 21335a4fa333..c34d6dafc261 100644 --- a/code/__DEFINES/~darkpack/fera/fera.dm +++ b/code/__DEFINES/~darkpack/fera/fera.dm @@ -16,6 +16,9 @@ #define BREED_CORAX_HOMID "Corax Homid" #define BREED_CORVID "Corvid" +#define BREED_ANANASI_HOMID "Ananasi Homid" +#define BREED_ARACHNID "Arachnid" + #define FEATURE_FERA_FUR_COLOR "fera_fur_color" #define FEATURE_FERA_HAIR(splat_id) "fera_hair" + splat_id #define FEATURE_FERA_BODY(splat_id) "fera_body" + splat_id @@ -37,7 +40,15 @@ GLOBAL_ALIST_INIT(fera_fur_colors, alist( "green" = "green", "red" = "red", "gray" = "gray", - ) + ), + SPLAT_ANANASI = list( + "black" = "black", + "blue" = "blue", + "red" = "red", + "white" = "white", + "ginger" = "ginger", + "brown" = "brown", + ), )) #define STATUS_EFFECT_DELIRIUM /datum/status_effect/delirium diff --git a/code/__DEFINES/~darkpack/fera/werewolf_tribe.dm b/code/__DEFINES/~darkpack/fera/werewolf_tribe.dm index 1d2c927cce83..75b7ddf60ea3 100644 --- a/code/__DEFINES/~darkpack/fera/werewolf_tribe.dm +++ b/code/__DEFINES/~darkpack/fera/werewolf_tribe.dm @@ -16,8 +16,18 @@ #define TRIBE_STARGAZERS "Stargazers" #define TRIBE_BLACK_SPIRAL_DANCERS "Black Spiral Dancers" +#define TRIBE_SECEAN "Secean" +#define TRIBE_PLICARE "Plicare" +#define TRIBE_GADERIN "Gaderin" +#define TRIBE_AGERE "Agere" +#define TRIBE_ANOMIA "Anomia" +#define TRIBE_MALUM "Malum" +#define TRIBE_KAR "Kar" +#define TRIBE_AMARI_ALIQUID "Amari Aliquid" +#define TRIBE_CHYMOS "Chymos" + #define TRIBE_LIST_ALL list(TRIBE_RONIN, TRIBE_GALESTALKERS, TRIBE_CHILDREN_OF_GAIA, TRIBE_UKTENA, TRIBE_FIANNA, TRIBE_GET_OF_FENRIS, TRIBE_BLACK_FURIES, TRIBE_SILVER_FANGS, TRIBE_SILENT_STRIDERS, TRIBE_RED_TALONS, TRIBE_STARGAZERS, TRIBE_GLASS_WALKERS, TRIBE_BONE_GNAWERS, TRIBE_SHADOW_LORDS, TRIBE_BLACK_SPIRAL_DANCERS) #define TRIBE_LIST_GAIA list(TRIBE_GALESTALKERS, TRIBE_CHILDREN_OF_GAIA, TRIBE_UKTENA, TRIBE_FIANNA, TRIBE_GET_OF_FENRIS, TRIBE_BLACK_FURIES, TRIBE_SILVER_FANGS, TRIBE_SILENT_STRIDERS, TRIBE_RED_TALONS, TRIBE_STARGAZERS, TRIBE_GLASS_WALKERS, TRIBE_BONE_GNAWERS, TRIBE_SHADOW_LORDS) -#define TRIBE_LIST_WYLD list(TRIBE_GALESTALKERS, TRIBE_CHILDREN_OF_GAIA, TRIBE_UKTENA, TRIBE_FIANNA, TRIBE_GET_OF_FENRIS, TRIBE_BLACK_FURIES, TRIBE_SILVER_FANGS, TRIBE_SILENT_STRIDERS, TRIBE_RED_TALONS, TRIBE_STARGAZERS, TRIBE_SHADOW_LORDS) -#define TRIBE_LIST_WEAVER list(TRIBE_GLASS_WALKERS, TRIBE_BONE_GNAWERS) -#define TRIBE_LIST_WYRM list(TRIBE_BLACK_SPIRAL_DANCERS) +#define TRIBE_LIST_WYLD list(TRIBE_GALESTALKERS, TRIBE_CHILDREN_OF_GAIA, TRIBE_UKTENA, TRIBE_FIANNA, TRIBE_GET_OF_FENRIS, TRIBE_BLACK_FURIES, TRIBE_SILVER_FANGS, TRIBE_SILENT_STRIDERS, TRIBE_RED_TALONS, TRIBE_STARGAZERS, TRIBE_SHADOW_LORDS, TRIBE_KAR, TRIBE_AMARI_ALIQUID, TRIBE_CHYMOS) +#define TRIBE_LIST_WEAVER list(TRIBE_GLASS_WALKERS, TRIBE_BONE_GNAWERS, TRIBE_SECEAN, TRIBE_PLICARE, TRIBE_GADERIN) +#define TRIBE_LIST_WYRM list(TRIBE_BLACK_SPIRAL_DANCERS, TRIBE_AGERE, TRIBE_ANOMIA, TRIBE_MALUM) diff --git a/code/__DEFINES/~darkpack/signals_kindred.dm b/code/__DEFINES/~darkpack/signals_kindred.dm index 2b4f66a68af1..220c5f0a35dd 100644 --- a/code/__DEFINES/~darkpack/signals_kindred.dm +++ b/code/__DEFINES/~darkpack/signals_kindred.dm @@ -1,10 +1,11 @@ // This is the new signals file for every signal vampire related in WOD13 // New signals related to vampires and things vampires do should be defined here -///called in bloodsucking.dm at the end of /mob/living/carbon/human/proc/drinksomeblood +// WAS called in bloodsucking.dm at the end of /mob/living/carbon/human/proc/drinksomeblood, now +// handled by a trait check. this could still be useful for other things though so keeping this #define COMSIG_MOB_VAMPIRE_SUCKED "mob_vampire_sucked" ///vampire suck resisted - #define COMPONENT_RESIST_VAMPIRE_KISS (1<<0) + // #define COMPONENT_RESIST_VAMPIRE_KISS (1<<0) ///baali demons have touched the target, time to apply the effect from daimonion 4 #define COMSIG_BAALI_DEMON_REACHED_TARGET "baali_demon_reached_target" diff --git a/code/__DEFINES/~darkpack/splats.dm b/code/__DEFINES/~darkpack/splats.dm index ccdb0ba3296c..61ee0b2208e6 100644 --- a/code/__DEFINES/~darkpack/splats.dm +++ b/code/__DEFINES/~darkpack/splats.dm @@ -9,7 +9,8 @@ //#define SPLAT_FERA "splat_fera" #define SPLAT_GAROU "splat_garou" #define SPLAT_CORAX "splat_corax" -#define SPLAT_SHIFTERS list(SPLAT_GAROU, SPLAT_CORAX) +#define SPLAT_ANANASI "splat_ananasi" +#define SPLAT_SHIFTERS list(SPLAT_GAROU, SPLAT_CORAX, SPLAT_ANANASI) #define SPLAT_PRIO_HALFSPLAT 100 #define SPLAT_PRIO_SPLAT 200 diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 349c39035373..47e99460f18e 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -109,6 +109,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_SCARRING_RESISTANT "scarring_resistant"// Temporal scars wont save /// Stepping on glass shards immunity. Currently used for a couple Garou forms but could be used elsewhere. #define TRAIT_HARDENED_SOLES "hardened_soles" +// Splats that resist the affects of The Kiss +#define TRAIT_RESISTS_KISS "resists_kiss" #define TRAIT_IN_FRENZY "in_frenzy" @@ -165,6 +167,14 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_JAMMING_WEAPONS "jamming_weapons" #define TRAIT_NATURAL "natural" #define TRAIT_AURA_OF_CONFIDENCE "aura_of_confidence" +// Fera with no passive healing +#define TRAIT_NO_PASSIVE_HEALING "no_passive_healing" +// Wyrmling Kinship gift, per Changing Breeds - Ananasi Gifts - Hatar +#define TRAIT_WYRMLING_KINSHIP "wyrmling_kinship" +// Prevents bloodying, made for Groom gift, per Changing Breeds - Ananasi Gifts - Tenere +#define TRAIT_ALWAYS_CLEAN "always_clean" +// Blood Of Pain gift, per Changing Breeds - Ananasi Gifts - Hatar +#define TRAIT_BLOOD_OF_PAIN "blood_of_pain" /// Mob has had atleast one tooth yanked out while having no method of regenerating it. #define TRAIT_TOOTH_PULLED "tooth_pulled" diff --git a/code/__DEFINES/~darkpack/traits/sources.dm b/code/__DEFINES/~darkpack/traits/sources.dm index 80bfe711b295..e8e8e8ab87fb 100644 --- a/code/__DEFINES/~darkpack/traits/sources.dm +++ b/code/__DEFINES/~darkpack/traits/sources.dm @@ -5,6 +5,9 @@ #define GIFT_TRAIT "gift" +/// Trait given by a fera's Tribe +#define TRIBE_TRAIT "tribe" + #define STAKE_TRAIT "stake" #define DAMAGE_TRAIT "damage" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 5ec60bca7f14..1262115b7acb 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -696,12 +696,14 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_BRAIN_TRAUMA_IMMUNITY" = TRAIT_BRAIN_TRAUMA_IMMUNITY, "TRAIT_NECROPOLIS_WORSHIP" = TRAIT_NECROPOLIS_WORSHIP, "TRAIT_ACUTE_HEARING" = TRAIT_ACUTE_HEARING, // DARKPACK EDIT ADD - MERITS_FLAWS - ACUTE SENSE + "TRAIT_ALWAYS_CLEAN" = TRAIT_ALWAYS_CLEAN, // DARKPACK EDIT ADD - ANANASI "TRAIT_ANIMAL_MUSK" = TRAIT_ANIMAL_MUSK, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_AURA_OF_CONFIDENCE" = TRAIT_AURA_OF_CONFIDENCE, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_BANNED_TRANSFORMATION" = TRAIT_BANNED_TRANSFORMATION, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_BEACON_OF_THE_UNHOLY" = TRAIT_BEACON_OF_THE_UNHOLY, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_BETRAYERS_MARK" = TRAIT_BETRAYERS_MARK, // DARKPACK EDIT ADD - MERITS_FLAWS - (Tremere) "TRAIT_BLOODY_LOVER" = TRAIT_BLOODY_LOVER, // DARKPACK EDIT ADD + "TRAIT_BLOOD_OF_PAIN" = TRAIT_BLOOD_OF_PAIN, // DARKPACK EDIT ADD - ANANASI "TRAIT_BLOODY_SUCKER" = TRAIT_BLOODY_SUCKER, // DARKPACK EDIT ADD "TRAIT_BLUSH_OF_HEALTH" = TRAIT_BLUSH_OF_HEALTH, // DARKPACK EDIT ADD "TRAIT_BOND_WITHIN_THE_MOUNTAIN" = TRAIT_BOND_WITHIN_THE_MOUNTAIN, // DARKPACK EDIT ADD - POWERS - (Visceratika) @@ -765,6 +767,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NO_CUFF" = TRAIT_NO_CUFF, // DARKPACK EDIT ADD "TRAIT_NO_EYE_CONTACT" = TRAIT_NO_EYE_CONTACT, // DARKPACK EDIT ADD "TRAIT_NO_LYING_ANGLE" = TRAIT_NO_LYING_ANGLE, // DARKPACK EDIT ADD - WEREWOLF + "TRAIT_NO_PASSIVE_HEALING" = TRAIT_NO_PASSIVE_HEALING, // DARKPACK EDIT ADD - WEREWOLF - (Ananasi) "TRAIT_OBFUSCATED" = TRAIT_OBFUSCATED, // DARKPACK EDIT ADD "TRAIT_OPENS_MOONGATES" = TRAIT_OPENS_MOONGATES, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_ORGANOVORE" = TRAIT_ORGANOVORE, // DARKPACK EDIT ADD - Nagaraja @@ -779,6 +782,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_RAZOR_CLAWS" = TRAIT_RAZOR_CLAWS, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_REJECTED_BY_TECHNOLOGY" = TRAIT_REJECTED_BY_TECHNOLOGY, // DARKPACK EDIT ADD "TRAIT_REPELLED_BY_HOLINESS" = TRAIT_REPELLED_BY_HOLINESS, // DARKPACK EDIT ADD + "TRAIT_RESISTS_KISS" = TRAIT_RESISTS_KISS, // DARKPACK EDIT ADD "TRAIT_RUBICON" = TRAIT_RUBICON, // DARKPACK EDIT ADD "TRAIT_SANGUINE_INCONGRUITY" = TRAIT_SANGUINE_INCONGRUITY, // DARKPACK EDIT ADD - Giovanni Quirk "TRAIT_SCARRING_RESISTANT" = TRAIT_SCARRING_RESISTANT, // DARKPACK EDIT ADD @@ -814,6 +818,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_WEAK_DELIRIUM" = TRAIT_WEAK_DELIRIUM, // DARKPACK EDIT ADD - WEREWOLF - (corax) "TRAIT_WEAK_TO_DOMINATE" = TRAIT_WEAK_TO_DOMINATE, // DARKPACK EDIT ADD - POWERS - (Dominate) "TRAIT_WEAK_WILLED" = TRAIT_WEAK_WILLED, // DARKPACK EDIT ADD - MERITS_FLAWS + "TRAIT_WYRMLING_KINSHIP" = TRAIT_WYRMLING_KINSHIP, // DARKPACK EDIT ADD - ANANASI "TRAIT_WYRMTAINTED" = TRAIT_WYRMTAINTED, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_WYRMTAINTED_SPRITE" = TRAIT_WYRMTAINTED_SPRITE, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_ANTHROPIC_TASTE" = TRAIT_ANTHROPIC_TASTE, //DARKPACK EDIT ADD - MERITS_FLAWS diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 72ddcc7edcc1..123f35a96990 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -368,11 +368,13 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_RIGHT_EYE_SCAR" = TRAIT_RIGHT_EYE_SCAR, "TRAIT_CARPOTOXIN_IMMUNE" = TRAIT_CARPOTOXIN_IMMUNE, "TRAIT_ACUTE_HEARING" = TRAIT_ACUTE_HEARING, // DARKPACK EDIT ADD - MERITS_FLAWS - ACUTE SENSE + "TRAIT_ALWAYS_CLEAN" = TRAIT_ALWAYS_CLEAN, // DARKPACK EDIT ADD - ANANASI "TRAIT_ANIMAL_MUSK" = TRAIT_ANIMAL_MUSK, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_AURA_OF_CONFIDENCE" = TRAIT_AURA_OF_CONFIDENCE, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_BANNED_TRANSFORMATION" = TRAIT_BANNED_TRANSFORMATION, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_BEACON_OF_THE_UNHOLY" = TRAIT_BEACON_OF_THE_UNHOLY, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_BLOODY_LOVER" = TRAIT_BLOODY_LOVER, // DARKPACK EDIT ADD + "TRAIT_BLOOD_OF_PAIN" = TRAIT_BLOOD_OF_PAIN, // DARKPACK EDIT ADD - ANANASI "TRAIT_BLOODY_SUCKER" = TRAIT_BLOODY_SUCKER, // DARKPACK EDIT ADD "TRAIT_BLUSH_OF_HEALTH" = TRAIT_BLUSH_OF_HEALTH, // DARKPACK EDIT ADD "TRAIT_CALM_HEART" = TRAIT_CALM_HEART, // DARKPACK EDIT ADD - MERITS_FLAWS @@ -427,6 +429,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_NO_CUFF" = TRAIT_NO_CUFF, // DARKPACK EDIT ADD "TRAIT_NO_EYE_CONTACT" = TRAIT_NO_EYE_CONTACT, // DARKPACK EDIT ADD "TRAIT_NO_LYING_ANGLE" = TRAIT_NO_LYING_ANGLE, // DARKPACK EDIT ADD - WEREWOLF + "TRAIT_NO_PASSIVE_HEALING" = TRAIT_NO_PASSIVE_HEALING, // DARKPACK EDIT ADD - WEREWOLF - (Ananasi) "TRAIT_OBFUSCATED" = TRAIT_OBFUSCATED, // DARKPACK EDIT ADD "TRAIT_OPENS_MOONGATES" = TRAIT_OPENS_MOONGATES, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_PAINFUL_VAMPIRE_KISS" = TRAIT_PAINFUL_VAMPIRE_KISS, // DARKPACK EDIT ADD @@ -466,6 +469,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_WEAK_DELIRIUM" = TRAIT_WEAK_DELIRIUM, // DARKPACK EDIT ADD - WEREWOLF - (corax) "TRAIT_WEAK_TO_DOMINATE" = TRAIT_WEAK_TO_DOMINATE, // DARKPACK EDIT ADD - POWERS - (Dominate) "TRAIT_WEAK_WILLED" = TRAIT_WEAK_WILLED, // DARKPACK EDIT ADD - MERITS_FLAWS + "TRAIT_WYRMLING_KINSHIP" = TRAIT_WYRMLING_KINSHIP, // DARKPACK EDIT ADD - ANANASI "TRAIT_WYRMTAINTED" = TRAIT_WYRMTAINTED, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_WYRMTAINTED_SPRITE" = TRAIT_WYRMTAINTED_SPRITE, // DARKPACK EDIT ADD - WEREWOLF ), diff --git a/code/datums/components/bloodysoles.dm b/code/datums/components/bloodysoles.dm index daa4bbd164a7..0c1172d85f68 100644 --- a/code/datums/components/bloodysoles.dm +++ b/code/datums/components/bloodysoles.dm @@ -239,7 +239,7 @@ return /// The character is agile enough to not mess their clothing and hands just from one blood splatter at floor - if(HAS_TRAIT(wielder, TRAIT_LIGHT_STEP)) + if(HAS_TRAIT(wielder, TRAIT_LIGHT_STEP) || HAS_TRAIT(wielder, TRAIT_ALWAYS_CLEAN)) // APOC EDIT CHANGE - (#139 Ananasi) return // Don't share from other feetprints, not super realistic but I think it ruins the effect a bit diff --git a/code/modules/forensics/forensics_helpers.dm b/code/modules/forensics/forensics_helpers.dm index f72e0e75ab18..77d5d753ef48 100644 --- a/code/modules/forensics/forensics_helpers.dm +++ b/code/modules/forensics/forensics_helpers.dm @@ -190,6 +190,8 @@ ) if(QDELING(src)) return FALSE + if(HAS_TRAIT(src, TRAIT_ALWAYS_CLEAN)) // APOC EDIT CHANGE - (#139 Ananasi) + return FALSE if(!length(blood_DNA_to_add)) return FALSE @@ -237,6 +239,8 @@ /mob/living/add_blood_DNA(list/blood_DNA_to_add, list/datum/disease/diseases) if(QDELING(src)) return FALSE + if(HAS_TRAIT(src, TRAIT_ALWAYS_CLEAN)) // APOC EDIT CHANGE - (#139 Ananasi) + return FALSE if(!length(blood_DNA_to_add)) return FALSE if(isnull(forensics)) diff --git a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm index 10db1405eeac..bccac6c0dbcd 100644 --- a/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm +++ b/code/modules/mob/living/basic/space_fauna/spider/giant_spider/giant_spiders.dm @@ -596,3 +596,9 @@ AddElement(/datum/element/pet_bonus, "chitter") AddElement(/datum/element/ai_retaliate) ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT) + +// Ananasi Subtype +/mob/living/basic/spider/giant/arachnid + name = "spider" + desc = "Furry and black, it makes you shudder to look at it." + speak_emote = list("hiss") diff --git a/config/darkpack_config.txt b/config/darkpack_config.txt index 20ac46815817..7f29fc46884a 100644 --- a/config/darkpack_config.txt +++ b/config/darkpack_config.txt @@ -50,6 +50,18 @@ ROUNDSTART_SPLATS splat_ghoul ROUNDSTART_SPLATS splat_kinfolk ROUNDSTART_SPLATS splat_garou ROUNDSTART_SPLATS splat_corax +ROUNDSTART_SPLATS splat_ananasi + +#WHITELISTED_SPLATS splat_garou +#WHITELISTED_SPLATS splat_corax + +#WHITELISTED_CLANS baali +#WHITELISTED_CLANS healer_salubri +#WHITELISTED_CLANS warrior_salubri +#WHITELISTED_CLANS true_brujah +#WHITELISTED_CLANS cappadocian +#WHITELISTED_CLANS harbinger + #WHITELISTED_SPLATS splat_garou #WHITELISTED_SPLATS splat_corax diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/species_types/zombies.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/species_types/zombies.dm index 8544be718970..fd358863e301 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -13,7 +13,8 @@ TRAIT_NOBREATH, TRAIT_TOXIMMUNE, TRAIT_NOCRITDAMAGE, - TRAIT_FAKEDEATH + TRAIT_FAKEDEATH, + TRAIT_RESISTS_KISS ) //mutantbrain = /obj/item/organ/brain/vampire //to prevent brain transplant surgery //mutanteyes = /obj/item/organ/eyes/night_vision/zombie @@ -34,18 +35,7 @@ C.maxHealth = 300 //tanky C.health = 300 - //zombies resist vampire bites better than mortals - RegisterSignal(C, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_zombie_bitten)) ADD_TRAIT(C, TRAIT_MASQUERADE_VIOLATING_FACE, "zombie") -/datum/species/zombie/proc/on_zombie_bitten(datum/source, mob/living/carbon/being_bitten) - SIGNAL_HANDLER - - return COMPONENT_RESIST_VAMPIRE_KISS - -/datum/species/zombie/on_species_loss(mob/living/carbon/human/human, datum/species/new_species, pref_load) - . = ..() - UnregisterSignal(human, COMSIG_MOB_VAMPIRE_SUCKED) */ - #undef REGENERATION_DELAY diff --git a/modular_darkpack/modules/blood_drinking/code/drinksomeblood.dm b/modular_darkpack/modules/blood_drinking/code/drinksomeblood.dm index 86e13b1e75f1..0f252e68c53a 100644 --- a/modular_darkpack/modules/blood_drinking/code/drinksomeblood.dm +++ b/modular_darkpack/modules/blood_drinking/code/drinksomeblood.dm @@ -43,7 +43,7 @@ if(!do_after(src, 3 SECONDS, target = drunk_from, timed_action_flags = NONE, show_progress = FALSE)) remove_drinking_overlay(drunk_from) - if(!(SEND_SIGNAL(drunk_from, COMSIG_MOB_VAMPIRE_SUCKED, drunk_from) & COMPONENT_RESIST_VAMPIRE_KISS)) + if(get_kindred_splat(src) && !HAS_TRAIT(src, TRAIT_PAINFUL_VAMPIRE_KISS) && !HAS_TRAIT(drunk_from, TRAIT_RESISTS_KISS)) drunk_from.apply_status_effect(/datum/status_effect/kissed) return @@ -74,6 +74,17 @@ remove_drinking_overlay(drunk_from) return + if(get_ananasi_splat(drunk_from)) + to_chat(src, span_userdanger("Something is WRONG with [drunk_from]'s blood!")) + visible_message(span_danger("[src] throws up!"), span_userdanger("You throw up!")) + playsound(get_turf(src), 'modular_darkpack/modules/deprecated/sounds/vomit.ogg', 75, TRUE) + if(isturf(loc)) + add_splatter_floor(loc) + remove_drinking_overlay(drunk_from) + if(HAS_TRAIT(drunk_from, TRAIT_BLOOD_OF_PAIN)) + apply_status_effect(/datum/status_effect/blood_of_pain) + return + if(get_kindred_splat(drunk_from)) to_chat(src, span_userdanger("[drunk_from]'s blood tastes HEAVENLY...")) adjust_brute_loss(-25, TRUE) diff --git a/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm b/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm index eb42ed870a9b..202eb403f535 100644 --- a/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm +++ b/modular_darkpack/modules/blood_drinking/code/vamp_bite.dm @@ -6,10 +6,15 @@ if(grab_state > GRAB_PASSIVE) if(isliving(pulling)) var/mob/living/bit_living = pulling - if(!get_vampire_splat(src)) + if(!get_vampire_splat(src) && !get_ananasi_splat(src)) SEND_SOUND(src, sound('modular_darkpack/modules/blood_drinking/sounds/need_blood.ogg', volume = 75)) to_chat(src, span_warning("You're not desperate enough to try that.")) return + if(get_ananasi_splat(src)) + if(get_kindred_splat(bit_living)) + SEND_SOUND(src, sound('modular_darkpack/modules/blood_drinking/sounds/need_blood.ogg', volume = 75)) + to_chat(src, span_warning("This BLOOD is toxic to you!")) + return // Allow ghouls to steal viate? if(get_ghoul_splat(src)) if(!get_kindred_splat(bit_living)) @@ -78,7 +83,9 @@ if(get_kindred_splat(src)) bit_living.emote("groan") - else if(get_ghoul_splat(src)) + if(get_ghoul_splat(src)) + bit_living.emote("scream") + if(get_ananasi_splat(src)) bit_living.emote("scream") if(ishuman(bit_living)) diff --git a/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm b/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm index 63a065df7e44..3699333c25be 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/bruiser.dm @@ -32,7 +32,8 @@ JOB_BRUISER ) // allowed_clans = list(VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL) + allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_ANANASI) + splat_slots = list(SPLAT_ANANASI = 1) // maximal_generation = 9 // maximum_immortal_age = 200 description = "You are the enforcer of the Anarchs. The baron is always in need of muscle power. Enforce the Status Perfectus. You can find the Anarch haven under the Dragonsbreath Smokeshop." diff --git a/modular_darkpack/modules/jobs/code/anarchs/tapster.dm b/modular_darkpack/modules/jobs/code/anarchs/tapster.dm index 2b11d9722d18..e28bc7c93bc4 100644 --- a/modular_darkpack/modules/jobs/code/anarchs/tapster.dm +++ b/modular_darkpack/modules/jobs/code/anarchs/tapster.dm @@ -32,8 +32,8 @@ JOB_SWEEPER, JOB_TAPSTER ) - allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL, SPLAT_KINDRED) - splat_slots = list(SPLAT_NONE = 2, SPLAT_GHOUL = 2, SPLAT_KINDRED = 1) + allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL, SPLAT_KINDRED, SPLAT_ANANASI) + splat_slots = list(SPLAT_NONE = 2, SPLAT_GHOUL = 2, SPLAT_ANANASI = 1, SPLAT_KINDRED = 1) // maximum_immortal_age = 5 description = "You have been given keys to the DragonsBreath Smokeshop, but are not trusted to hold a real title. You are either a ghoul, a doll, a fledgeling, or someone impersonating one of the three." // APOC EDIT CHANGE - JOBS minimum_masquerade = 0 diff --git a/modular_darkpack/modules/jobs/code/camarilla/hound.dm b/modular_darkpack/modules/jobs/code/camarilla/hound.dm index e190a10584fc..709b6ea87242 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/hound.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/hound.dm @@ -19,8 +19,9 @@ // maximal_generation = 9 // maximum_immortal_age = 200 minimum_masquerade = 3 - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL) + allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_ANANASI) // allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) + splat_slots = list(SPLAT_ANANASI = 1) known_contacts = list( JOB_PRINCE, diff --git a/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm b/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm index daf219de28d0..d89eeb1c8e81 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/tower_employee.dm @@ -30,8 +30,9 @@ JOB_HOUND, JOB_TOWERWORK ) - allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL, SPLAT_KINDRED) + allowed_splats = list(SPLAT_NONE, SPLAT_GHOUL, SPLAT_KINDRED, SPLAT_ANANASI) // allowed_clans = list(VAMPIRE_CLAN_TRUE_BRUJAH, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_GARGOYLE, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_CAPPADOCIAN, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_SAMEDI, VAMPIRE_CLAN_NAGARAJA) + splat_slots = list(SPLAT_ANANASI = 1) description = "You work directly for the Millenium Tower and its administrative staff in a variety of ways, you may even be a personal retainer of one of the top three, to the point that any oddities that you may see over night or hear are either things you are already aware or you simply laugh them off and try not to think about it." minimum_masquerade = 3 diff --git a/modular_darkpack/modules/jobs/code/clinic/doctor.dm b/modular_darkpack/modules/jobs/code/clinic/doctor.dm index 20d6b55deaa7..b507ffcc1731 100644 --- a/modular_darkpack/modules/jobs/code/clinic/doctor.dm +++ b/modular_darkpack/modules/jobs/code/clinic/doctor.dm @@ -21,7 +21,7 @@ description = "Work your job at the Ocean Clinic. Help patients, keep a tidy space, and uphold high standards of care." // maximal_generation = 9 // maximum_immortal_age = 200 - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_KINFOLK, SPLAT_NONE, SPLAT_CORAX, SPLAT_GAROU) + allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_KINFOLK, SPLAT_NONE, SPLAT_CORAX, SPLAT_GAROU, SPLAT_ANANASI) // allowed_clans = list(VAMPIRE_CLAN_WARRIOR_SALUBRI, VAMPIRE_CLAN_DAUGHTERS_OF_CACOPHONY, VAMPIRE_CLAN_HEALER_SALUBRI, VAMPIRE_CLAN_BAALI, VAMPIRE_CLAN_BRUJAH, VAMPIRE_CLAN_TREMERE, VAMPIRE_CLAN_VENTRUE, VAMPIRE_CLAN_VENTRUE_ANTITRIBU, VAMPIRE_CLAN_NOSFERATU, VAMPIRE_CLAN_GANGREL, VAMPIRE_CLAN_CITY_GANGREL, VAMPIRE_CLAN_TOREADOR, VAMPIRE_CLAN_MALKAVIAN, VAMPIRE_CLAN_DOMINATE_MALKAVIAN, VAMPIRE_CLAN_BANU_HAQIM, VAMPIRE_CLAN_BANU_HAQIM_VIZIER, VAMPIRE_CLAN_GIOVANNI, VAMPIRE_CLAN_SETITE, VAMPIRE_CLAN_TLACIQUE, VAMPIRE_CLAN_TZIMISCE, VAMPIRE_CLAN_LASOMBRA, VAMPIRE_CLAN_CAITIFF, VAMPIRE_CLAN_KIASYD, VAMPIRE_CLAN_NAGARAJA) alt_titles = list( diff --git a/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm b/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm index cb42c6c94141..e35a7785a6c6 100644 --- a/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm +++ b/modular_darkpack/modules/jobs/code/miscelllaneous/club_worker.dm @@ -26,8 +26,6 @@ "Club Attendant" ) - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_KINFOLK, SPLAT_NONE) - maximal_generation = 9 maximum_immortal_age = 200 description = "Offer strip club services. Some of your clientele may be... Unusual, but you are either addicted to vampire bites, or bribed to listen little and say even less." diff --git a/modular_darkpack/modules/jobs/code/supply/dealer.dm b/modular_darkpack/modules/jobs/code/supply/dealer.dm index 146f53afdc14..4f9e47f1e359 100644 --- a/modular_darkpack/modules/jobs/code/supply/dealer.dm +++ b/modular_darkpack/modules/jobs/code/supply/dealer.dm @@ -25,7 +25,6 @@ JOB_HARPY, JOB_EMISSARY ) - allowed_splats = list(SPLAT_KINDRED, SPLAT_GHOUL, SPLAT_GAROU, SPLAT_NONE) splat_slots = list(SPLAT_NONE = 1) description = "You provide both legal and illegal supplies to those that get busy during the night. You are your own person yet you know people are out for you. Time to buckle in..." minimum_masquerade = 0 diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm b/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm index d970cc1fcc0b..784ab18f878f 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm @@ -18,6 +18,7 @@ TRAIT_DRINKS_BLOOD, TRAIT_PALE_AURA, TRAIT_SCARRING_RESISTANT, + TRAIT_RESISTS_KISS, ) splat_actions = list( /datum/action/cooldown/mob_cooldown/give_vitae, @@ -73,9 +74,6 @@ //vampires don't die while in crit, they just slip into torpor after 2 minutes of being critted RegisterSignal(owner, COMSIG_MOB_STATCHANGE, PROC_REF(handle_enter_critical_condition)) - //vampires resist vampire bites better than mortals - RegisterSignal(owner, COMSIG_MOB_VAMPIRE_SUCKED, PROC_REF(on_vampire_bitten)) - // Apply bashing damage resistance RegisterSignal(owner, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(damage_resistance)) @@ -110,7 +108,6 @@ UnregisterSignal(owner, list( COMSIG_CARBON_LOSE_ORGAN, COMSIG_MOB_STATCHANGE, - COMSIG_MOB_VAMPIRE_SUCKED, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, COMSIG_HUMAN_ON_HANDLE_BLOOD, COMSIG_PATH_HIT, @@ -207,13 +204,11 @@ /** * On being bit by a vampire * - * This handles vampire bite sleep immunity and any future special interactions. + * This handles any future special interactions. Vampire bite immunity is now handled by TRAIT_RESISTS_KISS. */ /datum/splat/vampire/kindred/proc/on_vampire_bitten(datum/source, mob/living/carbon/being_bitten) SIGNAL_HANDLER - return COMPONENT_RESIST_VAMPIRE_KISS - /datum/splat/vampire/kindred/proc/kindred_blood(mob/living/carbon/human/kindred, seconds_per_tick, times_fired) SIGNAL_HANDLER diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/auspices/philodox.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/auspices/philodox.dm index a9344b5e2184..14bf25741e3e 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/auspices/philodox.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/auspices/philodox.dm @@ -1,7 +1,7 @@ /datum/action/cooldown/power/gift/resist_pain name = "Resist Pain" - desc = "Through force of will, the Philodox is able to ignore the pain of his wounds and continue acting normally." + desc = "Through force of will, the Fera is able to ignore the pain of their wounds and continue acting normally." button_icon_state = "resist_pain" rank = 1 willpower_cost = 1 diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/changing_breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/changing_breeds/ananasi.dm new file mode 100644 index 000000000000..7b367315732d --- /dev/null +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/changing_breeds/ananasi.dm @@ -0,0 +1,488 @@ +#define ALTER_MOOD_ENHANCE "Enhance" +#define ALTER_MOOD_DAMPEN "Dampen" +#define ANANASI_COCOON_TRAIT "ananasi_cocoon" + +/datum/action/cooldown/power/gift/bloodheal + name = "Blood Heal" + desc = "The Ananasi can heal their wounds by drawing on their own blood." + button_icon_state = "bloodheal" + click_to_activate = FALSE + rank = 1 + handles_spend_resources = FALSE + +/datum/action/cooldown/power/gift/bloodheal/can_afford(feedback) + var/mob/living/human_owner = astype(owner) + if(!human_owner) + return ..() + if(human_owner.bloodpool < 1) + if(feedback) + to_chat(owner, span_warning("You don't have enough blood to cast [src]!")) + return FALSE + return ..() + +/datum/action/cooldown/power/gift/bloodheal/spend_resources() + var/mob/living/human_owner = astype(owner) + . = ..() + if(human_owner) + human_owner.adjust_blood_pool(-1) + +/datum/action/cooldown/power/gift/bloodheal/Activate(atom/target) + var/mob/living/human_owner = astype(owner) + if(!human_owner) + return FALSE + if(!do_after(human_owner, 1 TURNS)) + return FALSE + + . = ..() + + playsound(owner, 'modular_darkpack/modules/vampire_the_masquerade/sounds/bloodhealing.ogg', 50, FALSE) + human_owner.heal_ordered_damage(30, list(BRUTE, TOX, OXY, STAMINA)) + human_owner.heal_ordered_damage(6, list(BURN, AGGRAVATED)) + human_owner.update_damage_overlays() + human_owner.update_health_hud() + return TRUE + +/datum/action/cooldown/power/gift/spin_web + name = "Spin Web" + desc = "The Ananasi in Pithus form can break down stored blood and spin very strong, very durable webs." + button_icon_state = "spin_web" + click_to_activate = FALSE + rank = 1 + handles_spend_resources = FALSE + + // /tg/ giant spider web actions! minus reflector, spikes, and effigy bc they don't really fit + var/static/list/web_action_choices = list( + /datum/action/cooldown/mob_cooldown/lay_web, + /datum/action/cooldown/mob_cooldown/lay_web/solid_web, + /datum/action/cooldown/mob_cooldown/lay_web/web_passage, + /datum/action/cooldown/mob_cooldown/lay_web/sticky_web, + /datum/action/cooldown/mob_cooldown/wrap/ananasi_cocoon, + ) + +/datum/action/cooldown/power/gift/spin_web/can_afford(feedback) + var/mob/living/human_owner = astype(owner) + if(!human_owner) + return ..() + if(human_owner.bloodpool < 1) + if(feedback) + to_chat(owner, span_warning("You don't have enough blood to cast [src]!")) + return FALSE + return ..() + +/datum/action/cooldown/power/gift/spin_web/spend_resources() + var/mob/living/human_owner = astype(owner) + . = ..() + if(human_owner) + human_owner.adjust_blood_pool(-1) + +// only pithus form can spin webs. crawlerling can too but not to any significant effect +/datum/action/cooldown/power/gift/spin_web/proc/in_valid_form(mob/living/carbon/human/human_owner) + var/datum/species/human/shifter/shifter_species = human_owner.dna?.species + if(!istype(shifter_species)) + return FALSE + return (shifter_species.id == SPECIES_FERA_DIRE) + +/datum/action/cooldown/power/gift/spin_web/Activate(atom/target) + var/mob/living/carbon/human/human_owner = astype(owner) + if(!human_owner) + return FALSE + if(!in_valid_form(human_owner)) + to_chat(owner, span_warning("You must be in Pithus form to spin webs!")) + return FALSE + + var/list/choices = list() + var/list/name_to_type = list() + for(var/datum/action/cooldown/mob_cooldown/web_action_type as anything in web_action_choices) + var/datum/radial_menu_choice/option = new + option.image = image(icon = initial(web_action_type.button_icon), icon_state = initial(web_action_type.button_icon_state)) + option.info = span_boldnotice(initial(web_action_type.name)) + name_to_type[initial(web_action_type.name)] = web_action_type + choices[initial(web_action_type.name)] = option + + var/picked_name = show_radial_menu(human_owner, human_owner, choices, tooltips = TRUE) + var/chosen_type = name_to_type[picked_name] + if(!chosen_type) + return FALSE + + . = ..() + + var/datum/action/cooldown/mob_cooldown/action_instance = new chosen_type() + action_instance.owner_has_control = FALSE + action_instance.Grant(human_owner) + action_instance.Trigger(human_owner, NONE) + if(!action_instance.click_to_activate) + action_instance.Remove(human_owner) + qdel(action_instance) + return TRUE + +// the people demanded cocoon wrapping +/datum/action/cooldown/mob_cooldown/wrap/ananasi_cocoon + name = "Cocoon" + desc = "Wrap a nearby target in a cocoon, restraining them until they can force their way free. While restrained, you may drain them of their blood." + +/datum/action/cooldown/mob_cooldown/wrap/ananasi_cocoon/wrap_target(mob/living/to_wrap) + var/mob/living/cocoon_owner = owner + var/obj/structure/spider/cocoon/ananasi/casing = new(to_wrap.loc) + to_wrap.forceMove(casing) + ADD_TRAIT(to_wrap, TRAIT_HANDS_BLOCKED, ANANASI_COCOON_TRAIT) + if(isliving(to_wrap) && (to_wrap.mob_biotypes & MOB_HUMANOID)) + casing.icon_state = pick("cocoon_large1", "cocoon_large2", "cocoon_large3") + else + casing.icon_state = pick("cocoon1", "cocoon2", "cocoon3") + cocoon_owner?.visible_message( + span_notice("[cocoon_owner] wraps [to_wrap] tightly in silk!"), + span_notice("You finish wrapping [to_wrap] into a cocoon."), + ) + +/datum/action/cooldown/mob_cooldown/wrap/ananasi_cocoon/cocoon(atom/movable/to_wrap) + var/mob/living/cocoon_owner = owner + . = ..() + Remove(cocoon_owner) + qdel(src) + +/obj/structure/spider/cocoon/ananasi + name = "silken cocoon" + desc = "A cocoon of dense spider silk. Something is bound within, struggling weakly." + +/obj/structure/spider/cocoon/ananasi/Destroy() + for(var/mob/living/trapped_mob in contents) + REMOVE_TRAIT(trapped_mob, TRAIT_HANDS_BLOCKED, ANANASI_COCOON_TRAIT) + return ..() + +// per ananasi breedbook, webs resist Strength rolls with an effective Strength of 9 +/obj/structure/spider/cocoon/ananasi/container_resist_act(mob/living/user) + user.changeNext_move(CLICK_CD_BREAKOUT) + user.last_special = world.time + CLICK_CD_BREAKOUT + user.visible_message( + span_warning("[user] strains against the webbing, trying to break free!"), + span_notice("You strain against the sticky bonds..."), + ) + var/datum/storyteller_roll/escape_roll = new() + escape_roll.applicable_stats = list(STAT_STRENGTH) + escape_roll.difficulty = 9 + escape_roll.roll_output_type = ROLL_PRIVATE + + if(QDELETED(src) || user.loc != src) + return + if(escape_roll.st_roll(user, user) != ROLL_SUCCESS) + to_chat(user, span_warning("You fail to break free of the webbing!")) + user.Stun(6 SECONDS) + return + + REMOVE_TRAIT(user, TRAIT_HANDS_BLOCKED, ANANASI_COCOON_TRAIT) + user.forceMove(get_turf(src)) + qdel(src) + +/obj/structure/spider/cocoon/ananasi/attack_hand(mob/user, list/modifiers) + . = ..() + if(.) + return + var/mob/living/living_user = astype(user) + if(living_user?.combat_mode) + var/datum/storyteller_roll/tear_roll = new() + tear_roll.applicable_stats = list(STAT_STRENGTH) + tear_roll.difficulty = 9 + tear_roll.roll_output_type = ROLL_PUBLIC + living_user.visible_message( + span_danger("[living_user] starts tearing [src] apart!"), + span_danger("You start tearing [src] apart!"), + ) + if(!do_after(living_user, 3 SECONDS, target = src)) + return + if(QDELETED(src)) + return + if(tear_roll.st_roll(user, user) != ROLL_SUCCESS) + to_chat(user, span_warning("You fail to tear through the silk!")) + return + living_user.visible_message( + span_danger("[living_user] rips [src] to shreds!"), + span_danger("You rip [src] to shreds!"), + ) + qdel(src) + return + var/mob/living/attacker = astype(user) + if(!attacker || !get_ananasi_splat(attacker)) + return + var/mob/living/victim = locate(/mob/living) in contents + if(!victim) + return + if(get_kindred_splat(victim)) + to_chat(attacker, span_warning("[victim]'s blood would be toxic to you!")) + return + if(victim.blood_volume <= 0) + to_chat(attacker, span_warning("[victim] has no more blood left to drain!")) + return + playsound(src, 'modular_darkpack/modules/blood_drinking/sounds/drinkblood1.ogg', 50, TRUE) + attacker.visible_message( + span_danger("[attacker] sinks its fangs into [victim] through the cocoon!"), + span_danger("You begin drinking the blood from [victim]!"), + ) + if(!do_after(attacker, 6 SECONDS, target = src)) + return + if(QDELETED(src) || QDELETED(victim) || (victim.loc != src)) + return + attacker.adjust_blood_pool(2) + victim.adjust_blood_pool(-2) + victim.adjust_blood_volume(-112) + log_combat(attacker, victim, "drained the blood from") + to_chat(attacker, span_notice("You finish drinking [victim]'s blood.")) + +/datum/action/cooldown/power/gift/stolen_moments + name = "Stolen Moments" + desc = "This Gift allows the Ananasi to literally steal away the last few minutes of memories from another being." + button_icon_state = "stolen_moments" + click_to_activate = TRUE + rank = 1 + + gnosis_cost = 1 + +/datum/action/cooldown/power/gift/stolen_moments/Activate(atom/target) + var/mob/living/living_target = astype(target) + if(!living_target) + return FALSE + . = ..() + + var/datum/splat/werewolf/shifter/shifter_splat = get_shifter_splat(owner) + var/datum/subsplat/werewolf/breed_form/breed = shifter_splat?.breed_form + var/datum/storyteller_roll/roll_datum = new() + roll_datum.difficulty = living_target.st_get_stat(STAT_TEMPORARY_WILLPOWER) + roll_datum.roll_output_type = ROLL_PRIVATE_AND_TARGET + var/roll_result = roll_datum.st_roll(owner, target, breed?.start_gnosis || 0) + + if(roll_result != ROLL_SUCCESS) + return + + SEND_SOUND(target, sound('modular_darkpack/modules/powers/sounds/dominate.ogg', volume = 50)) + SEND_SIGNAL(target, COMSIG_ALL_MASQUERADE_REINFORCE) + to_chat(target, span_hypnophrase("At [owner]'s touch, the last fifteen minutes of your memory are stolen away. You feel a sense of confusion and disorientation as you struggle to recall what just happened.")) + log_combat(owner, target, "used Stolen Moments on") + + StartCooldown() + return TRUE + +/datum/action/cooldown/power/gift/breath_of_the_wyld/inspire + name = "Inspire" + desc = "The Ananasi instills a target with a rush of lucidity." + +/datum/action/cooldown/power/gift/breath_of_the_wyld/inspire/Activate(atom/target) + if(!isliving(target)) + return + if(!(target in range(1, owner))) + return + + . = ..() + + var/mob/living/victim = target + var/mob/living/caster = owner + var/datum/splat/werewolf/casting_splat = get_werewolf_splat(caster) + var/roll_difficulty = get_werewolf_splat(target) ? 5 : 6 + if(!roll_datum) + roll_datum = new() + roll_datum.difficulty = roll_difficulty + roll_datum.roll_output_type = ROLL_PRIVATE_AND_TARGET + var/roll_result = roll_datum.st_roll(caster, target, casting_splat.gnosis) + + if(roll_result != ROLL_SUCCESS) + return + + victim.apply_status_effect(/datum/status_effect/breath_of_the_wyld) + + StartCooldown() + return TRUE + +/datum/status_effect/breath_of_the_wyld + id = "breath_of_the_wyld" + duration = 1 SCENES + + status_type = STATUS_EFFECT_REPLACE + + alert_type = /atom/movable/screen/alert/status_effect/breath_of_the_wyld + +/datum/status_effect/breath_of_the_wyld/on_apply() + owner.st_add_stat_mod(STAT_PERCEPTION, 1, type) + owner.st_add_stat_mod(STAT_INTELLIGENCE, 1, type) + owner.st_add_stat_mod(STAT_WITS, 1, type) + ADD_TRAIT(owner, TRAIT_DIFFICULT_RAGE, type) + to_chat(owner, span_notice("You feel a sense of heightened lucidity.")) + return TRUE + +/datum/status_effect/breath_of_the_wyld/on_remove() + owner.st_remove_stat_mod(STAT_PERCEPTION, type) + owner.st_remove_stat_mod(STAT_INTELLIGENCE, type) + owner.st_remove_stat_mod(STAT_WITS, type) + REMOVE_TRAIT(owner, TRAIT_DIFFICULT_RAGE, type) + to_chat(owner, span_warning("Your mind settles, returning to it's normal state of lucidity.")) + +/atom/movable/screen/alert/status_effect/breath_of_the_wyld/inspire + name = "Inspire" + desc = "Gain an additional die to all mental checks, but suffer a penalty to rage check difficulty." + icon = 'modular_darkpack/modules/deprecated/icons/hud/screen_alert.dmi' + icon_state = "riddle" // TODO: get an icon for this + +/datum/action/cooldown/power/gift/alter_mood + name = "Alter Mood" + desc = "The Wyrsta can enhance or dampen the mood of a single individual." + button_icon_state = "alter_mood" + click_to_activate = TRUE + rank = 1 + gnosis_cost = 1 + var/alter_types = list(ALTER_MOOD_ENHANCE, ALTER_MOOD_DAMPEN) + +/datum/action/cooldown/power/gift/alter_mood/Activate(atom/target) + var/mob/living/living_target = astype(target) + if(!living_target) + return FALSE + + var/alter_type_selected = tgui_input_list(owner, "How do you want to alter the target's mood?", "Alter Mood Type Selection", alter_types, ALTER_MOOD_ENHANCE) + if(!alter_type_selected) + return FALSE + + . = ..() + + switch(alter_type_selected) + if(ALTER_MOOD_ENHANCE) + SEND_SOUND(target, sound('modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/altermood.ogg', volume = 50)) + to_chat(living_target, span_boldnotice("An odd warmth spreads through your mind, heightening your emotional state. Any emotional highs or lows are suddenly more intense and extreme.")) + log_combat(owner, target, "used Alter Mood (Enhance) on") + if(ALTER_MOOD_DAMPEN) + SEND_SOUND(target, sound('modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/altermood.ogg', volume = 50)) + to_chat(living_target, span_boldwarning("An odd numbness sets over your mind, dulling your emotional state. Any extreme emotional highs or lows are suddenly muted to a more moderate, mundane level.")) + log_combat(owner, target, "used Alter Mood (Dampen) on") + + StartCooldown() + return TRUE + +/datum/action/cooldown/power/gift/blood_of_pain + name = "Blood of Pain" + desc = "The Hatar turns their blood into debilitating poison." + button_icon_state = "blood_of_pain" + rank = 1 + +/datum/action/cooldown/power/gift/blood_of_pain/Grant(mob/granted_to) + . = ..() + ADD_TRAIT(granted_to, TRAIT_BLOOD_OF_PAIN, GIFT_TRAIT) + +/datum/action/cooldown/power/gift/blood_of_pain/Activate(atom/target) + . = ..() + + if(HAS_TRAIT_FROM(owner, TRAIT_BLOOD_OF_PAIN, GIFT_TRAIT)) + REMOVE_TRAIT(owner, TRAIT_BLOOD_OF_PAIN, GIFT_TRAIT) + to_chat(owner, span_notice("Your blood is no longer poisonous.")) + else + ADD_TRAIT(owner, TRAIT_BLOOD_OF_PAIN, GIFT_TRAIT) + to_chat(owner, span_notice("Your blood is now poisonous.")) + +/atom/movable/screen/alert/status_effect/blood_of_pain + name = "Blood of Pain" + desc = "The blood you have consumed is causing you horrible agony!" + icon = 'modular_darkpack/modules/deprecated/icons/hud/screen_alert.dmi' + icon_state = "default" + +/datum/status_effect/blood_of_pain + duration = 3 MINUTES + tick_interval = 5 SECONDS + status_type = STATUS_EFFECT_UNIQUE + alert_type = /atom/movable/screen/alert/status_effect/blood_of_pain + +/datum/status_effect/blood_of_pain/tick(seconds_between_ticks) + var/datum/storyteller_roll/stamina_roll = new() + stamina_roll.applicable_stats = list(STAT_STAMINA) + stamina_roll.difficulty = 6 + stamina_roll.roll_output_type = ROLL_PRIVATE + stamina_roll.spammy_roll = TRUE + if(stamina_roll.st_roll(owner, owner) != ROLL_SUCCESS) + to_chat(owner, span_danger("THE AGONY IS UNBEARABLE!")) + SEND_SOUND(owner, sound('modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain.ogg', volume = 75)) + owner.Stun(5 SECONDS) + else + SEND_SOUND(owner, sound('modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain_pass.ogg', volume = 75)) + +/datum/status_effect/blood_of_pain/on_apply() + to_chat(owner, span_danger("You feel horrible after drinking that blood...")) + return TRUE + +/datum/status_effect/blood_of_pain/on_remove() + to_chat(owner, span_danger("The agonizing pain subsides.")) + +/datum/action/cooldown/power/gift/blood_of_pain/Remove(mob/removed_from) + . = ..() + REMOVE_TRAIT(removed_from, TRAIT_BLOOD_OF_PAIN, GIFT_TRAIT) + +/datum/action/cooldown/power/gift/beneath_notice + name = "Beneath Notice" + desc = "The Tenere can make an object blend into the surrounding area." + button_icon_state = "beneath_notice" + click_to_activate = TRUE + rank = 1 + gnosis_cost = 1 + + var/hide_duration = 180 MINUTES + var/alpha_reduction = 220 + var/list/hidden_targets = list() + +/datum/action/cooldown/power/gift/beneath_notice/Activate(atom/movable/target) + if(!isobj(target) && !isitem(target)) + return FALSE + if(hidden_targets[target]) + remove_beneath_notice(target) + to_chat(owner, span_warning("[target] is revealed!")) + StartCooldown() + return TRUE + + . = ..() + + target.alpha = max(target.alpha - alpha_reduction, 0) + ADD_TRAIT(target, TRAIT_EXAMINE_SKIP, GIFT_TRAIT) + + if(isitem(target) && ismob(target.loc)) + var/obj/item/worn_item = target + var/mob/wearer = target.loc + wearer.update_clothing(worn_item.slot_flags) + + var/list/existing = list() + hidden_targets[target] = existing + RegisterSignal(target, COMSIG_QDELETING, PROC_REF(on_target_deleted)) + + existing["timer"] = addtimer(CALLBACK(src, PROC_REF(remove_beneath_notice), target), hide_duration, TIMER_STOPPABLE) + + to_chat(owner, span_info("[target] is now hidden from sight.")) + StartCooldown() + return TRUE + +/datum/action/cooldown/power/gift/beneath_notice/proc/remove_beneath_notice(atom/movable/target) + var/list/existing = hidden_targets[target] + if(!existing) + return + hidden_targets -= target + UnregisterSignal(target, COMSIG_QDELETING) + + target.alpha = min(target.alpha + alpha_reduction, 255) + REMOVE_TRAIT(target, TRAIT_EXAMINE_SKIP, GIFT_TRAIT) + + if(isitem(target) && ismob(target.loc)) + var/obj/item/worn_item = target + var/mob/wearer = target.loc + wearer.update_clothing(worn_item.slot_flags) + +/datum/action/cooldown/power/gift/beneath_notice/proc/on_target_deleted(atom/movable/target) + SIGNAL_HANDLER + var/list/existing = hidden_targets[target] + if(!existing) + return + + if(isitem(target) && ismob(target.loc)) + var/obj/item/worn_item = target + var/mob/wearer = target.loc + wearer.update_clothing(worn_item.slot_flags) + + hidden_targets -= target + deltimer(existing["timer"]) + REMOVE_TRAIT(target, TRAIT_EXAMINE_SKIP, GIFT_TRAIT) + + + +#undef ALTER_MOOD_ENHANCE +#undef ALTER_MOOD_DAMPEN +#undef ANANASI_COCOON_TRAIT + + diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/innate/howling.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/innate/howling.dm index 92136aa6ff92..411f88665099 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/innate/howling.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/gifts/innate/howling.dm @@ -4,42 +4,35 @@ button_icon_state = "call_of_the_wyld" rage_cost = 1 check_flags = null - innate_ability = TRUE + innate_ability = FALSE var/static/list/howls = list( "attack" = list( "menu" = "Attack", SPLAT_GAROU = "A wolf howls a fierce call to attack", - SPLAT_CORAX = "A raven hisses a fierce call to attack" ), "retreat" = list( "menu" = "Retreat", SPLAT_GAROU = "A wolf howls a warning to retreat", - SPLAT_CORAX = "A raven squawks a warning to retreat" ), "help" = list( "menu" = "Help", SPLAT_GAROU = "A wolf howls a desperate plea for help", - SPLAT_CORAX = "A raven shrieks a a desperate plea for help" ), "gather" = list( "menu" = "Gather", SPLAT_GAROU = "A wolf howls to gather the pack", - SPLAT_CORAX = "A raven beckons the conspiracy" ), "victory" = list( "menu" = "Victory", SPLAT_GAROU = "A wolf howls in celebration of victory", - SPLAT_CORAX = "A raven croaks in celebration of victory" ), "dying" = list( "menu" = "Dying", SPLAT_GAROU = "A wolf howls in pain and despair", - SPLAT_CORAX = "A raven shrieks in pain and despair" ), "mourning" = list( "menu" = "Mourning", SPLAT_GAROU = "A wolf howls in deep mourning for the fallen", - SPLAT_CORAX = "A raven mourns the loss of the fallen" ) ) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/hud.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/hud.dm index 0f4f8e558446..d9ca1e92a31c 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/hud.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/hud.dm @@ -139,8 +139,9 @@ abstract_type = /atom/movable/screen/fera_transform icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/hud_transforms.dmi' mouse_over_pointer = MOUSE_HAND_POINTER - var/datum/species/left_click_transform - var/datum/species/right_click_transform + /// Generic form slot (SPECIES_FERA_WAR, etc), resolved to the clicker's actual splat-specific species on use + var/left_click_form_id + var/right_click_form_id /atom/movable/screen/fera_transform/Initialize(mapload, datum/hud/hud_owner) . = ..() @@ -157,9 +158,16 @@ return var/datum/splat/werewolf/shifter/shifting = get_shifter_splat(clicker) + if(!istype(shifting)) + return + var/list/modifiers = params2list(params) // Right click for alt forms like glabro and hispo. Ctrl click to use rage to do it instantly (doesnt matter if its breed form tho) - shifting.transform_fera(LAZYACCESS(modifiers, RIGHT_CLICK) ? right_click_transform : left_click_transform, LAZYACCESS(modifiers, CTRL_CLICK)) + var/form_id = LAZYACCESS(modifiers, RIGHT_CLICK) ? right_click_form_id : left_click_form_id + var/datum/species/human/shifter/form_to_transform = shifting.get_form_by_id(form_id) + if(!form_to_transform) + return + shifting.transform_fera(form_to_transform, LAZYACCESS(modifiers, CTRL_CLICK)) /atom/movable/screen/fera_transform/update_icon(updates) . = ..() @@ -178,14 +186,19 @@ . = ..() var/datum/splat/werewolf/shifter/shifting = get_shifter_splat(user) + if(!istype(shifting)) + return + + var/datum/species/human/shifter/left_form = shifting.get_form_by_id(left_click_form_id) + var/datum/species/human/shifter/right_form = shifting.get_form_by_id(right_click_form_id) - if(left_click_transform && (left_click_transform in shifting.transformation_list)) - context[SCREENTIP_CONTEXT_LMB] = "Shift to [left_click_transform::name]" - if(left_click_transform != shifting.get_breed_form_species()) + if(left_form && (left_form in shifting.transformation_list)) + context[SCREENTIP_CONTEXT_LMB] = "Shift to [initial(left_form.name)]" + if(left_form != shifting.get_breed_form_species()) context[SCREENTIP_CONTEXT_CTRL_LMB] = "Shift using rage" - if(right_click_transform && (right_click_transform in shifting.transformation_list)) - context[SCREENTIP_CONTEXT_RMB] = "Shift to [right_click_transform::name]" - if(right_click_transform != shifting.get_breed_form_species()) + if(right_form && (right_form in shifting.transformation_list)) + context[SCREENTIP_CONTEXT_RMB] = "Shift to [initial(right_form.name)]" + if(right_form != shifting.get_breed_form_species()) context[SCREENTIP_CONTEXT_CTRL_RMB] = "Shift using rage" return CONTEXTUAL_SCREENTIP_SET @@ -195,23 +208,23 @@ name = "homid form" icon_state = "homid" screen_loc = UI_LIVING_TRANSFORM_HOMID - left_click_transform = /datum/species/human/shifter/homid - right_click_transform = /datum/species/human/shifter/bestial + left_click_form_id = SPECIES_FERA_HOMID + right_click_form_id = SPECIES_FERA_BESTIAL /atom/movable/screen/fera_transform/war name = "war form" icon_state = "war" screen_loc = UI_LIVING_TRANSFORM_WAR - left_click_transform = /datum/species/human/shifter/war + left_click_form_id = SPECIES_FERA_WAR /atom/movable/screen/fera_transform/feral name = "feral form" icon_state = "feral" screen_loc = UI_LIVING_TRANSFORM_FERAL - left_click_transform = /datum/species/human/shifter/feral - right_click_transform = /datum/species/human/shifter/dire + left_click_form_id = SPECIES_FERA_FERAL + right_click_form_id = SPECIES_FERA_DIRE #undef UI_LIVING_TRANSFORM_HOMID #undef UI_LIVING_TRANSFORM_WAR diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/breed.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/breed.dm index 942eafa47e58..e184cb92b7db 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/breed.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/breed.dm @@ -44,3 +44,7 @@ /datum/preference/choiced/subsplat/fera_breed/coeax savefile_key = "corax_breed" splat_id = SPLAT_CORAX + +/datum/preference/choiced/subsplat/fera_breed/ananasi + savefile_key = "ananasi_breed" + splat_id = SPLAT_ANANASI diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/customization/fur_color.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/customization/fur_color.dm index 2c611855d712..a6d734d98804 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/customization/fur_color.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/customization/fur_color.dm @@ -34,6 +34,9 @@ savefile_key = "corax_fur_color" splat_id = SPLAT_CORAX +/datum/preference/choiced/fera_fur_color/ananasi + savefile_key = "ananasi_fur_color" + splat_id = SPLAT_ANANASI /datum/dna_block/feature/fera_fur_color feature_key = FEATURE_FERA_FUR_COLOR diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/tribe.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/tribe.dm index 287a19e4dd39..9b6a8c53571b 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/tribe.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/preferences/tribe.dm @@ -42,3 +42,7 @@ splat_id = SPLAT_CORAX savefile_key = "corax_tribe" */ + +/datum/preference/choiced/subsplat/fera_tribe/ananasi + splat_id = SPLAT_ANANASI + savefile_key = "ananasi_tribe" diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm index 095b2f1872a1..6a96022723f4 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/fera_species.dm @@ -337,10 +337,12 @@ fallback_icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/garou_forms/hispo.dmi' speed_mod = /datum/movespeed_modifier/shifter/dire +/datum/species/human/shifter/dire/ananasi + form_causes_delirium = TRUE + /datum/species/human/shifter/dire/visible_gender_override(mob/living/carbon/human/holder) return "beast" - /datum/species/human/shifter/feral name = "feral form" id = SPECIES_FERA_FERAL diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/transformation.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/transformation.dm index b9c56ec83719..21f97851d0f4 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/species/transformation.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/species/transformation.dm @@ -124,4 +124,14 @@ /datum/splat/werewolf/shifter/proc/get_breed_form_species() return breed_form?.breed_species +/// Resolves generic form slot (SPECIES_FERA_WAR, SPECIES_FERA_FERAL, etc) to whatever species +/// type this splat uses for that slot, letting individual fera subtypes (garou/corax/ananasi/etc) +/// swap in their own unique subtype species +/datum/splat/werewolf/shifter/proc/get_form_by_id(form_id) + if(!form_id) + return + for(var/datum/species/human/shifter/form_type as anything in transformation_list) + if(initial(form_type.id) == form_id) + return form_type + #undef DOGGY_ANIMATION_TIME diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/examine_text.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/examine_text.dm index e8bbbf0a44a9..a0d6b3749a33 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/examine_text.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/examine_text.dm @@ -1,5 +1,6 @@ /datum/splat/werewolf/proc/examine_other_human(mob/living/carbon/examined) - var/datum/splat/werewolf/wolp_splat = get_werewolf_splat(examined) + var/datum/splat/werewolf/shifter/garou/wolp_splat = get_garou_splat(examined) + var/datum/splat/werewolf/spiber_splat = get_ananasi_splat(examined) if(wolp_splat) var/list/honor_flavor = list("claim to good conduct", "claim to honor", "claim to chivalry") var/list/wisdom_flavor = list("claim to insight", "claim to wisdom", "claim to sagacity") @@ -46,3 +47,22 @@ . += "In the local Garou, you have heard of [examined.p_their(TRUE)] [glory_flavor[2]]." if(10) . += "In the local Garou, you have heard of [examined.p_their(TRUE)] [glory_flavor[3]]." + + // Wyrmling Kinship gift for Hatar Ananasi + if(HAS_TRAIT(examined, TRAIT_WYRMLING_KINSHIP) && tribe?.name == TRIBE_BLACK_SPIRAL_DANCERS) + . += span_boldnicegreen("The Wyrm's presence clings to [examined.p_them()]. You recognize [examined.p_them()] as one of your own.") + + // For now, only one pattern flavor on examine. When Renown is reworked, this will be expanded to describe more complex patterns based on rank. + if(spiber_splat && istype(src, /datum/splat/werewolf/shifter/ananasi)) + var/list/tenere_flavor = list("structure and order", "immaculately weaved patterns") + var/list/hatar_flavor = list("death and decay", "indiscriminate destruction") + var/list/kumoti_flavor = list("growth and change", "chaos and life unbidden") + + switch(spiber_splat.tribe?.name) + if(TRIBE_SECEAN, TRIBE_PLICARE, TRIBE_GADERIN) + . += "The patterns on [examined.p_their(TRUE)] skin depict [tenere_flavor[1]]." + if(TRIBE_AGERE, TRIBE_ANOMIA, TRIBE_MALUM) + . += "The patterns on [examined.p_their(TRUE)] skin depict [hatar_flavor[1]]." + if(TRIBE_KAR, TRIBE_AMARI_ALIQUID, TRIBE_CHYMOS) + . += "The patterns on [examined.p_their(TRUE)] skin depict [kumoti_flavor[1]]." + diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm index 9a90ffe4d63a..46652a55702d 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm @@ -134,7 +134,6 @@ /datum/splat/werewolf/shifter/on_gain() . = ..() owner.set_species(/datum/species/human/shifter/homid) - add_power(/datum/action/cooldown/power/gift/howling) COOLDOWN_START(src, passive_regrowth_cd, 8 MINUTES) RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(revert_to_breed_form)) @@ -143,8 +142,6 @@ . = ..() if(!QDELETED(owner)) owner.set_species(/datum/species/human) - - remove_power(/datum/action/cooldown/power/gift/howling) UnregisterSignal(owner, COMSIG_LIVING_DEATH) /datum/splat/werewolf/shifter/splat_life(seconds_per_tick) @@ -153,7 +150,7 @@ // their fast healing is represented in day/days in breed-form so we just dont. var/can_passively_heal = !(is_breed_form() && (get_breed_form_species() != /datum/species/human/shifter/war)) if(COOLDOWN_FINISHED(src, passive_healing_cd)) - if(can_passively_heal) + if(can_passively_heal && !HAS_TRAIT(owner, TRAIT_NO_PASSIVE_HEALING)) // 2 to represent lethal. Fera passive regen closes burn, but not aggravated damage. owner.heal_storyteller_health(2, heal_aggravated = FALSE, heal_scars = TRUE, heal_blood = TRUE, heal_burn = TRUE) // Keep organ healing ticking so internal damage recovers even between major regrowth pulses. @@ -302,6 +299,50 @@ . = ..() remove_power(/datum/action/cooldown/power/gift/eye_drink) +/datum/splat/werewolf/shifter/ananasi + name = "Ananasi" + id = SPLAT_ANANASI + uses_rage = FALSE + splat_traits = list( + TRAIT_FERA_FORMS, + TRAIT_FERA_FUR, + TRAIT_FERA_RENOWN, + TRAIT_NO_PASSIVE_HEALING, + ) + transformation_list = list( + /datum/species/human/shifter/homid, + /datum/species/human/shifter/war, + /datum/species/human/shifter/dire/ananasi, + /datum/species/human/shifter/feral + ) + transformation_stats = list( + SPECIES_FERA_WAR = list( + STAT_STRENGTH = 3, + STAT_STAMINA = 2, + STAT_DEXTERITY = 3, + STAT_MANIPULATION = -1, + STAT_APPEARANCE = -1 + ), + SPECIES_FERA_FERAL = list( + STAT_DEXTERITY = 6, + ), + SPECIES_FERA_DIRE = list( + STAT_STRENGTH = 4, + STAT_DEXTERITY = 2, + STAT_MANIPULATION = -3, + STAT_APPEARANCE = -2 + ) + ) + transform_sound = 'modular_darkpack/modules/werewolf_the_apocalypse/sounds/ananasi_transform.ogg' + mob_icons = list( + SPECIES_FERA_WAR = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/lilian.dmi', + SPECIES_FERA_DIRE = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/pithus.dmi', + SPECIES_FERA_FERAL = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/crawlerling.dmi' + ) + transform_hud_icon = 'modular_darkpack/modules/werewolf_the_apocalypse/icons/hud_transforms.dmi' + mimmicing_animal = /mob/living/basic/spider/giant/arachnid + + warcry_emote = "hiss" /mob/living/carbon/human/splat/kinfolk auto_splats = list(/datum/splat/werewolf/kinfolk) @@ -311,3 +352,6 @@ /mob/living/carbon/human/splat/corax auto_splats = list(/datum/splat/werewolf/shifter/corax) + +/mob/living/carbon/human/splat/ananasi + auto_splats = list(/datum/splat/werewolf/shifter/ananasi) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/is_werewolf_helpers.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/is_werewolf_helpers.dm index 1054fee7653b..82b47ad705e7 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/is_werewolf_helpers.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/is_werewolf_helpers.dm @@ -21,6 +21,11 @@ return character.get_splat(/datum/splat/werewolf/shifter/corax) +/proc/get_ananasi_splat(mob/character) + RETURN_TYPE(/datum/splat/werewolf/shifter/ananasi) + + return character.get_splat(/datum/splat/werewolf/shifter/ananasi) + /proc/get_kinfolk_splat(mob/character) RETURN_TYPE(/datum/splat/werewolf/kinfolk) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm index 0e12111cee0c..145af8a4ecb8 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/pref_lore.dm @@ -93,3 +93,39 @@ ) return to_add + +// START - ANANASI SPLAT +/datum/splat/werewolf/shifter/ananasi/prepare_human_for_preview(mob/living/carbon/human/human) + human.set_haircolor("#50504f", update = FALSE) + human.set_hairstyle("Wisp", update = TRUE) + human.undershirt = "Shirt (Black)" + human.glasses = "Prescription Glasses" + human.update_body() + +/datum/splat/werewolf/shifter/ananasi/get_splat_description() + return "Lorem Ipsum" + +/datum/splat/werewolf/shifter/ananasi/get_splat_lore() + return list( + "Lorem Ipsum", + ) + +/datum/splat/werewolf/shifter/ananasi/create_pref_unique_perks() + var/list/to_add = list() + + to_add += list( + list( + SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK, + SPECIES_PERK_ICON = FA_ICON_SPIDER, + SPECIES_PERK_NAME = "Shapeshifting", + SPECIES_PERK_DESC = "Ananasi can shift between 4 different forms that grant them bonuses.", + ), + list( + SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK, + SPECIES_PERK_ICON = FA_ICON_BAND_AID, + SPECIES_PERK_NAME = "Blood healing", + SPECIES_PERK_DESC = "Ananasi can use blood they've consumed to heal their injuries.", + ), + ) + + return to_add diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm new file mode 100644 index 000000000000..d61c994a068c --- /dev/null +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/ananasi.dm @@ -0,0 +1,30 @@ +/datum/subsplat/werewolf/breed_form/ananasi + abstract_type = /datum/subsplat/werewolf/breed_form/ananasi + fera_restriction = SPLAT_ANANASI + +/datum/subsplat/werewolf/breed_form/ananasi/homid + name = BREED_ANANASI_HOMID + start_gnosis = 4 + breed_species = /datum/species/human/shifter/homid + gifts_provided = list( + /datum/action/cooldown/power/gift/bloodheal, + /datum/action/cooldown/power/gift/spin_web, + /datum/action/cooldown/power/gift/resist_pain, + /datum/action/cooldown/power/gift/stolen_moments + ) + +/datum/subsplat/werewolf/breed_form/ananasi/arachnid + name = BREED_ARACHNID + start_gnosis = 4 + breed_species = /datum/species/human/shifter/feral + gifts_provided = list( + /datum/action/cooldown/power/gift/bloodheal, + /datum/action/cooldown/power/gift/spin_web, + /datum/action/cooldown/power/gift/resist_pain, + /datum/action/cooldown/power/gift/stolen_moments + ) + +/datum/subsplat/werewolf/breed_form/ananasi/arachnid/generation_pref_icon(datum/universal_icon/main_icon) + var/datum/universal_icon/breed_crinos = uni_icon('modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/lilian.dmi', "black") + breed_crinos.scale(32, 32) + main_icon.blend_icon(breed_crinos, ICON_OVERLAY) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/garou.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/garou.dm index 5c97ce104781..3d57e19a8920 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/garou.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/breeds/garou.dm @@ -1,6 +1,9 @@ /datum/subsplat/werewolf/breed_form/garou abstract_type = /datum/subsplat/werewolf/breed_form/garou fera_restriction = SPLAT_GAROU + gifts_provided = list( + /datum/action/cooldown/power/gift/howling + ) /datum/subsplat/werewolf/breed_form/garou/homid diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/_tribe.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/_tribe.dm index 51ba4e11911e..504e501b08a4 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/_tribe.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/_tribe.dm @@ -1,7 +1,20 @@ /datum/subsplat/werewolf/tribe abstract_type = /datum/subsplat/werewolf/tribe - //var/tribe_trait + // Traits granted from a tribe + var/list/tribe_traits = list() + +/datum/subsplat/werewolf/tribe/on_gain(mob/living/carbon/human/gaining_mob, datum/splat/gaining_splat, joining_round) + . = ..() + + for(var/trait in tribe_traits) + ADD_TRAIT(gaining_mob, trait, TRIBE_TRAIT) + +/datum/subsplat/werewolf/tribe/on_lose(mob/living/carbon/human/losing_mob) + . = ..() + + for(var/trait in tribe_traits) + REMOVE_TRAIT(losing_mob, trait, TRIBE_TRAIT) /** * Gets the singleton of an tribe diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm new file mode 100644 index 000000000000..814936306d8e --- /dev/null +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/subsplats/tribes/ananasi.dm @@ -0,0 +1,85 @@ +/datum/subsplat/werewolf/tribe/ananasi + abstract_type = /datum/subsplat/werewolf/tribe/ananasi + fera_restriction = SPLAT_ANANASI + +/datum/subsplat/werewolf/tribe/ananasi/secean + name = TRIBE_SECEAN + desc = "Tenere Myrmidon; Warriors of the Weaver, seeking to understand the nature of the universe to better serve the Mother-Queen. The Secean are explorers and seekers of knowledge unbidden.\nGifts: \n Open Seal - Open nearly any sort of closed or locked physical device. Roll Gnosis against the area's gauntlet rating to unlock a locked object. \n Beneath Notice - Make an object blend into the surrounding area. Spend 1 Gnosis to hide an object almost completely from sight. Cast on the object again to unhide. \n Groom - No matter the circumstances, the Tenere always looks their best. The character is permanently immune to being bloodied." + gifts_provided = list( + /datum/action/cooldown/power/gift/open_seal, + /datum/action/cooldown/power/gift/beneath_notice, + ) + tribe_traits = list(TRAIT_ALWAYS_CLEAN) + +/datum/subsplat/werewolf/tribe/ananasi/plicare + name = TRIBE_PLICARE + desc = "Tenere Viskr; Mystics of the Weaver, masters of precise order and control. The Plicare are staunch perfectionists, maintaining and leveraging order and structure to achieve their goals. \nGifts: \n Mindspeak - By invoking the power of waking dreams, place characters into silent communion. Transmit a message to any Ananasi belonging to the same cabal. \n Beneath Notice - Make an object blend into the surrounding area. Spend 1 Gnosis to hide an object almost completely from sight. Cast on the object again to unhide. \n Groom - No matter the circumstances, the Tenere always looks their best. The character is permanently immune to being bloodied." + gifts_provided = list( + /datum/action/cooldown/power/gift/mindspeak, + /datum/action/cooldown/power/gift/beneath_notice, + ) + tribe_traits = list(TRAIT_ALWAYS_CLEAN) + +/datum/subsplat/werewolf/tribe/ananasi/gaderin + name = TRIBE_GADERIN + desc = "Tenere Wyrsta; Questioners of the Weaver, challengers of strict order. The Gaderin are obsessive collectors, seeking to grow the Mother-Queen's understanding of the world from her prison in Malfeas. \nGifts: \n Alter Mood - The Wyrsta can enhance or dampen the mood of a single individual, making that person elated rather than just happy, or muting utter despair into simple sadness. Spend 1 Gnosis enhance or dampen the mood of a target. \n Beneath Notice - Make an object blend into the surrounding area. Spend 1 Gnosis to hide an object almost completely from sight. Cast on the object again to unhide. \n Groom - No matter the circumstances, the Tenere always looks their best. The character is permanently immune to being bloodied." + gifts_provided = list( + /datum/action/cooldown/power/gift/alter_mood, + /datum/action/cooldown/power/gift/beneath_notice, + ) + tribe_traits = list(TRAIT_ALWAYS_CLEAN) + +/datum/subsplat/werewolf/tribe/ananasi/agere + name = TRIBE_AGERE + desc = "Hatar Myrmidon; Warriors of the Wyrm, fickle forces of entropy and destruction. The Agere are swift and deadly, moving wherever Ananasa wills them to strike and delivering the Wyrm's own destruction to their enemies. \nGifts: \n Open Seal - Open nearly any sort of closed or locked physical device. Roll Gnosis against the area's gauntlet rating to unlock a locked object. \n Blood of Pain - The Hatar turns their blood into debilitating poison. Any who drink your blood will fall helplessly ill, necessitating a Stamina roll (difficulty 6) to act each turn for the rest of the scene. Starts activated. \n Wyrmling Kinship - The Hatar can convince Wyrm-creatures that they are an ally or someone of no importance. Black Spiral Dancers and Fomori will recognize you as an ally." + gifts_provided = list( + /datum/action/cooldown/power/gift/open_seal, + /datum/action/cooldown/power/gift/blood_of_pain, + ) + tribe_traits = list(TRAIT_WYRMLING_KINSHIP) + +/datum/subsplat/werewolf/tribe/ananasi/anomia + name = TRIBE_ANOMIA + desc = "Hatar Viskr; Mystics of the Wyrm, master manipulators of mortal will. The Anomia are cunning controllers of fate, pulling strings and leaving the death and destruction to those most skilled in delivering it: Humanity. \nGifts: \n Mindspeak - By invoking the power of waking dreams, place characters into silent communion. Transmit a message to any Ananasi belonging to the same cabal. \n Blood of Pain - The Hatar turns their blood into debilitating poison. Any who drink your blood will fall helplessly ill, necessitating a Stamina roll (difficulty 6) to act each turn for the rest of the scene. Starts activated. \n Wyrmling Kinship - The Hatar can convince Wyrm-creatures that they are an ally or someone of no importance. Black Spiral Dancers and Fomori will recognize you as an ally." + gifts_provided = list( + /datum/action/cooldown/power/gift/mindspeak, + /datum/action/cooldown/power/gift/blood_of_pain, + ) + tribe_traits = list(TRAIT_WYRMLING_KINSHIP) + +/datum/subsplat/werewolf/tribe/ananasi/malum + name = TRIBE_MALUM + desc = "Hatar Wyrsta; Questioners of the Wyrm, seeking to restore the Wyrm's true and original purpose. The Malum are self-serving and unpredictable, rejecting the Wyrm's new role as the Corruptor and serving instead as agents of the Wyrm's true face: the Destroyer. \nGifts: \n Alter Mood - The Wyrsta can enhance or dampen the mood of a single individual, making that person elated rather than just happy, or muting utter despair into simple sadness. Spend 1 Gnosis enhance or dampen the mood of a target. \n Blood of Pain - The Hatar turns their blood into debilitating poison. Any who drink your blood will fall helplessly ill, necessitating a Stamina roll (difficulty 6) to act each turn for the rest of the scene. Starts activated. \n Wyrmling Kinship - The Hatar can convince Wyrm-creatures that they are an ally or someone of no importance. Black Spiral Dancers and Fomori will recognize you as an ally." + gifts_provided = list( + /datum/action/cooldown/power/gift/alter_mood, + /datum/action/cooldown/power/gift/blood_of_pain, + ) + tribe_traits = list(TRAIT_WYRMLING_KINSHIP) + +/datum/subsplat/werewolf/tribe/ananasi/kar + name = TRIBE_KAR + desc = "Kumoti Myrmidon; Warriors of the Wyld, forces of change and creation. The Kar protect the Wyld through minor but otherwise direct acts of sabotage against the Weaver and the Wyrm, seeking to expand the Wyld's influence. \nGifts: \n Open Seal - Open nearly any sort of closed or locked physical device. Roll Gnosis against the area's gauntlet rating to unlock a locked object. \n Inspire - As Breath of the Wyld: Instill a feeling of vitality and life in a living being. Spend 1 Gnosis to increase a target's Perception, Intelligence, and Wits by 1; and increase the difficulty of any Rage rolls by 1. \n Mother's Touch - Heal the wounds of any living creature, aggravated or otherwise, simply by laying hands over the affected area. Roll Intelligence and Empathy (Difficulty 5) to determine the effectiveness of the healing." + gifts_provided = list( + /datum/action/cooldown/power/gift/open_seal, + /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, + /datum/action/cooldown/power/gift/mothers_touch, + ) + +/datum/subsplat/werewolf/tribe/ananasi/amarialiquid + name = TRIBE_AMARI_ALIQUID + desc = "Kumoti Viskr; Mystics of the Wyld, acting on whim and instinct. The Amari Aliquid are gentle and persistent, making change through constant motion for better or worse. \nGifts: \n Mindspeak - By invoking the power of waking dreams, place characters into silent communion. Transmit a message to any Ananasi belonging to the same cabal. \n Inspire - As Breath of the Wyld: Instill a feeling of vitality and life in a living being. Spend 1 Gnosis to increase a target's Perception, Intelligence, and Wits by 1; and increase the difficulty of any Rage rolls by 1. \n Mother's Touch - Heal the wounds of any living creature, aggravated or otherwise, simply by laying hands over the affected area. Roll Intelligence and Empathy (Difficulty 5) to determine the effectiveness of the healing." + gifts_provided = list( + /datum/action/cooldown/power/gift/mindspeak, + /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, + /datum/action/cooldown/power/gift/mothers_touch, + ) + +/datum/subsplat/werewolf/tribe/ananasi/chymos + name = TRIBE_CHYMOS + desc = "Kumoti Wyrsta; Questioners of the Wyld, careful observers of the world and the minions of each Triatic spirit. The Chymos are patient and calculating, seeking to manipulate and disrupt imbalance in the world to restore Symmetry. \nGifts: \n Alter Mood - The Wyrsta can enhance or dampen the mood of a single individual, making that person elated rather than just happy, or muting utter despair into simple sadness. Spend 1 Gnosis enhance or dampen the mood of a target. \n Inspire - As Breath of the Wyld: Instill a feeling of vitality and life in a living being. Spend 1 Gnosis to increase a target's Perception, Intelligence, and Wits by 1; and increase the difficulty of any Rage rolls by 1. \n Mother's Touch - Heal the wounds of any living creature, aggravated or otherwise, simply by laying hands over the affected area. Roll Intelligence and Empathy (Difficulty 5) to determine the effectiveness of the healing." + gifts_provided = list( + /datum/action/cooldown/power/gift/alter_mood, + /datum/action/cooldown/power/gift/breath_of_the_wyld/inspire, + /datum/action/cooldown/power/gift/mothers_touch, + ) + diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/crawlerling.dmi b/modular_darkpack/modules/werewolf_the_apocalypse/icons/ananasi_forms/crawlerling.dmi new file mode 100644 index 0000000000000000000000000000000000000000..92f4dc15154e7e5a09aa45bb5181181b16fecb2d GIT binary patch literal 7475 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 literal 4248 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 literal 20008 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 literal 0 HcmV?d00001 diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/altermood.ogg b/modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/altermood.ogg new file mode 100644 index 0000000000000000000000000000000000000000..366680f069cabb318c95e81262561c2b8508e201 GIT binary patch literal 16018 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 Q1n}RM?SslVz2JcV1w92sbN~PV literal 0 HcmV?d00001 diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain.ogg b/modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cb7b1490f8d1f69ce5483dc927d0d9f5ed3acfbf GIT binary patch literal 22943 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 C7ja?$ literal 0 HcmV?d00001 diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain_pass.ogg b/modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/blood_of_pain_pass.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d610b6f518ab6c2c62d2e23e24f20bfd5213f244 GIT binary patch literal 15504 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 X|Cf*n=$HT3)_#j25I2DHf13U;3W2W+ literal 0 HcmV?d00001 diff --git a/modular_zapoc/modules/decor/code/agility_shortcut.dm b/modular_zapoc/modules/decor/code/agility_shortcut.dm index 02e82783d4cc..8d21521db298 100644 --- a/modular_zapoc/modules/decor/code/agility_shortcut.dm +++ b/modular_zapoc/modules/decor/code/agility_shortcut.dm @@ -103,7 +103,7 @@ GLOBAL_LIST_EMPTY(unallocated_agility_shortcuts) /obj/agility_shortcut/urban/spiral name = "hole" desc = "There are a bunch of bricks missing. Not enough for you to crawl in. Unless you were insane." - allowed_tribes = TRIBE_LIST_WYRM + allowed_tribes = list(TRIBE_BLACK_SPIRAL_DANCERS) /obj/agility_shortcut/anyone desc = "You could probably fit in there. Want to find out?" diff --git a/tgstation.dme b/tgstation.dme index 852d011a4003..f287e7608b55 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8270,6 +8270,7 @@ #include "modular_darkpack\modules\werewolf_the_apocalypse\code\gifts\auspices\ragabash.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\gifts\auspices\theurge.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\gifts\changing_breeds\corax.dm" +#include "modular_darkpack\modules\werewolf_the_apocalypse\code\gifts\changing_breeds\ananasi.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\gifts\innate\eye_drink.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\gifts\innate\howling.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\gifts\tribes\black_furies.dm" @@ -8314,9 +8315,11 @@ #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\auspices\_auspice.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\auspices\garou.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\_breed.dm" +#include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\ananasi.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\corax.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\breeds\garou.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\_tribe.dm" +#include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\ananasi.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\subsplats\tribes\garou.dm" #include "modular_darkpack\modules\werewolf_the_apocalypse\code\weapons\klaives.dm" #include "modular_darkpack\modules\westfield_mall\code\mall_areas.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_fera.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_fera.tsx index 78db68478435..2c12b3dc9823 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_fera.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_fera.tsx @@ -11,6 +11,10 @@ export const corax_fur_color: FeatureChoiced = { component: FeatureDropdownInput, }; +export const ananasi_fur_color: FeatureChoiced = { + name: 'Ananasi Exoskeleton Color', + component: FeatureDropdownInput, +}; export const garou_hair: FeatureChoiced = { name: 'Garou Hair', From a37716d3b0220c47a854ed2f2f9ffaeda9ffa617 Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Mon, 14 Sep 2026 22:33:08 -0700 Subject: [PATCH 14/16] forgor phoneb --- .../modules/jobs/code/camarilla/primogens/duskborn.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm index a111c06b5140..8a8efe8a1b46 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm @@ -39,4 +39,4 @@ suit = /obj/item/clothing/suit/vampire/trench shoes = /obj/item/clothing/shoes/vampire/jackboots l_pocket = /obj/item/smartphone/duskborn_primo - backpack_contents = list(/obj/item/vamp/keys/duskborn/primogen=1, /obj/item/card/credit/elder=1, /obj/item/card/whip, /obj/item/card/steward, /obj/item/card/myrmidon) + backpack_contents = list(/obj/item/vamp/keys/duskborn/primogen=1, /obj/item/card/credit/elder=1, /obj/item/card/whip, /obj/item/card/steward, /obj/item/card/myrmidon, /obj/item/smartphone/duskborn_primo) From 81a116c9ca038f2d6670bd84c3256769d524e079 Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Mon, 14 Sep 2026 22:34:43 -0700 Subject: [PATCH 15/16] undoundoundo --- .../modules/jobs/code/camarilla/primogens/duskborn.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm b/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm index 8a8efe8a1b46..a111c06b5140 100644 --- a/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm +++ b/modular_darkpack/modules/jobs/code/camarilla/primogens/duskborn.dm @@ -39,4 +39,4 @@ suit = /obj/item/clothing/suit/vampire/trench shoes = /obj/item/clothing/shoes/vampire/jackboots l_pocket = /obj/item/smartphone/duskborn_primo - backpack_contents = list(/obj/item/vamp/keys/duskborn/primogen=1, /obj/item/card/credit/elder=1, /obj/item/card/whip, /obj/item/card/steward, /obj/item/card/myrmidon, /obj/item/smartphone/duskborn_primo) + backpack_contents = list(/obj/item/vamp/keys/duskborn/primogen=1, /obj/item/card/credit/elder=1, /obj/item/card/whip, /obj/item/card/steward, /obj/item/card/myrmidon) From a2c6f4b2b31f4e4dd85a22b173e716a6f0b17d92 Mon Sep 17 00:00:00 2001 From: Latentish <55075747+Latentish@users.noreply.github.com> Date: Tue, 15 Sep 2026 00:51:31 -0700 Subject: [PATCH 16/16] forogor helmper --- modular_darkpack/modules/jobs/code/landmarks.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_darkpack/modules/jobs/code/landmarks.dm b/modular_darkpack/modules/jobs/code/landmarks.dm index 32ce880a30f6..cae5808c640f 100644 --- a/modular_darkpack/modules/jobs/code/landmarks.dm +++ b/modular_darkpack/modules/jobs/code/landmarks.dm @@ -47,6 +47,7 @@ JOB_START_HELPER(primogen/lasombra, JOB_PRIMOGEN_LASOMBRA) JOB_START_HELPER(primogen/malkavian, JOB_PRIMOGEN_MALKAVIAN) JOB_START_HELPER(primogen/nosferatu, JOB_PRIMOGEN_NOSFERATU) JOB_START_HELPER(primogen/ventrue, JOB_PRIMOGEN_VENTRUE) +JOB_START_HELPER(primogen/duskborn, JOB_PRIMOGEN_DUSKBORN) /* Hospital */ /obj/effect/landmark/start/darkpack/hospital