From 977458e14d86168ef33a58a8cb55fa124bc30ee2 Mon Sep 17 00:00:00 2001 From: wgtjunior Date: Thu, 6 Feb 2025 18:43:28 -0300 Subject: [PATCH 1/6] big commit --- code/__DEFINES/jobs.dm | 131 ++++++ code/__DEFINES/time.dm | 2 + code/__HELPERS/time.dm | 11 + code/controllers/subsystem/job.dm | 18 +- code/modules/client/preferences.dm | 34 +- code/modules/jobs/job_exp.dm | 7 + code/modules/jobs/job_types/_job.dm | 72 ++++ .../modules/mob/dead/new_player/new_player.dm | 10 +- code/modules/vtmb/jobs/anarch/anarch.dm | 21 + .../vtmb/jobs/{anarchs => anarch}/bouncer.dm | 10 +- .../vtmb/jobs/{anarchs => anarch}/emissary.dm | 10 +- .../vtmb/jobs/{anarchs => anarch}/sweeper.dm | 10 +- code/modules/vtmb/jobs/anarchs/baron.dm | 56 --- .../modules/vtmb/jobs/{ => antags}/caitiff.dm | 0 code/modules/vtmb/jobs/{ => antags}/hunter.dm | 0 code/modules/vtmb/jobs/{ => antags}/sabbat.dm | 0 code/modules/vtmb/jobs/camarilla/camarilla.dm | 28 ++ .../camarilla_authorities}/hound.dm | 10 +- .../camarilla_authorities}/seneschal.dm | 11 +- code/modules/vtmb/jobs/{ => church}/priest.dm | 11 +- .../vtmb/jobs/{ => city_services}/taxi.dm | 6 +- code/modules/vtmb/jobs/dealer.dm | 55 --- code/modules/vtmb/jobs/doctor.dm | 108 ----- code/modules/vtmb/jobs/{ => gangs}/triad.dm | 10 +- code/modules/vtmb/jobs/giovanni.dm | 140 ------ code/modules/vtmb/jobs/graveyard_keeper.dm | 51 --- code/modules/vtmb/jobs/janitor.dm | 42 -- code/modules/vtmb/jobs/national_guard.dm | 398 ------------------ .../vtmb/jobs/{ => national_security}/fbi.dm | 11 +- .../national_security/national_security.dm | 21 + .../vtmb/jobs/{ => national_security}/swat.dm | 0 .../vtmb/jobs/{ => police_force}/police.dm | 32 +- .../vtmb/jobs/police_force/police_force.dm | 21 + code/modules/vtmb/jobs/primogen.dm | 232 ---------- code/modules/vtmb/jobs/prince.dm | 81 ---- code/modules/vtmb/jobs/sheriff.dm | 78 ---- code/modules/vtmb/jobs/stripper.dm | 45 -- code/modules/vtmb/jobs/supply_assistant.dm | 46 -- .../vtmb/jobs/{ => tremere}/archivist.dm | 10 +- .../modules/vtmb/jobs/{ => tremere}/regent.dm | 11 +- code/modules/vtmb/jobs/tremere/tremere.dm | 21 + .../jobs/{ => tzimisce_mansion}/bogatyr.dm | 10 +- .../jobs/{ => tzimisce_mansion}/voivode.dm | 11 +- .../jobs/{ => tzimisce_mansion}/zadruga.dm | 11 +- .../vtmb/jobs/{ => unaligned}/citizen.dm | 6 +- code/modules/vtmb/jobs/unaligned/unaligned.dm | 21 + code/modules/vtmb/jobs/warehouse/warehouse.dm | 21 + tgstation.dme | 77 ++-- 48 files changed, 579 insertions(+), 1449 deletions(-) create mode 100644 code/modules/vtmb/jobs/anarch/anarch.dm rename code/modules/vtmb/jobs/{anarchs => anarch}/bouncer.dm (90%) rename code/modules/vtmb/jobs/{anarchs => anarch}/emissary.dm (90%) rename code/modules/vtmb/jobs/{anarchs => anarch}/sweeper.dm (90%) delete mode 100644 code/modules/vtmb/jobs/anarchs/baron.dm rename code/modules/vtmb/jobs/{ => antags}/caitiff.dm (100%) rename code/modules/vtmb/jobs/{ => antags}/hunter.dm (100%) rename code/modules/vtmb/jobs/{ => antags}/sabbat.dm (100%) create mode 100644 code/modules/vtmb/jobs/camarilla/camarilla.dm rename code/modules/vtmb/jobs/{ => camarilla/camarilla_authorities}/hound.dm (92%) rename code/modules/vtmb/jobs/{ => camarilla/camarilla_authorities}/seneschal.dm (95%) rename code/modules/vtmb/jobs/{ => church}/priest.dm (93%) rename code/modules/vtmb/jobs/{ => city_services}/taxi.dm (95%) delete mode 100644 code/modules/vtmb/jobs/dealer.dm delete mode 100644 code/modules/vtmb/jobs/doctor.dm rename code/modules/vtmb/jobs/{ => gangs}/triad.dm (89%) delete mode 100644 code/modules/vtmb/jobs/giovanni.dm delete mode 100644 code/modules/vtmb/jobs/graveyard_keeper.dm delete mode 100644 code/modules/vtmb/jobs/janitor.dm delete mode 100644 code/modules/vtmb/jobs/national_guard.dm rename code/modules/vtmb/jobs/{ => national_security}/fbi.dm (88%) create mode 100644 code/modules/vtmb/jobs/national_security/national_security.dm rename code/modules/vtmb/jobs/{ => national_security}/swat.dm (100%) rename code/modules/vtmb/jobs/{ => police_force}/police.dm (87%) create mode 100644 code/modules/vtmb/jobs/police_force/police_force.dm delete mode 100644 code/modules/vtmb/jobs/primogen.dm delete mode 100644 code/modules/vtmb/jobs/prince.dm delete mode 100644 code/modules/vtmb/jobs/sheriff.dm delete mode 100644 code/modules/vtmb/jobs/stripper.dm delete mode 100644 code/modules/vtmb/jobs/supply_assistant.dm rename code/modules/vtmb/jobs/{ => tremere}/archivist.dm (90%) rename code/modules/vtmb/jobs/{ => tremere}/regent.dm (89%) create mode 100644 code/modules/vtmb/jobs/tremere/tremere.dm rename code/modules/vtmb/jobs/{ => tzimisce_mansion}/bogatyr.dm (90%) rename code/modules/vtmb/jobs/{ => tzimisce_mansion}/voivode.dm (87%) rename code/modules/vtmb/jobs/{ => tzimisce_mansion}/zadruga.dm (86%) rename code/modules/vtmb/jobs/{ => unaligned}/citizen.dm (95%) create mode 100644 code/modules/vtmb/jobs/unaligned/unaligned.dm create mode 100644 code/modules/vtmb/jobs/warehouse/warehouse.dm diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 1c7596651e..8d86418a64 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -1,3 +1,4 @@ +#define get_job_playtime(client, job) ((client.prefs.exp[job]) ? client.prefs.exp[job] MINUTES_TO_DECISECOND : 0) #define JOB_AVAILABLE 0 #define JOB_UNAVAILABLE_GENERIC 1 @@ -11,10 +12,13 @@ #define JOB_UNAVAILABLE_SPECIES_LIMITED 9 #define JOB_UNAVAILABLE_CLAN 10 #define JOB_UNAVAILABLE_AGE 11 +#define JOB_UNAVAILABE_TIME_LOCK 12 #define DEFAULT_RELIGION "Christianity" #define DEFAULT_DEITY "Space Jesus" +// Job Display on preference + #define JOB_DISPLAY_ORDER_DEFAULT 0 #define JOB_DISPLAY_ORDER_CITIZEN 1 @@ -52,6 +56,133 @@ #define JOB_DISPLAY_ORDER_BOGATYR 33 #define JOB_DISPLAY_ORDER_ZADRUGA 34 +// Job Titles +#define JOB_LIVING_ROLES /datum/timelock/living + +#define JOB_CIVILIAN "Citizen" + +#define JOB_UNALIGNED_ROLES /datum/timelock/unaligned +#define JOB_UNALIGNED_ROLES_LIST list(JOB_CIVILIAN) + +#define JOB_PRINCE "Prince" +#define JOB_CLERK "Seneschal" +#define JOB_SHERIFF "Sheriff" +#define JOB_HOUND "Hound" + +#define JOB_CAMARILLA_AUTHORITIES_ROLES /datum/timelock/camarilla_authorities +#define JOB_CAMARILLA_AUTHORITIES_ROLES_LIST list(JOB_SHERIFF, JOB_HOUND, JOB_CLERK, JOB_PRINCE) + + +#define JOB_BRUJAH "Primogen Brujah" +#define JOB_MALKAVIAN "Primogen Malkavian" +#define JOB_NOSFERATU "Primogen Nosferatu" +#define JOB_TOREADOR "Primogen Toreador" +#define JOB_VENTRUE "Primogen Ventrue" + +#define JOB_CAMARILLA_COUNCIL_ROLES /datum/timelock/camarilla_council +#define JOB_CAMARILLA_COUNCIL_ROLES_LIST list(JOB_BRUJAH, JOB_MALKAVIAN,JOB_NOSFERATU, JOB_TOREADOR, JOB_VENTRUE) + + +#define JOB_PRIEST "Priest" + +#define JOB_CHURCH_ROLES /datum/timelock/church +#define JOB_CHURCH_ROLES_LIST list(JOB_PRIEST) + + +#define JOB_GRAVEYARD "Graveyard Keeper" +#define JOB_STREETJAN "Street Janitor" +#define JOB_STRIP "Stripper" +#define JOB_TAXI "Taxi Driver" + + +#define JOB_CITY_SERVICES_ROLES /datum/timelock/city_services +#define JOB_CITY_SERVICES_ROLES_LIST list(JOB_GRAVEYARD,JOB_STREETJAN, JOB_STRIP, JOB_TAXI) + + +#define JOB_CLINIC_DIRECTOR "Clinic Director" +#define JOB_DOCTOR "Doctor" + + +#define JOB_CLINIC_ROLES /datum/timelock/clinic +#define JOB_CLINIC_ROLES_LIST list(JOB_CLINIC_DIRECTOR,JOB_DOCTOR) + + +#define JOB_TRIAD_GANGSTER "Triad Soldier" + +#define JOB_GANG_ROLES /datum/timelock/gang +#define JOB_GANG_ROLES_LIST list(JOB_TRIAD_GANGSTER) + +#define JOB_BARKEEPER "Baron" +#define JOB_EMISSARY "Emissary" +#define JOB_BRUISER "Bruiser" +#define JOB_SWEEPER "Sweeper" + + +#define JOB_ANARCH_ROLES /datum/timelock/anarch +#define JOB_ANARCH_ROLES_LIST list(JOB_BARKEEPER,JOB_EMISSARY,JOB_BRUISER,JOB_SWEEPER) + +#define JOB_DEALER "Dealer" +#define JOB_SUPPLY "Supply Technician" + +#define JOB_WAREHOUSE_ROLES /datum/timelock/warehouse +#define JOB_WAREHOUSE_ROLES_LIST list(JOB_DEALER,JOB_SUPPLY) + +#define JOB_REGENT "Chantry Regent" +#define JOB_ARCHIVIST "Chantry Archivist" + +#define JOB_TREMERE_ROLES /datum/timelock/tremere +#define JOB_TREMERE_ROLES_LIST list(JOB_REGENT,JOB_ARCHIVIST) + +#define JOB_GIOVANNI_CAPO "Capo" +#define JOB_GIOVANNI_SQUADRA "La Squadra" +#define JOB_GIOVANNI_FAMIGLIA "La Famiglia" + +#define JOB_GIOVANNI_ROLES /datum/timelock/giovanni_family +#define JOB_GIOVANNI_ROLES_LIST list(JOB_GIOVANNI_CAPO,JOB_GIOVANNI_SQUADRA,JOB_GIOVANNI_FAMIGLIA) + +#define JOB_POLICE_CHIEF "Police Chief" +#define JOB_POLICE_SERGEANT "Police Sergeant" +#define JOB_POLICE "Police Officer" + +#define JOB_POLICE_ROLES /datum/timelock/police_force +#define JOB_POLICE_ROLES_LIST list(JOB_POLICE_CHIEF,JOB_POLICE_SERGEANT,JOB_POLICE) + +#define JOB_FBI "Federal Investigator" + +#define JOB_NATIONAL_SECURITY_ROLES /datum/timelock/national_security +#define JOB_NATIONAL_SECURITY_ROLES_LIST list(JOB_FBI) + +#define JOB_VOIVODE "Voivode" +#define JOB_BOGATYR "Bogatyr" +#define JOB_ZADRUGA "Zadruga" + +#define JOB_TZIMISCE_MANSION_ROLES /datum/timelock/tzimisce_mansion_v +#define JOB_TZIMISCE_MANSION_ROLES_LIST list(JOB_VOIVODE,JOB_BOGATYR,JOB_ZADRUGA) + + + +#define TIMELOCK_JOB(role_id, hours) new/datum/timelock(role_id, hours, role_id) + + + +// Used to add a timelock to a job. Will be passed onto derivatives +#define AddTimelock(Path, timelockList) \ +##Path/setup_requirements(list/L){\ + L += timelockList;\ + . = ..(L);\ +} + +// Used to add a timelock to a job. Will be passed onto derivates. Will not include the parent's timelocks. +#define OverrideTimelock(Path, timelockList) \ +##Path/setup_requirements(list/L){\ + L = timelockList;\ + . = ..(L);\ +} + + + + + // #define JOB_DISPLAY_ORDER_INVESTIGATOR 25 // #define JOB_DISPLAY_ORDER_CHAPLAIN 26 /* diff --git a/code/__DEFINES/time.dm b/code/__DEFINES/time.dm index 6cad79b8c0..b6233828f6 100644 --- a/code/__DEFINES/time.dm +++ b/code/__DEFINES/time.dm @@ -45,6 +45,8 @@ When using time2text(), please use "DDD" to find the weekday. Refrain from using #define HOURS MINUTES*60 +#define MINUTES_TO_DECISECOND *600 + #define TICKS *world.tick_lag #define DS2TICKS(DS) ((DS)/world.tick_lag) diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index d9a6b5bf90..0cb96b5c8a 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -27,6 +27,17 @@ else SSticker.gametime_offset = CEILING(SSticker.gametime_offset, 3600) +/proc/deciseconds_to_time_text(deciseconds) + var/total_seconds = round(deciseconds / 10) + var/total_minutes = total_seconds / 60 + var/hours = total_minutes / 60 + var/minutes = total_minutes % 60 + + return "[round(hours)]:[minutes < 10 ? "0[minutes]" : minutes] Hours" + +/proc/duration2text_custom(deciseconds) + return deciseconds_to_time_text(deciseconds) + //returns timestamp in a sql and a not-quite-compliant ISO 8601 friendly format /proc/SQLtime(timevar) return time2text(timevar || world.timeofday, "YYYY-MM-DD hh:mm:ss") diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index bf1e4be88b..6ca6021150 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -99,7 +99,7 @@ SUBSYSTEM_DEF(job) return FALSE if(!job.player_old_enough(player.client) && !bypass) return FALSE - if(job.required_playtime_remaining(player.client) && !bypass) + if(job.can_play_role(player.client) && !bypass) return FALSE if((player.client.prefs.generation > job.minimal_generation) && !bypass) return FALSE @@ -136,9 +136,8 @@ SUBSYSTEM_DEF(job) if(!job.player_old_enough(player.client) && !bypass) JobDebug("FOC player not old enough, Player: [player]") continue - if(job.required_playtime_remaining(player.client) && !bypass) - JobDebug("FOC player not enough xp, Player: [player]") - continue + if(!job.can_play_role(player.client) && !bypass) + JobDebug("FOC player don't got enough hours(TIMELOCK), Player: [player], Job:[job.title]") if((player.client.prefs.generation > job.minimal_generation) && !bypass) JobDebug("FOC player not enough generation, Player: [player]") continue @@ -195,9 +194,8 @@ SUBSYSTEM_DEF(job) JobDebug("GRJ player not old enough, Player: [player]") continue - if(job.required_playtime_remaining(player.client)) - JobDebug("GRJ player not enough xp, Player: [player]") - continue + if(!job.can_play_role(player.client)) + JobDebug("GRJ player not enough playtime (TIMELOCK), Player: [player], Job:[job.title]") if(player.client.prefs.generation > job.minimal_generation) JobDebug("GRJ player not enough generation, Player: [player]") @@ -405,10 +403,8 @@ SUBSYSTEM_DEF(job) JobDebug("DO player not old enough, Player: [player], Job:[job.title]") continue - if(job.required_playtime_remaining(player.client) && !bypass) - JobDebug("DO player not enough xp, Player: [player], Job:[job.title]") - continue - + if(!job.can_play_role(player.client) && !bypass) + JobDebug("DO player not enough playtime (TIMELOCK), Player: [player], Job:[job.title]") if((player.client.prefs.generation > job.minimal_generation) && !bypass) JobDebug("DO player not enough generation, Player: [player]") continue diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 41454bb742..c9c0053ada 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1298,7 +1298,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) popup.open(FALSE) onclose(user, "capturekeypress", src) -/datum/preferences/proc/SetChoices(mob/user, limit = 17, list/splitJobs = list("Chief Engineer"), widthPerColumn = 295, height = 620) +/datum/preferences/proc/SetChoices(mob/user, limit = 17, list/splitJobs = list("Chief Engineer"), widthPerColumn = 400, height = 700) if(!SSjob) return @@ -1328,7 +1328,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/bypass = FALSE if (check_rights_for(user.client, R_ADMIN)) - bypass = TRUE + bypass = FALSE for(var/datum/job/job in sortList(SSjob.occupations, GLOBAL_PROC_REF(cmp_job_display_asc))) @@ -1349,21 +1349,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(is_banned_from(user.ckey, rank)) HTML += "[rank] BANNED" continue - var/required_playtime_remaining = job.required_playtime_remaining(user.client) //text (Zamenil potomu chto slishkom rezhet glaza - if(required_playtime_remaining && !bypass) - HTML += "[rank] \[ [get_exp_format(required_playtime_remaining)] as [job.get_exp_req_type()] \]" - continue if(!job.player_old_enough(user.client) && !bypass) var/available_in_days = job.available_in_days(user.client) HTML += "[rank] \[IN [(available_in_days)] DAYS\]" continue - if((generation > job.minimal_generation) && !bypass) - HTML += "[rank] \[FROM [job.minimal_generation] GENERATION AND OLDER\]" - continue - if((masquerade < job.minimal_masquerade) && !bypass) - HTML += "[rank] \[[job.minimal_masquerade] MASQUERADE POINTS REQUIRED\]" - continue if(!job.allowed_species.Find(pref_species.name) && !bypass) HTML += "[rank] \[[pref_species.name] RESTRICTED\]" continue @@ -1376,6 +1366,24 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(!alloww && !bypass) HTML += "[rank] \[[clane.name] RESTRICTED\]" continue + if((generation > job.minimal_generation) && !bypass) + HTML += "[rank] \[FROM [job.minimal_generation] GENERATION AND OLDER\]" + continue + if((masquerade < job.minimal_masquerade) && !bypass) + HTML += "[rank] \[[job.minimal_masquerade] MASQUERADE POINTS REQUIRED\]" + continue + if(!job.can_play_role(user.client) && !bypass) + var/list/missing_requirements = job.get_role_requirements(user.client) + HTML += "[rank] \[TIMELOCKED\]" + + HTML += "" + for(var/r in missing_requirements) + var/datum/timelock/T = r + var/requirement_message = "Lacking : [duration2text_custom(missing_requirements[r])]" + HTML += "" + + HTML += "
[T.name][requirement_message]
" + continue if((job_preferences[SSjob.overflow_role] == JP_LOW) && (rank != SSjob.overflow_role) && !is_banned_from(user.ckey, SSjob.overflow_role)) HTML += "[rank]" continue @@ -1384,7 +1392,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) else HTML += "[rank]" - HTML += "" + HTML += "" var/prefLevelLabel = "ERROR" var/prefLevelColor = "pink" diff --git a/code/modules/jobs/job_exp.dm b/code/modules/jobs/job_exp.dm index 0593b2867f..c5ffbe5e2d 100644 --- a/code/modules/jobs/job_exp.dm +++ b/code/modules/jobs/job_exp.dm @@ -223,3 +223,10 @@ GLOBAL_PROTECT(exp_to_update) prefs.db_flags = 0 //This PROBABLY won't happen, but better safe than sorry. qdel(flags_read) return TRUE + +//This one is used for the timelock +client/proc/get_time_living() + if(!prefs.exp || !prefs.exp[EXP_TYPE_LIVING]) + return 0 + var/exp_living = text2num(prefs.exp[EXP_TYPE_LIVING]) MINUTES_TO_DECISECOND + return exp_living diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index cf526ab215..e8d3f27e30 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -91,9 +91,17 @@ var/duty var/v_duty + + var/list/minimum_playtimes + + var/minimum_playtime_as_job = 1 HOURS + /datum/job/New() . = ..() var/list/jobs_changes = GetMapChanges() + + minimum_playtimes = setup_requirements(list()) + if(!jobs_changes) return if(isnum(jobs_changes["additional_access"])) @@ -347,3 +355,67 @@ if(CONFIG_GET(flag/security_has_maint_access)) return list(ACCESS_MAINT_TUNNELS) return list() + +/datum/timelock + var/name + var/time_required + var/roles + +/datum/timelock/New(name, time_required, list/roles) + . = ..() + if(name) src.name = name + if(time_required) src.time_required = time_required + if(roles) src.roles = roles + +/datum/job/proc/setup_requirements(list/L) + var/list/to_return = list() + for(var/PT in L) + if(ispath(PT)) + LAZYADD(to_return, new PT(time_required = L[PT])) + else + LAZYADD(to_return, TIMELOCK_JOB(PT, L[PT])) + + return to_return + +/datum/timelock/proc/can_play(client/C) + if(islist(roles)) + var/total = 0 + for(var/role_required in roles) + total += get_job_playtime(C, role_required) + + return total >= time_required + else + return get_job_playtime(C, roles) >= time_required + +/datum/timelock/proc/get_role_requirement(client/C) + if(islist(roles)) + var/total = 0 + for(var/role_required in roles) + total += get_job_playtime(C, role_required) + + return time_required - total + else + return time_required - get_job_playtime(C, roles) + +/datum/job/proc/can_play_role(client/client) + + + if(get_job_playtime(client, title) > minimum_playtime_as_job) + return TRUE + + for(var/prereq in minimum_playtimes) + var/datum/timelock/T = prereq + if(!T.can_play(client)) + return FALSE + + return TRUE + +/datum/job/proc/get_role_requirements(client/C) + var/list/return_requirements = list() + for(var/prereq in minimum_playtimes) + var/datum/timelock/T = prereq + var/time_required = T.get_role_requirement(C) + if(time_required > 0) + return_requirements[T] = time_required + + return return_requirements diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 8dff718a84..c6a10dcc42 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -290,8 +290,8 @@ return "[jobtitle] is unavailable." if(JOB_UNAVAILABLE_BANNED) return "You are currently banned from [jobtitle]." - if(JOB_UNAVAILABLE_PLAYTIME) - return "You do not have enough relevant playtime for [jobtitle]." + if(JOB_UNAVAILABE_TIME_LOCK) + return "You do not have enough hours in some roles for [jobtitle]." if(JOB_UNAVAILABLE_ACCOUNTAGE) return "Your account is not old enough for [jobtitle]." if(JOB_UNAVAILABLE_SLOTFULL) @@ -307,7 +307,7 @@ /mob/dead/new_player/proc/IsJobUnavailable(rank, latejoin = FALSE) var/bypass = FALSE if (check_rights_for(client, R_ADMIN)) - bypass = TRUE + bypass = FALSE var/datum/job/job = SSjob.GetJob(rank) if(!job) return JOB_UNAVAILABLE_GENERIC @@ -321,8 +321,8 @@ return JOB_UNAVAILABLE_GENERIC if(!job.player_old_enough(client) && !bypass) return JOB_UNAVAILABLE_ACCOUNTAGE - if(job.required_playtime_remaining(client) && !bypass) - return JOB_UNAVAILABLE_PLAYTIME + if(!job.can_play_role(client) && !bypass ) + return JOB_UNAVAILABE_TIME_LOCK if(latejoin && !job.special_check_latejoin(client)) return JOB_UNAVAILABLE_GENERIC if((client.prefs.generation > job.minimal_generation) && !bypass) diff --git a/code/modules/vtmb/jobs/anarch/anarch.dm b/code/modules/vtmb/jobs/anarch/anarch.dm new file mode 100644 index 0000000000..e069a3d7fd --- /dev/null +++ b/code/modules/vtmb/jobs/anarch/anarch.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/anarch + supervisors = "the Anarchs and the Traditions" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/anarch + name = "Anarch Roles" + +/datum/timelock/anarch/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_ANARCH_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/anarchs/bouncer.dm b/code/modules/vtmb/jobs/anarch/bouncer.dm similarity index 90% rename from code/modules/vtmb/jobs/anarchs/bouncer.dm rename to code/modules/vtmb/jobs/anarch/bouncer.dm index 3adc068257..97c9a5490b 100644 --- a/code/modules/vtmb/jobs/anarchs/bouncer.dm +++ b/code/modules/vtmb/jobs/anarch/bouncer.dm @@ -1,6 +1,6 @@ -/datum/job/vamp/bruiser - title = "Bruiser" +/datum/job/vamp/anarch/bruiser + title = JOB_BRUISER department_head = list("Baron") faction = "Vampire" total_positions = 7 @@ -26,9 +26,13 @@ minimal_masquerade = 2 experience_addition = 15 +AddTimelock(/datum/job/vamp/anarch/bruiser, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + /datum/outfit/job/bruiser name = "Bruiser" - jobtype = /datum/job/vamp/bruiser + jobtype = /datum/job/vamp/anarch/bruiser id = /obj/item/card/id/anarch uniform = /obj/item/clothing/under/vampire/bouncer diff --git a/code/modules/vtmb/jobs/anarchs/emissary.dm b/code/modules/vtmb/jobs/anarch/emissary.dm similarity index 90% rename from code/modules/vtmb/jobs/anarchs/emissary.dm rename to code/modules/vtmb/jobs/anarch/emissary.dm index fe54a2a4f1..158c2677c0 100644 --- a/code/modules/vtmb/jobs/anarchs/emissary.dm +++ b/code/modules/vtmb/jobs/anarch/emissary.dm @@ -1,6 +1,6 @@ -/datum/job/vamp/emissary - title = "Emissary" +/datum/job/vamp/anarch/emissary + title = JOB_EMISSARY department_head = list("Baron") faction = "Vampire" total_positions = 1 @@ -26,9 +26,13 @@ minimal_masquerade = 2 experience_addition = 15 +AddTimelock(/datum/job/vamp/anarch/emissary, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + /datum/outfit/job/emissary name = "emissary" - jobtype = /datum/job/vamp/emissary + jobtype = /datum/job/vamp/anarch/emissary id = /obj/item/card/id/anarch uniform = /obj/item/clothing/under/vampire/bouncer diff --git a/code/modules/vtmb/jobs/anarchs/sweeper.dm b/code/modules/vtmb/jobs/anarch/sweeper.dm similarity index 90% rename from code/modules/vtmb/jobs/anarchs/sweeper.dm rename to code/modules/vtmb/jobs/anarch/sweeper.dm index a21c1da98c..850ece117e 100644 --- a/code/modules/vtmb/jobs/anarchs/sweeper.dm +++ b/code/modules/vtmb/jobs/anarch/sweeper.dm @@ -1,6 +1,6 @@ -/datum/job/vamp/sweeper - title = "Sweeper" +/datum/job/vamp/anarch/sweeper + title = JOB_SWEEPER department_head = list("Baron") faction = "Vampire" total_positions = 3 @@ -26,9 +26,13 @@ minimal_masquerade = 2 experience_addition = 15 +AddTimelock(/datum/job/vamp/anarch/sweeper, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + /datum/outfit/job/sweeper name = "Sweeper" - jobtype = /datum/job/vamp/sweeper + jobtype = /datum/job/vamp/anarch/sweeper id = /obj/item/card/id/anarch uniform = /obj/item/clothing/under/vampire/bouncer diff --git a/code/modules/vtmb/jobs/anarchs/baron.dm b/code/modules/vtmb/jobs/anarchs/baron.dm deleted file mode 100644 index 25df239688..0000000000 --- a/code/modules/vtmb/jobs/anarchs/baron.dm +++ /dev/null @@ -1,56 +0,0 @@ - -/datum/job/vamp/barkeeper - title = "Baron" - department_head = list("Justicar") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = "the Anarchs and the Traditions" - selection_color = "#434343" - - outfit = /datum/outfit/job/barkeeper - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_BARKEEPER - bounty_types = CIV_JOB_DRINK - -// minimal_generation = 11 //Uncomment when players get exp enough - - my_contact_is_important = TRUE - known_contacts = list( - "Prince", - "Dealer" - ) - - v_duty = "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." - minimal_masquerade = 3 - allowed_species = list("Vampire") - allowed_bloodlines = list("Daughters of Cacophony", "True Brujah", "Brujah", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Ventrue", "Lasombra", "Gargoyle", "Ministry") - experience_addition = 20 - -/datum/outfit/job/barkeeper - name = "Baron" - jobtype = /datum/job/vamp/barkeeper - - id = /obj/item/card/id/anarch - glasses = /obj/item/clothing/glasses/vampire/sun - uniform = /obj/item/clothing/under/vampire/bar - suit = /obj/item/clothing/suit/vampire/jacket/better - shoes = /obj/item/clothing/shoes/vampire - gloves = /obj/item/clothing/gloves/vampire/work - l_pocket = /obj/item/vamp/phone/barkeeper - r_pocket = /obj/item/vamp/keys/bar - backpack_contents = list(/obj/item/passport=1, /obj/item/phone_book=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) - -/datum/outfit/job/barkeeper/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == FEMALE) - uniform = /obj/item/clothing/under/vampire/bar/female - shoes = /obj/item/clothing/shoes/vampire/heels - -/obj/effect/landmark/start/barkeeper - name = "Baron" - icon_state = "Barkeeper" diff --git a/code/modules/vtmb/jobs/caitiff.dm b/code/modules/vtmb/jobs/antags/caitiff.dm similarity index 100% rename from code/modules/vtmb/jobs/caitiff.dm rename to code/modules/vtmb/jobs/antags/caitiff.dm diff --git a/code/modules/vtmb/jobs/hunter.dm b/code/modules/vtmb/jobs/antags/hunter.dm similarity index 100% rename from code/modules/vtmb/jobs/hunter.dm rename to code/modules/vtmb/jobs/antags/hunter.dm diff --git a/code/modules/vtmb/jobs/sabbat.dm b/code/modules/vtmb/jobs/antags/sabbat.dm similarity index 100% rename from code/modules/vtmb/jobs/sabbat.dm rename to code/modules/vtmb/jobs/antags/sabbat.dm diff --git a/code/modules/vtmb/jobs/camarilla/camarilla.dm b/code/modules/vtmb/jobs/camarilla/camarilla.dm new file mode 100644 index 0000000000..74db403b9f --- /dev/null +++ b/code/modules/vtmb/jobs/camarilla/camarilla.dm @@ -0,0 +1,28 @@ +/datum/job/vamp/camarilla + supervisors = "the Camarilla and the Traditions" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/camarilla_authorities + name = "Camarilla Authorities Roles" + +/datum/timelock/camarilla_authorities/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_CAMARILLA_AUTHORITIES_ROLES_LIST + +/datum/timelock/camarilla_council + name = "Camarilla Council Roles" + +/datum/timelock/camarilla_council/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_CAMARILLA_COUNCIL_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/hound.dm b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/hound.dm similarity index 92% rename from code/modules/vtmb/jobs/hound.dm rename to code/modules/vtmb/jobs/camarilla/camarilla_authorities/hound.dm index 6e88a1d33b..9fba12018c 100644 --- a/code/modules/vtmb/jobs/hound.dm +++ b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/hound.dm @@ -1,6 +1,6 @@ -/datum/job/vamp/hound - title = "Hound" +/datum/job/vamp/camarilla/hound + title = JOB_HOUND auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY department_head = list("Prince") faction = "Vampire" @@ -31,9 +31,13 @@ experience_addition = 10 allowed_bloodlines = list("True Brujah", "Daughters of Cacophony", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Lasombra", "Gargoyle", "Kiasyd", "Cappadocian") +AddTimelock(/datum/job/vamp/camarilla/agent, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + /datum/outfit/job/hound name = "Hound" - jobtype = /datum/job/vamp/hound + jobtype = /datum/job/vamp/camarilla/hound ears = /obj/item/p25radio id = /obj/item/card/id/camarilla diff --git a/code/modules/vtmb/jobs/seneschal.dm b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/seneschal.dm similarity index 95% rename from code/modules/vtmb/jobs/seneschal.dm rename to code/modules/vtmb/jobs/camarilla/camarilla_authorities/seneschal.dm index 323a4eae5a..5e48cdcd0f 100644 --- a/code/modules/vtmb/jobs/seneschal.dm +++ b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/seneschal.dm @@ -1,6 +1,6 @@ -/datum/job/vamp/clerk - title = "Seneschal" +/datum/job/vamp/camarilla/clerk + title = JOB_CLERK auto_deadmin_role_flags = DEADMIN_POSITION_HEAD department_head = list("Prince") head_announce = list(RADIO_CHANNEL_SUPPLY, RADIO_CHANNEL_SERVICE) @@ -50,9 +50,14 @@ experience_addition = 15 allowed_bloodlines = list("Daughters of Cacophony", "True Brujah", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Lasombra", "Gargoyle", "Kiasyd") + +AddTimelock(/datum/job/vamp/camarilla/clerk, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + /datum/outfit/job/clerk name = "Seneschal" - jobtype = /datum/job/vamp/clerk + jobtype = /datum/job/vamp/camarilla/clerk ears = /obj/item/p25radio id = /obj/item/card/id/clerk diff --git a/code/modules/vtmb/jobs/priest.dm b/code/modules/vtmb/jobs/church/priest.dm similarity index 93% rename from code/modules/vtmb/jobs/priest.dm rename to code/modules/vtmb/jobs/church/priest.dm index 8c6abac2a1..f1c1430a73 100644 --- a/code/modules/vtmb/jobs/priest.dm +++ b/code/modules/vtmb/jobs/church/priest.dm @@ -1,6 +1,6 @@ -/datum/job/vamp/priest - title = "Priest" +/datum/job/vamp/church/priest + title = JOB_PRIEST department_head = list("Bishop") faction = "Vampire" total_positions = 2 @@ -25,9 +25,14 @@ minimal_masquerade = 0 my_contact_is_important = FALSE +AddTimelock(/datum/job/vamp/church/priest, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + + /datum/outfit/job/priest name = "Priest" - jobtype = /datum/job/vamp/priest + jobtype = /datum/job/vamp/church/priest uniform = /obj/item/clothing/under/vampire/graveyard shoes = /obj/item/clothing/shoes/vampire/jackboots diff --git a/code/modules/vtmb/jobs/taxi.dm b/code/modules/vtmb/jobs/city_services/taxi.dm similarity index 95% rename from code/modules/vtmb/jobs/taxi.dm rename to code/modules/vtmb/jobs/city_services/taxi.dm index 48c73beaad..af84bf09f9 100644 --- a/code/modules/vtmb/jobs/taxi.dm +++ b/code/modules/vtmb/jobs/city_services/taxi.dm @@ -1,5 +1,5 @@ -/datum/job/vamp/taxi - title = "Taxi Driver" +/datum/job/vamp/city_services/taxi + title = JOB_TAXI department_head = list("Justicar") faction = "Vampire" total_positions = 3 @@ -30,7 +30,7 @@ /datum/outfit/job/taxi name = "Taxi Driver" - jobtype = /datum/job/vamp/taxi + jobtype = /datum/job/vamp/city_services/taxi id = /obj/item/cockclock glasses = /obj/item/clothing/glasses/vampire/sun diff --git a/code/modules/vtmb/jobs/dealer.dm b/code/modules/vtmb/jobs/dealer.dm deleted file mode 100644 index 4f66ed393e..0000000000 --- a/code/modules/vtmb/jobs/dealer.dm +++ /dev/null @@ -1,55 +0,0 @@ - -/datum/job/vamp/dealer - title = "Dealer" - department_head = list("Yourself") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = "None. You are beholden only to yourself." - selection_color = "#edc009" - exp_type_department = EXP_TYPE_WAREHOUSE // This is so the jobs menu can work properly - - outfit = /datum/outfit/job/dealer - - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT, ACCESS_AUX_BASE) - minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT, ACCESS_AUX_BASE) - paycheck = PAYCHECK_MEDIUM - paycheck_department = ACCOUNT_CAR - - liver_traits = list(TRAIT_PRETENDER_ROYAL_METABOLISM) - - display_order = JOB_DISPLAY_ORDER_DEALER - bounty_types = CIV_JOB_RANDOM - -// minimal_generation = 12 //Uncomment when players get exp enough - - my_contact_is_important = TRUE - known_contacts = list("Prince","Seneschal", "Sheriff", "Baron") - allowed_bloodlines = list("True Brujah", "Brujah", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Tzimisce", "Caitiff", "Ventrue", "Ministry", "Kiasyd", "Cappadocian") - - v_duty = "You provide both legal and illegal supplies to those that get busy during the night. You are your own man yet you know people are out for you. Time to buckle in..." - minimal_masquerade = 3 - allowed_species = list("Vampire", "Werewolf", "Kuei-Jin") - experience_addition = 20 - -/datum/outfit/job/dealer - name = "Dealer" - jobtype = /datum/job/vamp/dealer - - id = /obj/item/card/id/dealer - uniform = /obj/item/clothing/under/vampire/suit - shoes = /obj/item/clothing/shoes/vampire/brown - glasses = /obj/item/clothing/glasses/vampire/sun - l_pocket = /obj/item/vamp/phone/dealer - r_pocket = /obj/item/vamp/keys/supply - backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/rich=1) - -/datum/outfit/job/dealer/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == FEMALE) - uniform = /obj/item/clothing/under/vampire/suit/female - shoes = /obj/item/clothing/shoes/vampire/heels/red - -/obj/effect/landmark/start/dealer - name = "Dealer" - icon_state = "Dealer" diff --git a/code/modules/vtmb/jobs/doctor.dm b/code/modules/vtmb/jobs/doctor.dm deleted file mode 100644 index e872a8f052..0000000000 --- a/code/modules/vtmb/jobs/doctor.dm +++ /dev/null @@ -1,108 +0,0 @@ - -/datum/job/vamp/vdoctor - title = "Doctor" - department_head = list("Clinic Director") - faction = "Vampire" - total_positions = 4 - spawn_positions = 4 - supervisors = "the Camarilla or the Anarchs" - selection_color = "#80D0F4" - exp_type_department = EXP_TYPE_CLINIC - - - outfit = /datum/outfit/job/vdoctor - - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_PHARMACY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_PHARMACY) - paycheck = PAYCHECK_MEDIUM - paycheck_department = ACCOUNT_MED - - liver_traits = list(TRAIT_MEDICAL_METABOLISM) - - allowed_species = list("Vampire", "Ghoul", "Human", "Werewolf", "Kuei-Jin") - display_order = JOB_DISPLAY_ORDER_DOCTOR - bounty_types = CIV_JOB_MED - - v_duty = "Help your fellow kindred in all matters medicine related. Sell blood. Keep your human colleagues ignorant." - duty = "Collect blood by helping mortals at the Clinic." - experience_addition = 15 - allowed_bloodlines = list("Daughters of Cacophony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff", "Kiasyd") - known_contacts = list("Clinic Director") - -/datum/outfit/job/vdoctor - name = "Doctor" - jobtype = /datum/job/vamp/vdoctor - - ears = /obj/item/p25radio - id = /obj/item/card/id/clinic - uniform = /obj/item/clothing/under/vampire/nurse - shoes = /obj/item/clothing/shoes/vampire/white - suit = /obj/item/clothing/suit/vampire/labcoat - gloves = /obj/item/clothing/gloves/vampire/latex - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/vamp/keys/clinic - backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1, /obj/item/storage/firstaid/medical=1) - - backpack = /obj/item/storage/backpack - satchel = /obj/item/storage/backpack/satchel - duffelbag = /obj/item/storage/backpack/duffelbag - - skillchips = list(/obj/item/skillchip/entrails_reader, /obj/item/skillchip/quickcarry) - -/obj/effect/landmark/start/vdoctor - name = "Doctor" - icon_state = "Doctor" - - -/datum/job/vamp/vdirector - title = "Clinic Director" - department_head = list("Seneschal") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = "the Camarilla or the Anarchs" - selection_color = "#80D0F4" - exp_type_department = EXP_TYPE_CLINIC - - - outfit = /datum/outfit/job/vdirector - - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_PHARMACY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_PHARMACY) - paycheck = PAYCHECK_COMMAND - paycheck_department = ACCOUNT_MED - - liver_traits = list(TRAIT_MEDICAL_METABOLISM) - - allowed_species = list("Vampire", "Ghoul", "Human", "Werewolf") - display_order = JOB_DISPLAY_ORDER_CLINICS_DIRECTOR - bounty_types = CIV_JOB_MED - - v_duty = "Keep Saint John's clinic up and running. Sell blood. Keep your human colleagues ignorant." - duty = "Keep Saint John's clinic up and running. Collect blood by helping mortals at the Clinic." - experience_addition = 15 - allowed_bloodlines = list("Daughters of Cacophony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff", "Kiasyd") - -/datum/outfit/job/vdirector - name = "Clinic Director" - jobtype = /datum/job/vamp/vdirector - - ears = /obj/item/p25radio - id = /obj/item/card/id/clinic/director - uniform = /obj/item/clothing/under/vampire/nurse - shoes = /obj/item/clothing/shoes/vampire/white - suit = /obj/item/clothing/suit/vampire/labcoat/director - gloves = /obj/item/clothing/gloves/vampire/latex - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/vamp/keys/clinics_director - backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1, /obj/item/storage/firstaid/medical=1) - - backpack = /obj/item/storage/backpack - satchel = /obj/item/storage/backpack/satchel - duffelbag = /obj/item/storage/backpack/duffelbag - - skillchips = list(/obj/item/skillchip/entrails_reader, /obj/item/skillchip/quickcarry) - -/obj/effect/landmark/start/vdirector - name = "Director" - icon_state = "Doctor" diff --git a/code/modules/vtmb/jobs/triad.dm b/code/modules/vtmb/jobs/gangs/triad.dm similarity index 89% rename from code/modules/vtmb/jobs/triad.dm rename to code/modules/vtmb/jobs/gangs/triad.dm index 9a2f5ce51e..6937e4a2b3 100644 --- a/code/modules/vtmb/jobs/triad.dm +++ b/code/modules/vtmb/jobs/gangs/triad.dm @@ -1,6 +1,6 @@ -/datum/job/vamp/triad_soldier - title = "Triad Soldier" +/datum/job/vamp/gangs/triad_soldier + title = JOB_TRIAD_GANGSTER department_head = list("Triad Leadership") faction = "Vampire" total_positions = 8 @@ -25,6 +25,10 @@ minimal_masquerade = 0 my_contact_is_important = FALSE +AddTimelock(/datum/job/vamp/gangs/triad_soldier, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + /datum/outfit/job/triad_soldier/pre_equip(mob/living/carbon/human/H) ..() H.grant_language(/datum/language/cantonese) @@ -34,7 +38,7 @@ /datum/outfit/job/triad_soldier name = "Triad Soldier" - jobtype = /datum/job/vamp/triad_soldier + jobtype = /datum/job/vamp/gangs/triad_soldier uniform = /obj/item/clothing/under/vampire/suit shoes = /obj/item/clothing/shoes/vampire/jackboots // suit = /obj/item/clothing/suit/vampire/vest diff --git a/code/modules/vtmb/jobs/giovanni.dm b/code/modules/vtmb/jobs/giovanni.dm deleted file mode 100644 index edde10c575..0000000000 --- a/code/modules/vtmb/jobs/giovanni.dm +++ /dev/null @@ -1,140 +0,0 @@ -/datum/job/vamp/giovannielder - title = "Capo" - department_head = list("Uncle Augie") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = "the Family and the Traditions" - selection_color = "#cb4aad" - - outfit = /datum/outfit/job/giovannielder - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_GIOVANNI - exp_type_department = EXP_TYPE_GIOVANNI - - minimal_generation = 11 //Uncomment when players get exp enough - - v_duty = "Pure blood runs through your veins and, with it, old power. Throughout your long life you have learnt to hold onto two things and never let go: money, and family." - minimal_masquerade = 0 - experience_addition = 10 - allowed_species = list("Vampire") - allowed_bloodlines = list("Giovanni", "Cappadocian") - -/datum/outfit/job/giovannielder - name = "Capo" - jobtype = /datum/job/vamp/giovannielder - - id = /obj/item/cockclock - glasses = /obj/item/clothing/glasses/vampire/sun - uniform = /obj/item/clothing/under/vampire/suit - suit = /obj/item/clothing/suit/vampire/trench - shoes = /obj/item/clothing/shoes/vampire - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/vamp/keys/capo - backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/giovanniboss=1) - -/datum/outfit/job/giovannielder/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == FEMALE) - uniform = /obj/item/clothing/under/vampire/suit/female - shoes = /obj/item/clothing/shoes/vampire/heels - -/obj/effect/landmark/start/giovannielder - name = "Capo" - -/datum/job/vamp/giovanni - title = "La Squadra" - department_head = list("Capo") - faction = "Vampire" - total_positions = 10 - spawn_positions = 10 - supervisors = "the Family and the Traditions" - selection_color = "#cb4aad" - - outfit = /datum/outfit/job/giovanni - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_GIOVANNI - exp_type_department = EXP_TYPE_GIOVANNI - - v_duty = "Whether born or Embraced into the family, you are one of the Giovanni. Be you a necromancer, financier or lowly fledgling, remember that so long as you stand with your family, they too will stand with you." - minimal_masquerade = 0 - experience_addition = 10 - allowed_species = list("Vampire") - allowed_bloodlines = list("Giovanni", "Cappadocian") - -/datum/outfit/job/giovanni - name = "La Squadra" - jobtype = /datum/job/vamp/giovanni - - id = /obj/item/cockclock - glasses = /obj/item/clothing/glasses/vampire/sun - uniform = /obj/item/clothing/under/vampire/suit - suit = /obj/item/clothing/suit/vampire/trench - shoes = /obj/item/clothing/shoes/vampire - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/vamp/keys/giovanni - backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/rich=1) - -/datum/outfit/job/giovanni/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == FEMALE) - uniform = /obj/item/clothing/under/vampire/suit/female - shoes = /obj/item/clothing/shoes/vampire/heels - -/obj/effect/landmark/start/giovanni - name = "La Squadra" - -/datum/job/vamp/giovannimafia - title = "La Famiglia" - department_head = list("Capo") - faction = "Vampire" - total_positions = 10 - spawn_positions = 10 - supervisors = "the Family" - selection_color = "#cb4aad" - - outfit = /datum/outfit/job/giovannimafia - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_GIOVANNI - exp_type_department = EXP_TYPE_GIOVANNI - -// minimal_generation = 11 //Uncomment when players get exp enough - - allowed_species = list("Ghoul", "Human") - duty = "Your family is a strange one. Maybe you are strange too, because sitting next to your great uncles as an equal is something you are greatly interested in." - minimal_masquerade = 0 - experience_addition = 10 - - -/datum/outfit/job/giovannimafia - name = "La Famiglia" - jobtype = /datum/job/vamp/giovannimafia - id = /obj/item/cockclock - glasses = /obj/item/clothing/glasses/vampire/sun - uniform = /obj/item/clothing/under/vampire/suit - suit = /obj/item/clothing/suit/vampire/trench - shoes = /obj/item/clothing/shoes/vampire - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/vamp/keys/giovanni - backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) - -/datum/outfit/job/giovannimafia/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == FEMALE) - uniform = /obj/item/clothing/under/vampire/suit/female - shoes = /obj/item/clothing/shoes/vampire/heels - -/obj/effect/landmark/start/giovannimafia - name = "La Famiglia" diff --git a/code/modules/vtmb/jobs/graveyard_keeper.dm b/code/modules/vtmb/jobs/graveyard_keeper.dm deleted file mode 100644 index 433bdfa166..0000000000 --- a/code/modules/vtmb/jobs/graveyard_keeper.dm +++ /dev/null @@ -1,51 +0,0 @@ - -/datum/job/vamp/graveyard - title = "Graveyard Keeper" - department_head = list("Seneschal") - faction = "Vampire" - total_positions = 6 - spawn_positions = 6 - supervisors = "the Camarilla or the Anarchs" - selection_color = "#e3e3e3" - exp_type_department = EXP_TYPE_SERVICES - - - outfit = /datum/outfit/job/graveyard - - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) - minimal_access = list(ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) - paycheck = PAYCHECK_MEDIUM - paycheck_department = ACCOUNT_CAR - - display_order = JOB_DISPLAY_ORDER_GRAVEYARD - bounty_types = CIV_JOB_MINE - - v_duty = "A vile curse has gripped the dead of this city. You must keep the graveyard clean and the Masquerade intact." - minimal_masquerade = 0 - experience_addition = 15 - allowed_species = list("Vampire", "Ghoul", "Kuei-Jin") - allowed_bloodlines = list("True Brujah", "Daughters of Cacophony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff", "Cappadocian") - -/datum/outfit/job/graveyard - name = "Graveyard Keeper" - jobtype = /datum/job/vamp/graveyard - - id = /obj/item/card/id/graveyard - shoes = /obj/item/clothing/shoes/vampire/jackboots -// gloves = /obj/item/clothing/gloves/color/black - uniform = /obj/item/clothing/under/vampire/graveyard - suit = /obj/item/clothing/suit/vampire/trench - glasses = /obj/item/clothing/glasses/vampire/yellow - gloves = /obj/item/clothing/gloves/vampire/work - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/vamp/keys/graveyard - r_hand = /obj/item/melee/vampirearms/shovel - backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1, /obj/item/melee/vampirearms/katana/kosa=1) - - backpack = /obj/item/storage/backpack - satchel = /obj/item/storage/backpack/satchel - duffelbag = /obj/item/storage/backpack/duffelbag - -/obj/effect/landmark/start/graveyardkeeper - name = "Graveyard Keeper" - icon_state = "Graveyard Keeper" diff --git a/code/modules/vtmb/jobs/janitor.dm b/code/modules/vtmb/jobs/janitor.dm deleted file mode 100644 index e546ccc2c0..0000000000 --- a/code/modules/vtmb/jobs/janitor.dm +++ /dev/null @@ -1,42 +0,0 @@ - -/datum/job/vamp/vjanitor - title = "Street Janitor" - department_head = list("Prince") - faction = "Vampire" - total_positions = 6 - spawn_positions = 6 - supervisors = "the Camarilla." - selection_color = "#e3e3e3" - - outfit = /datum/outfit/job/vjanitor - - access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - - allowed_species = list("Vampire", "Ghoul", "Human") - - display_order = JOB_DISPLAY_ORDER_STREETJAN - allowed_bloodlines = list("True Brujah", "Daughters of Cacophony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff") - - v_duty = "Clean up all traces of Masquerade violations as the Camarilla has instructed you to." - duty = "Keep the streets clean. You are paid to keep your mouth shut about the things you see." - minimal_masquerade = 0 - experience_addition = 15 - -/datum/outfit/job/vjanitor - name = "Street Janitor" - jobtype = /datum/job/vamp/vjanitor - - id = /obj/item/card/id/cleaning - uniform = /obj/item/clothing/under/vampire/janitor - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/vamp/keys/cleaning - shoes = /obj/item/clothing/shoes/vampire/jackboots/work - gloves = /obj/item/clothing/gloves/vampire/cleaning - backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/keys/hack=1, /obj/item/vamp/creditcard=1) - -/obj/effect/landmark/start/vjanitor - name = "Street Janitor" - icon_state = "Street Janitor" diff --git a/code/modules/vtmb/jobs/national_guard.dm b/code/modules/vtmb/jobs/national_guard.dm deleted file mode 100644 index 44af9764f3..0000000000 --- a/code/modules/vtmb/jobs/national_guard.dm +++ /dev/null @@ -1,398 +0,0 @@ -/datum/outfit/job/national_guard - name = "National Guard Soldier" - ears = /obj/item/p25radio/police/government - uniform = /obj/item/clothing/under/vampire/military_fatigues - mask = /obj/item/clothing/mask/vampire/balaclava - r_pocket = /obj/item/flashlight - l_pocket = /obj/item/ammo_box/magazine/vampaug - shoes = /obj/item/clothing/shoes/vampire/jackboots - belt = /obj/item/gun/ballistic/automatic/vampire/aug - suit = /obj/item/clothing/suit/vampire/vest/army - head = /obj/item/clothing/head/vampire/army - backpack_contents = list( - /obj/item/ammo_box/magazine/vampaug = 3, - /obj/item/radio/military = 1 - ) - -/datum/antagonist/national_guard/proc/equip_national_guard() - var/mob/living/carbon/human/H = owner.current - if(!ishuman(owner.current)) - return - H.equipOutfit(national_guard_outfit) - if(H.clane) - H.remove_overlay(H.clane.accessories_layers[H.clane.current_accessory]) - qdel(H.clane) - H.set_species(/datum/species/human) - H.generation = 13 - H.ignores_warrant = TRUE - H.maxHealth = round((initial(H.maxHealth)-initial(H.maxHealth)/4)+(initial(H.maxHealth)/4)*(H.physique+13-H.generation)) - H.health = round((initial(H.health)-initial(H.health)/4)+(initial(H.health)/4)*(H.physique+13-H.generation)) -/* var/my_name = "Tyler" - if(H.gender == MALE) - my_name = pick(GLOB.first_names_male) - else - my_name = pick(GLOB.first_names_female) - var/my_surname = pick(GLOB.last_names) - H.fully_replace_character_name(null,"[my_name] [my_surname]")*/ - for(var/datum/action/A in H.actions) - if(A.vampiric) - A.Remove(H) - H.thaumaturgy_knowledge = FALSE - QDEL_NULL(H.clane) - var/obj/item/organ/eyes/NV = new() - NV.Insert(H, TRUE, FALSE) - - var/list/landmarkslist = list() - for(var/obj/effect/landmark/start/S in GLOB.start_landmarks_list) - if(S.name == name) - landmarkslist += S - var/obj/effect/landmark/start/D = pick(landmarkslist) - H.forceMove(D.loc) - -/datum/antagonist/national_guard/proc/offer_loadout() - var/list/loadouts = list( - "Flamethrower", - "EOD", - "Medic", - "Sniper", - "Ammo Carrier" - ) - var/loadout_type = input(owner.current, "Choose your loadout:", "Loadout Selection") in loadouts - switch(loadout_type) - if("Flamethrower") - owner.current.put_in_r_hand(new /obj/item/vampire_flamethrower(owner.current)) - owner.current.put_in_l_hand(new /obj/item/gas_can/full(owner.current)) - if("EOD") - owner.current.put_in_r_hand(new /obj/item/clothing/suit/vampire/eod(owner.current)) - owner.current.put_in_l_hand(new /obj/item/clothing/head/vampire/eod(owner.current)) - if("Medic") - owner.current.put_in_r_hand(new /obj/item/storage/firstaid/tactical(owner.current)) - if("Sniper") - owner.current.put_in_r_hand(new /obj/item/gun/ballistic/automatic/vampire/sniper(owner.current)) - owner.current.put_in_l_hand(new /obj/item/ammo_box/vampire/c556(owner.current)) - if("Ammo Carrier") - owner.current.put_in_r_hand(new /obj/item/ammo_box/vampire/c556/incendiary(owner.current)) - owner.current.put_in_l_hand(new /obj/item/ammo_box/vampire/c556/incendiary(owner.current)) - -/obj/effect/landmark/start/national_guard - name = "National Guard" - delete_after_roundstart = FALSE - -/datum/antagonist/national_guard - name = "National Guard" - roundend_category = "national guard" - antagpanel_category = "National Guard" - job_rank = ROLE_NATIONAL_GUARD - antag_hud_type = ANTAG_HUD_OPS - antag_hud_name = "synd" - antag_moodlet = /datum/mood_event/focused - show_to_ghosts = TRUE - var/always_new_team = FALSE - var/datum/team/national_guard/national_guard_team - var/national_guard_outfit = /datum/outfit/job/national_guard - var/custom_objective - -/datum/antagonist/national_guard/sergeant - name = "National Guard Sergeant" - always_new_team = TRUE - var/title - -/datum/antagonist/national_guard/on_gain() - randomize_appearance() - forge_objectives() - add_antag_hud(ANTAG_HUD_OPS, "synd", owner.current) - owner.special_role = src - equip_national_guard() - give_alias() - offer_loadout() - return ..() - -/datum/antagonist/national_guard/on_removal() - ..() - to_chat(owner.current,"You are no longer in the National Guard!") - owner.special_role = null - -/datum/antagonist/national_guard/greet() - to_chat(owner.current, "You're in the national guard.") - to_chat(owner, "You are a [national_guard_team ? national_guard_team.national_guard_name : "national guard"] soldier!") - owner.announce_objectives() - - -/datum/antagonist/national_guard/proc/give_alias() - var/my_name = "Tyler" - var/list/military_ranks = list("Private", "Private First Class", "Specialist", "Corporal") - var/selected_rank = pick(military_ranks) - if(owner.current.gender == MALE) - my_name = pick(GLOB.first_names_male) - else - my_name = pick(GLOB.first_names_female) - var/my_surname = pick(GLOB.last_names) - owner.current.fully_replace_character_name(null,"[selected_rank] [my_name] [my_surname]") - -/datum/antagonist/national_guard/proc/forge_objectives() - if(national_guard_team) - objectives |= national_guard_team.objectives - -/datum/antagonist/national_guard/sergeant/give_alias() - var/my_name = "Tyler" - if(owner.current.gender == MALE) - my_name = pick(GLOB.first_names_male) - else - my_name = pick(GLOB.first_names_female) - var/my_surname = pick(GLOB.last_names) - owner.current.fully_replace_character_name(null,"Sergeant [my_name] [my_surname]") - -/datum/team/national_guard/antag_listing_name() - if(national_guard_name) - return "[national_guard_name] Soldiers" - else - return "Soldiers" - - -/datum/antagonist/national_guard/sergeant/greet() - to_chat(owner, "You are the leading sergeant for this mission. You are responsible for guiding your team's operation.") - to_chat(owner, "If you feel you are not up to this task, give your command to another soldier.") - owner.announce_objectives() - addtimer(CALLBACK(src, PROC_REF(national_guardteam_name_assign)), 1) - -/datum/antagonist/national_guard/sergeant/proc/national_guardteam_name_assign() - if(!national_guard_team) - return - national_guard_team.rename_team(ask_name()) - -/datum/antagonist/national_guard/sergeant/proc/ask_name() - var/randomname = pick(GLOB.last_names) - var/newname = stripped_input(owner.current,"You are the sergeant. Please choose a name for your team.", "Name change",randomname) - if (!newname) - newname = randomname - else - newname = reject_bad_name(newname) - if(!newname) - newname = randomname - -/datum/antagonist/national_guard/create_team(datum/team/national_guard/new_team) - if(!new_team) - if(!always_new_team) - for(var/datum/antagonist/national_guard/N in GLOB.antagonists) - if(!N.owner) - stack_trace("Antagonist datum without owner in GLOB.antagonists: [N]") - continue - national_guard_team = new /datum/team/national_guard - national_guard_team.update_objectives() - return - if(!istype(national_guard_team)) - stack_trace("Wrong team type passed to [type] initialization.") - national_guard_team = new_team - -/datum/antagonist/national_guard/admin_add(datum/mind/new_owner,mob/admin) - new_owner.assigned_role = ROLE_NATIONAL_GUARD - new_owner.add_antag_datum(src) - message_admins("[key_name_admin(admin)] has national guard'd [key_name_admin(new_owner)].") - log_admin("[key_name(admin)] has national guard'd [key_name(new_owner)].") - -/datum/random_gen/national_guard - var/hair_colors = list("040404", //Black - "120b05", //Dark Brown - "342414", //Brown - "554433", //Light Brown - "695c3b", //Dark Blond - "ad924e", //Blond - "dac07f", //Light Blond - "802400", //Ginger - "a5380e", //Ginger alt - "ffeace", //Albino - "650b0b", //Punk Red - "14350e", //Punk Green - "080918") //Punk Blue - - var/male_hair = list("Balding Hair", - "Bedhead", - "Bedhead 2", - "Bedhead 3", - "Boddicker", - "Business Hair", - "Business Hair 2", - "Business Hair 3", - "Business Hair 4", - "Coffee House", - "Combover", - "Crewcut", - "Father", - "Flat Top", - "Gelled Back", - "Joestar", - "Keanu Hair", - "Oxton", - "Volaju") - - var/male_facial = list("Beard (Abraham Lincoln)", - "Beard (Chinstrap)", - "Beard (Full)", - "Beard (Cropped Fullbeard)", - "Beard (Hipster)", - "Beard (Neckbeard)", - "Beard (Three o Clock Shadow)", - "Beard (Five o Clock Shadow)", - "Beard (Seven o Clock Shadow)", - "Moustache (Hulk Hogan)", - "Moustache (Watson)", - "Sideburns (Elvis)", - "Sideburns") - - var/female_hair = list("Ahoge", - "Long Bedhead", - "Beehive", - "Beehive 2", - "Bob Hair", - "Bob Hair 2", - "Bob Hair 3", - "Bob Hair 4", - "Bobcurl", - "Braided", - "Braided Front", - "Braid (Short)", - "Braid (Low)", - "Bun Head", - "Bun Head 2", - "Bun Head 3", - "Bun (Large)", - "Bun (Tight)", - "Double Bun", - "Emo", - "Emo Fringe", - "Feather", - "Gentle", - "Long Hair 1", - "Long Hair 2", - "Long Hair 3", - "Long Over Eye", - "Long Emo", - "Long Fringe", - "Ponytail", - "Ponytail 2", - "Ponytail 3", - "Ponytail 4", - "Ponytail 5", - "Ponytail 6", - "Ponytail 7", - "Ponytail (High)", - "Ponytail (Short)", - "Ponytail (Long)", - "Ponytail (Country)", - "Ponytail (Fringe)", - "Poofy", - "Short Hair Rosa", - "Shoulder-length Hair", - "Volaju") - -/datum/antagonist/national_guard/proc/randomize_appearance() - var/datum/random_gen/national_guard/h_gen = new - var/mob/living/carbon/human/H = owner.current - H.gender = pick(MALE, FEMALE) - H.body_type = H.gender - H.age = rand(18, 36) -// if(age >= 55) -// hair_color = "a2a2a2" -// facial_hair_color = hair_color -// else - H.hair_color = pick(h_gen.hair_colors) - H.facial_hair_color = H.hair_color - if(H.gender == MALE) - H.hairstyle = pick(h_gen.male_hair) - if(prob(25) || H.age >= 25) - H.facial_hairstyle = pick(h_gen.male_facial) - else - H.facial_hairstyle = "Shaved" - else - H.hairstyle = pick(h_gen.female_hair) - H.facial_hairstyle = "Shaved" - H.name = H.real_name - H.dna.real_name = H.real_name - var/obj/item/organ/eyes/organ_eyes = H.getorgan(/obj/item/organ/eyes) - if(organ_eyes) - organ_eyes.eye_color = random_eye_color() - H.underwear = random_underwear(H.gender) - if(prob(50)) - H.underwear_color = organ_eyes.eye_color - if(prob(50) || H.gender == FEMALE) - H.undershirt = random_undershirt(H.gender) - if(prob(25)) - H.socks = random_socks() - H.update_body() - H.update_hair() - H.update_body_parts() - -/datum/team/national_guard/proc/rename_team(new_name) - national_guard_name = new_name - name = "[national_guard_name] Team" - -/datum/team/national_guard - var/national_guard_name - var/core_objective = /datum/objective/national_guard - member_name = "National Guard Operative" - var/memorized_code - var/list/team_discounts - var/obj/item/nuclear_challenge/war_button - -/datum/team/national_guard/New() - ..() - national_guard_name = national_guard_name() - -/datum/team/national_guard/proc/update_objectives() - if(core_objective) - var/datum/objective/O = new core_objective - O.team = src - objectives += O - - -/datum/team/national_guard/roundend_report() - var/list/parts = list() - parts += "[national_guard_name] Operatives:" - - var/text = "
The national guard were:" - text += printplayerlist(members) - parts += text - - return "
[parts.Join("
")]
" - - - - -////////////////////////////////////////////// -// // -// NATIONAL GUARD SQUAD (MIDROUND) // -// // -////////////////////////////////////////////// - -/datum/dynamic_ruleset/midround/from_ghosts/national_guard - name = "National Guard Squad" - antag_flag = ROLE_NATIONAL_GUARD - antag_datum = /datum/antagonist/national_guard - required_candidates = 1 - weight = 5 - cost = 35 - requirements = list(90,90,90,80,60,40,30,20,10,10) - var/list/operative_cap = list(2,2,3,3,4,5,5,5,5,5) - var/datum/team/national_guard/national_guard_team - flags = HIGHLANDER_RULESET - -/datum/dynamic_ruleset/midround/from_ghosts/national_guard/acceptable(population=0, threat=0) - indice_pop = min(operative_cap.len, round(living_players.len/5)+1) - required_candidates = max(5, operative_cap[indice_pop]) - return ..() - -/datum/dynamic_ruleset/midround/from_ghosts/national_guard/ready(forced = FALSE) - if (required_candidates > (dead_players.len + list_observers.len)) - return FALSE - return ..() - -/datum/dynamic_ruleset/midround/from_ghosts/national_guard/finish_setup(mob/new_character, index) - new_character.mind.special_role = "National Guard" - new_character.mind.assigned_role = "National Guard" - if (index == 1) // Our first guy is the leader - var/datum/antagonist/national_guard/sergeant/new_role = new - national_guard_team = new_role.national_guard_team - new_character.mind.add_antag_datum(new_role) - else - return ..() - diff --git a/code/modules/vtmb/jobs/fbi.dm b/code/modules/vtmb/jobs/national_security/fbi.dm similarity index 88% rename from code/modules/vtmb/jobs/fbi.dm rename to code/modules/vtmb/jobs/national_security/fbi.dm index 41f21b6dc0..ef498b5822 100644 --- a/code/modules/vtmb/jobs/fbi.dm +++ b/code/modules/vtmb/jobs/national_security/fbi.dm @@ -1,6 +1,6 @@ -/datum/job/vamp/fbi - title = "Federal Investigator" +/datum/job/vamp/national_security/fbi + title = JOB_FBI department_head = list("Federal Bureau of Investigation") faction = "Vampire" total_positions = 2 @@ -25,9 +25,14 @@ my_contact_is_important = FALSE known_contacts = list("Police Chief") +AddTimelock(/datum/job/vamp/national_security/fbi, list( + JOB_POLICE_ROLES = 15 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + /datum/outfit/job/fbi name = "Federal Investigator" - jobtype = /datum/job/vamp/fbi + jobtype = /datum/job/vamp/national_security/fbi ears = /obj/item/p25radio/police/government uniform = /obj/item/clothing/under/vampire/office diff --git a/code/modules/vtmb/jobs/national_security/national_security.dm b/code/modules/vtmb/jobs/national_security/national_security.dm new file mode 100644 index 0000000000..ce0dbaf6b7 --- /dev/null +++ b/code/modules/vtmb/jobs/national_security/national_security.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/national_security + supervisors = "Your Country and respective supervisors" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/national_security + name = "National Security Roles" + +/datum/timelock/national_security/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_NATIONAL_SECURITY_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/swat.dm b/code/modules/vtmb/jobs/national_security/swat.dm similarity index 100% rename from code/modules/vtmb/jobs/swat.dm rename to code/modules/vtmb/jobs/national_security/swat.dm diff --git a/code/modules/vtmb/jobs/police.dm b/code/modules/vtmb/jobs/police_force/police.dm similarity index 87% rename from code/modules/vtmb/jobs/police.dm rename to code/modules/vtmb/jobs/police_force/police.dm index fe1f9f0013..58e9ef6fe9 100644 --- a/code/modules/vtmb/jobs/police.dm +++ b/code/modules/vtmb/jobs/police_force/police.dm @@ -1,6 +1,6 @@ -/datum/job/vamp/police_officer - title = "Police Officer" +/datum/job/vamp/police_force/police_officer + title = JOB_POLICE department_head = list("Police Department") faction = "Vampire" total_positions = 5 @@ -25,9 +25,13 @@ my_contact_is_important = FALSE known_contacts = list("Police Chief") +AddTimelock(/datum/job/vamp/police_force/police_officer, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + /datum/outfit/job/police_officer name = "Police Officer" - jobtype = /datum/job/vamp/police_officer + jobtype = /datum/job/vamp/police_force/police_officer ears = /obj/item/p25radio/police uniform = /obj/item/clothing/under/vampire/police @@ -40,8 +44,8 @@ r_pocket = /obj/item/vamp/keys/police backpack_contents = list(/obj/item/passport=1, /obj/item/implant/radio=1, /obj/item/vamp/creditcard=1, /obj/item/ammo_box/vampire/c9mm = 1, /obj/item/restraints/handcuffs = 1,/obj/item/melee/classic_baton/vampire = 1, /obj/item/storage/firstaid/ifak = 1) -/datum/job/vamp/police_sergeant - title = "Police Sergeant" +/datum/job/vamp/police_force/police_sergeant + title = JOB_POLICE_SERGEANT department_head = list("Police Department") faction = "Vampire" total_positions = 2 @@ -65,9 +69,14 @@ my_contact_is_important = FALSE known_contacts = list("Police Chief") +AddTimelock(/datum/job/vamp/police_force/police_sergeant, list( + JOB_POLICE_ROLES = 5 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + /datum/outfit/job/police_sergeant name = "Police Sergeant" - jobtype = /datum/job/vamp/police_sergeant + jobtype = /datum/job/vamp/police_force/police_sergeant ears = /obj/item/p25radio/police/supervisor uniform = /obj/item/clothing/under/vampire/police @@ -80,8 +89,8 @@ r_pocket = /obj/item/vamp/keys/police/secure backpack_contents = list(/obj/item/passport=1, /obj/item/implant/radio=1, /obj/item/vamp/creditcard=1, /obj/item/ammo_box/vampire/c9mm = 1, /obj/item/restraints/handcuffs = 1,/obj/item/melee/classic_baton/vampire = 1, /obj/item/storage/firstaid/ifak = 1) -/datum/job/vamp/police_chief - title = "Police Chief" +/datum/job/vamp/police_force/police_chief + title = JOB_POLICE_CHIEF department_head = list("Police Department") faction = "Vampire" total_positions = 1 @@ -105,9 +114,14 @@ my_contact_is_important = FALSE // known_contacts = list("Investigator") +AddTimelock(/datum/job/vamp/police_force/police_chief, list( + JOB_POLICE_ROLES = 10 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + /datum/outfit/job/police_chief name = "Police Chief" - jobtype = /datum/job/vamp/police_chief + jobtype = /datum/job/vamp/police_force/police_chief ears = /obj/item/p25radio/police/command uniform = /obj/item/clothing/under/vampire/police diff --git a/code/modules/vtmb/jobs/police_force/police_force.dm b/code/modules/vtmb/jobs/police_force/police_force.dm new file mode 100644 index 0000000000..c8a5826f6f --- /dev/null +++ b/code/modules/vtmb/jobs/police_force/police_force.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/police_force + supervisors = "the SFPD" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/police_force + name = "Police Force Roles" + +/datum/timelock/police_force/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_POLICE_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/primogen.dm b/code/modules/vtmb/jobs/primogen.dm deleted file mode 100644 index 6cb3b511d5..0000000000 --- a/code/modules/vtmb/jobs/primogen.dm +++ /dev/null @@ -1,232 +0,0 @@ -/datum/job/vamp/primogen_malkavian - title = "Primogen Malkavian" - department_head = list("Justicar") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = " the Traditions" - selection_color = "#4f0404" - - outfit = /datum/outfit/job/malkav - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_MALKAVIAN - exp_type_department = EXP_TYPE_COUNCIL - - allowed_species = list("Vampire") - allowed_bloodlines = list("Malkavian") - minimal_generation = 7 //Uncomment when players get exp enough - - v_duty = "Offer your infinite knowledge to Prince of the City." - experience_addition = 20 - minimal_masquerade = 5 - my_contact_is_important = TRUE - known_contacts = list("Prince") - -/datum/outfit/job/malkav - name = "Primogen Malkavian" - jobtype = /datum/job/vamp/primogen_malkavian - - ears = /obj/item/p25radio - id = /obj/item/card/id/primogen - glasses = /obj/item/clothing/glasses/vampire/sun - uniform = /obj/item/clothing/under/vampire/primogen_malkavian - suit = /obj/item/clothing/suit/vampire/trench/malkav - shoes = /obj/item/clothing/shoes/vampire/jackboots - head = /obj/item/clothing/head/vampire/malkav - l_pocket = /obj/item/vamp/phone/malkavian - r_pocket = /obj/item/cockclock - backpack_contents = list(/obj/item/vamp/keys/malkav/primogen=1, /obj/item/vamp/keys/clinic, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/elder=1, /obj/item/card/id/whip, /obj/item/card/id/steward, /obj/item/card/id/myrmidon) - -/datum/outfit/job/malkav/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == FEMALE) - suit = null - head = null - uniform = /obj/item/clothing/under/vampire/primogen_malkavian/female - shoes = /obj/item/clothing/shoes/vampire/heels - -/datum/job/vamp/primogen_nosferatu - title = "Primogen Nosferatu" - department_head = list("Justicar") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = " the Traditions" - selection_color = "#4f0404" - - outfit = /datum/outfit/job/nosferatu - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_NOSFERATU - exp_type_department = EXP_TYPE_COUNCIL - - allowed_species = list("Vampire") - allowed_bloodlines = list("Nosferatu") - minimal_generation = 7 //Uncomment when players get exp enough - - v_duty = "Offer your infinite knowledge to Prince of the City." - experience_addition = 20 - minimal_masquerade = 5 - my_contact_is_important = TRUE - known_contacts = list("Prince") - -/datum/outfit/job/nosferatu - name = "Primogen Nosferatu" - jobtype = /datum/job/vamp/primogen_nosferatu - - id = /obj/item/card/id/primogen - mask = /obj/item/clothing/mask/vampire/shemagh - glasses = /obj/item/clothing/glasses/vampire/sun - uniform = /obj/item/clothing/under/vampire/suit - suit = /obj/item/clothing/suit/vampire/trench - shoes = /obj/item/clothing/shoes/vampire - l_pocket = /obj/item/vamp/phone/nosferatu - r_pocket = /obj/item/cockclock - backpack_contents = list(/obj/item/vamp/keys/nosferatu/primogen=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/elder=1, /obj/item/card/id/whip, /obj/item/card/id/steward, /obj/item/card/id/myrmidon) - -/datum/outfit/job/nosferatu/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == FEMALE) - shoes = /obj/item/clothing/shoes/vampire/heels - -/datum/job/vamp/primogen_ventrue - title = "Primogen Ventrue" - department_head = list("Justicar") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = " the Traditions" - selection_color = "#4f0404" - - outfit = /datum/outfit/job/ventrue - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_VENTRUE - exp_type_department = EXP_TYPE_COUNCIL - - allowed_species = list("Vampire") - allowed_bloodlines = list("Ventrue") - minimal_generation = 7 //Uncomment when players get exp enough - - v_duty = "Offer your infinite knowledge to Prince of the City." - experience_addition = 20 - minimal_masquerade = 5 - my_contact_is_important = TRUE - known_contacts = list("Prince") - -/datum/outfit/job/ventrue - name = "Primogen Ventrue" - jobtype = /datum/job/vamp/primogen_ventrue - - id = /obj/item/card/id/primogen - glasses = /obj/item/clothing/glasses/vampire/sun - uniform = /obj/item/clothing/under/vampire/suit - suit = /obj/item/clothing/suit/vampire/trench - shoes = /obj/item/clothing/shoes/vampire - l_pocket = /obj/item/vamp/phone/ventrue - r_pocket = /obj/item/cockclock - backpack_contents = list(/obj/item/vamp/keys/ventrue/primogen=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/elder=1, /obj/item/card/id/whip, /obj/item/card/id/steward, /obj/item/card/id/myrmidon) - -/datum/outfit/job/ventrue/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == FEMALE) - shoes = /obj/item/clothing/shoes/vampire/heels - -/datum/job/vamp/primogen_toreador - title = "Primogen Toreador" - department_head = list("Justicar") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = " the Traditions" - selection_color = "#4f0404" - - outfit = /datum/outfit/job/toreador - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_TOREADOR - exp_type_department = EXP_TYPE_COUNCIL - - allowed_species = list("Vampire") - allowed_bloodlines = list("Toreador") - minimal_generation = 7 //Uncomment when players get exp enough - - v_duty = "Offer your infinite knowledge to Prince of the City." - experience_addition = 20 - minimal_masquerade = 5 - my_contact_is_important = TRUE - known_contacts = list("Prince") - -/datum/outfit/job/toreador - name = "Primogen Toreador" - jobtype = /datum/job/vamp/primogen_toreador - - id = /obj/item/card/id/primogen - glasses = /obj/item/clothing/glasses/vampire/sun - uniform = /obj/item/clothing/under/vampire/primogen_toreador - suit = /obj/item/clothing/suit/vampire/trench/alt - shoes = /obj/item/clothing/shoes/vampire - l_pocket = /obj/item/vamp/phone/toreador - r_pocket = /obj/item/cockclock - backpack_contents = list(/obj/item/vamp/keys/toreador/primogen=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/elder=1, /obj/item/card/id/whip, /obj/item/card/id/steward, /obj/item/card/id/myrmidon) - -/datum/outfit/job/toreador/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == FEMALE) - uniform = /obj/item/clothing/under/vampire/primogen_toreador/female - shoes = /obj/item/clothing/shoes/vampire/heels/red - - -/datum/job/vamp/primogen_brujah - title = "Primogen Brujah" - department_head = list("Justicar") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = " the Traditions" - selection_color = "#4f0404" - - outfit = /datum/outfit/job/brujah - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_BRUJAH - exp_type_department = EXP_TYPE_COUNCIL - - allowed_species = list("Vampire") - allowed_bloodlines = list("Brujah") - minimal_generation = 7 //Uncomment when players get exp enough - - v_duty = "Offer your infinite knowledge to Prince of the City." - experience_addition = 20 - minimal_masquerade = 5 - my_contact_is_important = TRUE - known_contacts = list("Prince") - -/datum/outfit/job/brujah - name = "Primogen Brujah" - jobtype = /datum/job/vamp/primogen_brujah - - id = /obj/item/card/id/primogen - glasses = /obj/item/clothing/glasses/vampire/yellow - uniform = /obj/item/clothing/under/vampire/punk - suit = /obj/item/clothing/suit/vampire/jacket/punk - shoes = /obj/item/clothing/shoes/vampire/jackboots - l_pocket = /obj/item/vamp/phone/brujah - r_pocket = /obj/item/cockclock - backpack_contents = list(/obj/item/vamp/keys/brujah/primogen=1, /obj/item/melee/vampirearms/eguitar=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/elder=1, /obj/item/card/id/whip, /obj/item/card/id/steward, /obj/item/card/id/myrmidon) diff --git a/code/modules/vtmb/jobs/prince.dm b/code/modules/vtmb/jobs/prince.dm deleted file mode 100644 index 847d1fe7e5..0000000000 --- a/code/modules/vtmb/jobs/prince.dm +++ /dev/null @@ -1,81 +0,0 @@ -/datum/job/vamp/prince - title = "Prince" - auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY - department_head = list("Justicar") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = "the Camarilla and the Traditions" - selection_color = "#bd3327" - req_admin_notify = 1 - minimal_player_age = 14 - exp_requirements = 180 - exp_type = EXP_TYPE_CREW - exp_type_department = EXP_TYPE_CAMARILLIA - - outfit = /datum/outfit/job/prince - - access = list() //See get_access() - minimal_access = list() //See get_access() - paycheck = PAYCHECK_COMMAND - paycheck_department = ACCOUNT_SEC - - liver_traits = list(TRAIT_ROYAL_METABOLISM) - - display_order = JOB_DISPLAY_ORDER_PRINCE - - minimal_generation = 10 //Uncomment when players get exp enough - minimal_masquerade = 5 - allowed_species = list("Vampire") - allowed_bloodlines = list("Tremere", "Ventrue", "Nosferatu", "Toreador", "Malkavian", "Brujah", "Lasombra", "Gangrel", "True Brujah") - - my_contact_is_important = TRUE - known_contacts = list( - "Sheriff", - "Seneschal", - "Dealer", - "Tremere Regent", - "Primogens", - "Baron" - ) - - v_duty = "You are the top dog of this city. You hold Praxis over San Francisco, and your word is law. Make sure the Masquerade is upheld, and your status is respected." - experience_addition = 25 - -/datum/job/vamp/prince/announce(mob/living/carbon/human/H) - ..() - SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, PROC_REF(minor_announce), "Prince [H.real_name] is in the city!")) - -/datum/outfit/job/prince - name = "Prince" - jobtype = /datum/job/vamp/prince - - ears = /obj/item/p25radio - id = /obj/item/card/id/prince - glasses = /obj/item/clothing/glasses/vampire/sun - gloves = /obj/item/clothing/gloves/vampire/latex - uniform = /obj/item/clothing/under/vampire/prince - suit = /obj/item/clothing/suit/vampire/trench/alt - shoes = /obj/item/clothing/shoes/vampire - l_pocket = /obj/item/vamp/phone/prince - r_pocket = /obj/item/vamp/keys/prince - backpack_contents = list(/obj/item/gun/ballistic/automatic/vampire/deagle=1, /obj/item/phone_book=1, /obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/masquerade_contract=1, /obj/item/vamp/creditcard/prince=1) - - - backpack = /obj/item/storage/backpack - satchel = /obj/item/storage/backpack/satchel - duffelbag = /obj/item/storage/backpack/duffelbag - - implants = list(/obj/item/implant/mindshield) -// accessory = /obj/item/clothing/accessory/medal/gold/captain - -/datum/outfit/job/prince/pre_equip(mob/living/carbon/human/H) - ..() - H.ignores_warrant = TRUE - if(H.gender == FEMALE) - uniform = /obj/item/clothing/under/vampire/prince/female - shoes = /obj/item/clothing/shoes/vampire/heels - -/obj/effect/landmark/start/prince - name = "Prince" - icon_state = "Prince" diff --git a/code/modules/vtmb/jobs/sheriff.dm b/code/modules/vtmb/jobs/sheriff.dm deleted file mode 100644 index dfff822ad9..0000000000 --- a/code/modules/vtmb/jobs/sheriff.dm +++ /dev/null @@ -1,78 +0,0 @@ -/datum/job/vamp/sheriff - title = "Sheriff" - auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY - department_head = list("Prince") - head_announce = list(RADIO_CHANNEL_SECURITY) - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = "the prince" - selection_color = "#bd3327" - req_admin_notify = 1 - minimal_player_age = 14 - exp_requirements = 300 - exp_type = EXP_TYPE_CREW - exp_type_department = EXP_TYPE_CAMARILLIA - - outfit = /datum/outfit/job/sheriff - - mind_traits = list(TRAIT_DONUT_LOVER) - liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM, TRAIT_ROYAL_METABOLISM) - - access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY, - ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_AUX_BASE, - ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, ACCESS_EVA, ACCESS_TELEPORTER, - ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY, - ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_AUX_BASE, - ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, ACCESS_EVA, - ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) - paycheck = PAYCHECK_COMMAND - paycheck_department = ACCOUNT_SEC - - display_order = JOB_DISPLAY_ORDER_SHERIFF - bounty_types = CIV_JOB_SEC - - minimal_generation = 12 //Uncomment when players get exp enough - minimal_masquerade = 5 - allowed_species = list("Vampire") - allowed_bloodlines = list("True Brujah", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Lasombra") - - my_contact_is_important = TRUE - known_contacts = list("Prince","Seneschal","Dealer") - - v_duty = "Protect the Prince and the Masquerade. You are their sword." - experience_addition = 20 - -/datum/outfit/job/sheriff - name = "Sheriff" - jobtype = /datum/job/vamp/sheriff - - ears = /obj/item/p25radio - id = /obj/item/card/id/sheriff - uniform = /obj/item/clothing/under/vampire/sheriff - belt = /obj/item/storage/belt/vampire/sheathe/rapier - shoes = /obj/item/clothing/shoes/vampire/jackboots - suit = /obj/item/clothing/suit/vampire/vest - gloves = /obj/item/clothing/gloves/vampire/leather -// head = /obj/item/clothing/head/hos/beret - glasses = /obj/item/clothing/glasses/vampire/sun - r_pocket = /obj/item/vamp/keys/sheriff - l_pocket = /obj/item/vamp/phone/sheriff - backpack_contents = list(/obj/item/gun/ballistic/automatic/vampire/deagle=1, /obj/item/vampire_stake=3, /obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/masquerade_contract=1, /obj/item/vamp/creditcard/elder=1) - - backpack = /obj/item/storage/backpack - satchel = /obj/item/storage/backpack/satchel - duffelbag = /obj/item/storage/backpack/duffelbag - - implants = list(/obj/item/implant/mindshield) - -/datum/outfit/job/sheriff/pre_equip(mob/living/carbon/human/H) - ..() - H.ignores_warrant = TRUE - if(H.gender == FEMALE) - uniform = /obj/item/clothing/under/vampire/sheriff/female - -/obj/effect/landmark/start/sheriff - name = "Sheriff" - icon_state = "Sheriff" diff --git a/code/modules/vtmb/jobs/stripper.dm b/code/modules/vtmb/jobs/stripper.dm deleted file mode 100644 index df8dc9ea4e..0000000000 --- a/code/modules/vtmb/jobs/stripper.dm +++ /dev/null @@ -1,45 +0,0 @@ - -/datum/job/vamp/strip - title = "Stripper" - faction = "Vampire" - total_positions = 4 - spawn_positions = 4 - supervisors = "the Camarilla or the Anarchs" - selection_color = "#e3e3e3" - access = list() - minimal_access = list() - outfit = /datum/outfit/job/strip - antag_rep = 7 - paycheck = PAYCHECK_ASSISTANT // Get a job. Job reassignment changes your paycheck now. Get over it. - exp_type_department = EXP_TYPE_SERVICES - - paycheck_department = ACCOUNT_CIV - display_order = JOB_DISPLAY_ORDER_STRIP - allowed_species = list("Vampire", "Ghoul", "Human", "Werewolf", "Kuei-Jin") - - v_duty = "Offer strip club services to humans or undead." - duty = "Offer strip club services." - minimal_masquerade = 3 - allowed_bloodlines = list("True Brujah", "Daughters of Cacophony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff", "Kiasyd") - experience_addition = 10 - -/datum/outfit/job/strip - name = "Stripper" - jobtype = /datum/job/vamp/citizen - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/vamp/keys/strip - id = /obj/item/cockclock - backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) - -/datum/outfit/job/strip/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == MALE) - shoes = /obj/item/clothing/shoes/vampire/white - uniform = /obj/item/clothing/under/vampire/slickback - else - shoes = /obj/item/clothing/shoes/vampire/heels - uniform = /obj/item/clothing/under/vampire/burlesque - -/obj/effect/landmark/start/strip - name = "Strip" - icon_state = "Assistant" diff --git a/code/modules/vtmb/jobs/supply_assistant.dm b/code/modules/vtmb/jobs/supply_assistant.dm deleted file mode 100644 index 59fcf9955e..0000000000 --- a/code/modules/vtmb/jobs/supply_assistant.dm +++ /dev/null @@ -1,46 +0,0 @@ - -/datum/job/vamp/supply - title = "Supply Technician" - department_head = list("Dealer") - faction = "Vampire" - total_positions = 4 - spawn_positions = 4 - supervisors = "the Dealer" - selection_color = "#edc009" - exp_type_department = EXP_TYPE_WAREHOUSE - - outfit = /datum/outfit/job/supply - - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM, ACCESS_MECH_MINING) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_CAR - display_order = JOB_DISPLAY_ORDER_SUPPLY - bounty_types = CIV_JOB_RANDOM - allowed_species = list("Vampire", "Ghoul", "Human", "Kuei-Jin") - known_contacts = list("Dealer") - allowed_bloodlines = list("True Brujah", "Daughters of Cacophony", "Brujah", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Tzimisce", "Caitiff", "Lasombra", "Gargoyle", "Kiasyd", "Cappadocian") - - v_duty = "You work for the Dealer, or are a part of their coterie. They pay well and the job is easy. Don't disappoint them." - duty = "Though your boss is odd and only works late night hours, they pay you well enough that you avoid questioning it." - minimal_masquerade = 2 - experience_addition = 15 - -/datum/outfit/job/supply - name = "Supply Technician" - jobtype = /datum/job/vamp/supply - - id = /obj/item/card/id/supplytech - uniform = /obj/item/clothing/under/vampire/supply - gloves = /obj/item/clothing/gloves/vampire/work - l_pocket = /obj/item/vamp/phone/supply_tech - r_pocket = /obj/item/vamp/keys/supply - shoes = /obj/item/clothing/shoes/vampire/jackboots - backpack_contents = list(/obj/item/passport=1, /obj/item/phone_book=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) - -/datum/outfit/job/supply/pre_equip(mob/living/carbon/human/H) - ..() - -/obj/effect/landmark/start/supplytechnician - name = "Supply Technician" - icon_state = "Supply Technician" diff --git a/code/modules/vtmb/jobs/archivist.dm b/code/modules/vtmb/jobs/tremere/archivist.dm similarity index 90% rename from code/modules/vtmb/jobs/archivist.dm rename to code/modules/vtmb/jobs/tremere/archivist.dm index 901bf286f7..c6ed5d6b57 100644 --- a/code/modules/vtmb/jobs/archivist.dm +++ b/code/modules/vtmb/jobs/tremere/archivist.dm @@ -1,6 +1,6 @@ -/datum/job/vamp/archivist - title = "Chantry Archivist" +/datum/job/vamp/tremere/archivist + title = JOB_ARCHIVIST department_head = list("Prince") faction = "Vampire" total_positions = 4 @@ -25,9 +25,13 @@ known_contacts = list("Tremere Regent") experience_addition = 15 +AddTimelock(/datum/job/vamp/tremere/archivist, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + /datum/outfit/job/archivist name = "Archivist" - jobtype = /datum/job/vamp/archivist + jobtype = /datum/job/vamp/tremere/archivist id = /obj/item/card/id/archive glasses = /obj/item/clothing/glasses/vampire/perception diff --git a/code/modules/vtmb/jobs/regent.dm b/code/modules/vtmb/jobs/tremere/regent.dm similarity index 89% rename from code/modules/vtmb/jobs/regent.dm rename to code/modules/vtmb/jobs/tremere/regent.dm index 9323e8c5a5..9b1b3209e7 100644 --- a/code/modules/vtmb/jobs/regent.dm +++ b/code/modules/vtmb/jobs/tremere/regent.dm @@ -1,6 +1,6 @@ -/datum/job/vamp/regent - title = "Chantry Regent" +/datum/job/vamp/tremere/regent + title = JOB_REGENT department_head = list("Prince") faction = "Vampire" total_positions = 1 @@ -26,9 +26,14 @@ experience_addition = 20 known_contacts = list("Prince") +AddTimelock(/datum/job/vamp/tremere/regent, list( + JOB_TREMERE_ROLES = 10 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + /datum/outfit/job/regent name = "Chantry Regent" - jobtype = /datum/job/vamp/regent + jobtype = /datum/job/vamp/tremere/regent id = /obj/item/card/id/regent glasses = /obj/item/clothing/glasses/vampire/perception diff --git a/code/modules/vtmb/jobs/tremere/tremere.dm b/code/modules/vtmb/jobs/tremere/tremere.dm new file mode 100644 index 0000000000..5feca1b936 --- /dev/null +++ b/code/modules/vtmb/jobs/tremere/tremere.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/tremere + supervisors = "the Pyramid" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/tremere + name = "Tremere Roles" + +/datum/timelock/tremere/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_TREMERE_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/bogatyr.dm b/code/modules/vtmb/jobs/tzimisce_mansion/bogatyr.dm similarity index 90% rename from code/modules/vtmb/jobs/bogatyr.dm rename to code/modules/vtmb/jobs/tzimisce_mansion/bogatyr.dm index 26b1dce3a4..cb1be8e47c 100644 --- a/code/modules/vtmb/jobs/bogatyr.dm +++ b/code/modules/vtmb/jobs/tzimisce_mansion/bogatyr.dm @@ -1,6 +1,6 @@ -/datum/job/vamp/bogatyr - title = "Bogatyr" +/datum/job/vamp/tzimisce_mansion_v/bogatyr + title = JOB_BOGATYR department_head = list("Voivode") faction = "Vampire" total_positions = 4 @@ -27,6 +27,10 @@ my_contact_is_important = TRUE known_contacts = list("Prince", "Baron", "Sheriff") +AddTimelock(/datum/job/vamp/tzimisce_mansion_v/bogatyr, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + /datum/outfit/job/bogatyr/pre_equip(mob/living/carbon/human/H) ..() if(H.gender == FEMALE) @@ -36,7 +40,7 @@ /datum/outfit/job/bogatyr name = "Bogatyr" - jobtype = /datum/job/vamp/bogatyr + jobtype = /datum/job/vamp/tzimisce_mansion_v/bogatyr id = /obj/item/card/id/bogatyr //glasses = /obj/item/clothing/glasses/vampire/yellow uniform = /obj/item/clothing/under/vampire/bogatyr diff --git a/code/modules/vtmb/jobs/voivode.dm b/code/modules/vtmb/jobs/tzimisce_mansion/voivode.dm similarity index 87% rename from code/modules/vtmb/jobs/voivode.dm rename to code/modules/vtmb/jobs/tzimisce_mansion/voivode.dm index c8a67cac84..3a6899aab4 100644 --- a/code/modules/vtmb/jobs/voivode.dm +++ b/code/modules/vtmb/jobs/tzimisce_mansion/voivode.dm @@ -1,5 +1,5 @@ -/datum/job/vamp/voivode - title = "Voivode" +/datum/job/vamp/tzimisce_mansion_v/voivode + title = JOB_VOIVODE department_head = list("Eldest") faction = "Vampire" total_positions = 1 @@ -26,11 +26,14 @@ my_contact_is_important = TRUE known_contacts = list("Prince", "Baron", "Sheriff") - +AddTimelock(/datum/job/vamp/tzimisce_mansion_v/voivode, list( + JOB_TZIMISCE_MANSION_ROLES = 10 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) /datum/outfit/job/voivode name = "Voivode" - jobtype = /datum/job/vamp/voivode + jobtype = /datum/job/vamp/tzimisce_mansion_v/voivode id = /obj/item/card/id/voivode //glasses = /obj/item/clothing/glasses/vampire/yellow uniform = /obj/item/clothing/under/vampire/voivode diff --git a/code/modules/vtmb/jobs/zadruga.dm b/code/modules/vtmb/jobs/tzimisce_mansion/zadruga.dm similarity index 86% rename from code/modules/vtmb/jobs/zadruga.dm rename to code/modules/vtmb/jobs/tzimisce_mansion/zadruga.dm index 33c179121e..82066abf9c 100644 --- a/code/modules/vtmb/jobs/zadruga.dm +++ b/code/modules/vtmb/jobs/tzimisce_mansion/zadruga.dm @@ -1,5 +1,5 @@ -/datum/job/vamp/zadruga - title = "Zadruga" +/datum/job/vamp/tzimisce_mansion_v/zadruga + title = JOB_ZADRUGA department_head = list("Voivode") faction = "Ghoul" //[Lucifernix] - Change this to vampire when I actually fix this. total_positions = 2 @@ -26,12 +26,15 @@ my_contact_is_important = FALSE known_contacts = list("Prince", "Baron", "Sheriff") - +AddTimelock(/datum/job/vamp/tzimisce_mansion_v/zadruga, list( + JOB_TZIMISCE_MANSION_ROLES = 5 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) /datum/outfit/job/zadruga name = "zadruga" - jobtype = /datum/job/vamp/zadruga + jobtype = /datum/job/vamp/tzimisce_mansion_v/zadruga id = /obj/item/card/id/bogatyr //glasses = /obj/item/clothing/glasses/vampire/yellow uniform = /obj/item/clothing/under/vampire/bogatyr diff --git a/code/modules/vtmb/jobs/citizen.dm b/code/modules/vtmb/jobs/unaligned/citizen.dm similarity index 95% rename from code/modules/vtmb/jobs/citizen.dm rename to code/modules/vtmb/jobs/unaligned/citizen.dm index 7b815b0931..83b659762a 100644 --- a/code/modules/vtmb/jobs/citizen.dm +++ b/code/modules/vtmb/jobs/unaligned/citizen.dm @@ -1,6 +1,6 @@ -/datum/job/vamp/citizen - title = "Citizen" +/datum/job/vamp/unaligned/citizen + title = JOB_CIVILIAN faction = "Vampire" total_positions = -1 spawn_positions = -1 @@ -27,7 +27,7 @@ /datum/outfit/job/citizen name = "Citizen" - jobtype = /datum/job/vamp/citizen + jobtype = /datum/job/vamp/unaligned/citizen l_pocket = /obj/item/vamp/phone id = /obj/item/cockclock diff --git a/code/modules/vtmb/jobs/unaligned/unaligned.dm b/code/modules/vtmb/jobs/unaligned/unaligned.dm new file mode 100644 index 0000000000..9bcd79fb87 --- /dev/null +++ b/code/modules/vtmb/jobs/unaligned/unaligned.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/unaligned + supervisors = "Yourself" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/unaligned + name = "Unaligned Roles" + +/datum/timelock/unaligned/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_UNALIGNED_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/warehouse/warehouse.dm b/code/modules/vtmb/jobs/warehouse/warehouse.dm new file mode 100644 index 0000000000..9cec8b4574 --- /dev/null +++ b/code/modules/vtmb/jobs/warehouse/warehouse.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/warehouse + supervisors = "None. You are beholden only to yourself." + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/warehouse + name = "Warehouse Roles" + +/datum/timelock/warehouse/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_WAREHOUSE_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/tgstation.dme b/tgstation.dme index 0c01af79dd..50a3b6fa71 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3366,39 +3366,52 @@ #include "code\modules\vtmb\gamemodes\masquerade.dm" #include "code\modules\vtmb\gamemodes\sarcophagus.dm" #include "code\modules\vtmb\gamemodes\subsystem.dm" -#include "code\modules\vtmb\jobs\archivist.dm" -#include "code\modules\vtmb\jobs\bogatyr.dm" -#include "code\modules\vtmb\jobs\caitiff.dm" -#include "code\modules\vtmb\jobs\citizen.dm" -#include "code\modules\vtmb\jobs\dealer.dm" -#include "code\modules\vtmb\jobs\doctor.dm" -#include "code\modules\vtmb\jobs\fbi.dm" -#include "code\modules\vtmb\jobs\giovanni.dm" -#include "code\modules\vtmb\jobs\graveyard_keeper.dm" -#include "code\modules\vtmb\jobs\hound.dm" -#include "code\modules\vtmb\jobs\hunter.dm" -#include "code\modules\vtmb\jobs\janitor.dm" +#include "code\modules\vtmb\jobs\tremere\archivist.dm" +#include "code\modules\vtmb\jobs\tzimisce_mansion\bogatyr.dm" +#include "code\modules\vtmb\jobs\antags\caitiff.dm" +#include "code\modules\vtmb\jobs\unaligned\citizen.dm" +#include "code\modules\vtmb\jobs\warehouse\dealer.dm" +#include "code\modules\vtmb\jobs\clinic\doctor.dm" +#include "code\modules\vtmb\jobs\national_security\fbi.dm" +#include "code\modules\vtmb\jobs\giovanni_family\giovanni.dm" +#include "code\modules\vtmb\jobs\city_services\graveyard_keeper.dm" +#include "code\modules\vtmb\jobs\antags\hunter.dm" +#include "code\modules\vtmb\jobs\city_services\janitor.dm" #include "code\modules\vtmb\jobs\jobs.dm" -#include "code\modules\vtmb\jobs\national_guard.dm" -#include "code\modules\vtmb\jobs\police.dm" -#include "code\modules\vtmb\jobs\priest.dm" -#include "code\modules\vtmb\jobs\primogen.dm" -#include "code\modules\vtmb\jobs\prince.dm" -#include "code\modules\vtmb\jobs\regent.dm" -#include "code\modules\vtmb\jobs\sabbat.dm" -#include "code\modules\vtmb\jobs\seneschal.dm" -#include "code\modules\vtmb\jobs\sheriff.dm" -#include "code\modules\vtmb\jobs\stripper.dm" -#include "code\modules\vtmb\jobs\supply_assistant.dm" -#include "code\modules\vtmb\jobs\swat.dm" -#include "code\modules\vtmb\jobs\taxi.dm" -#include "code\modules\vtmb\jobs\triad.dm" -#include "code\modules\vtmb\jobs\voivode.dm" -#include "code\modules\vtmb\jobs\zadruga.dm" -#include "code\modules\vtmb\jobs\anarchs\baron.dm" -#include "code\modules\vtmb\jobs\anarchs\bouncer.dm" -#include "code\modules\vtmb\jobs\anarchs\emissary.dm" -#include "code\modules\vtmb\jobs\anarchs\sweeper.dm" +#include "code\modules\vtmb\jobs\national_security\national_guard.dm" +#include "code\modules\vtmb\jobs\police_force\police.dm" +#include "code\modules\vtmb\jobs\church\priest.dm" +#include "code\modules\vtmb\jobs\camarilla\camarilla_primogen_council\primogen.dm" +#include "code\modules\vtmb\jobs\tremere\regent.dm" +#include "code\modules\vtmb\jobs\antags\sabbat.dm" +#include "code\modules\vtmb\jobs\city_services\stripper.dm" +#include "code\modules\vtmb\jobs\warehouse\supply_assistant.dm" +#include "code\modules\vtmb\jobs\city_services\taxi.dm" +#include "code\modules\vtmb\jobs\gangs\triad.dm" +#include "code\modules\vtmb\jobs\tzimisce_mansion\voivode.dm" +#include "code\modules\vtmb\jobs\tzimisce_mansion\zadruga.dm" +#include "code\modules\vtmb\jobs\camarilla\camarilla_authorities\prince.dm" +#include "code\modules\vtmb\jobs\camarilla\camarilla_authorities\hound.dm" +#include "code\modules\vtmb\jobs\camarilla\camarilla_authorities\seneschal.dm" +#include "code\modules\vtmb\jobs\camarilla\camarilla_authorities\sheriff.dm" +#include "code\modules\vtmb\jobs\camarilla\camarilla.dm" +#include "code\modules\vtmb\jobs\anarch\anarch.dm" +#include "code\modules\vtmb\jobs\warehouse\warehouse.dm" +#include "code\modules\vtmb\jobs\gangs\gangs.dm" +#include "code\modules\vtmb\jobs\city_services\city_services.dm" +#include "code\modules\vtmb\jobs\clinic\clinic.dm" +#include "code\modules\vtmb\jobs\police_force\police_force.dm" +#include "code\modules\vtmb\jobs\national_security\swat.dm" +#include "code\modules\vtmb\jobs\church\church.dm" +#include "code\modules\vtmb\jobs\national_security\national_security.dm" +#include "code\modules\vtmb\jobs\giovanni_family\giovanni_family.dm" +#include "code\modules\vtmb\jobs\unaligned\unaligned.dm" +#include "code\modules\vtmb\jobs\tremere\tremere.dm" +#include "code\modules\vtmb\jobs\tzimisce_mansion\tzimisce_mansion_v.dm" +#include "code\modules\vtmb\jobs\anarch\baron.dm" +#include "code\modules\vtmb\jobs\anarch\bouncer.dm" +#include "code\modules\vtmb\jobs\anarch\emissary.dm" +#include "code\modules\vtmb\jobs\anarch\sweeper.dm" #include "code\modules\vtmb\magic\mysticism.dm" #include "code\modules\vtmb\magic\pyramid.dm" #include "code\modules\vtmb\npc\beastmaster.dm" From e722413e04ef00e38303b43b3f0d896bc5b7a3b9 Mon Sep 17 00:00:00 2001 From: Washington <47699733+wgtjunior743@users.noreply.github.com> Date: Thu, 6 Feb 2025 18:47:47 -0300 Subject: [PATCH 2/6] Delete code/modules/vtmb/jobs directory --- code/modules/vtmb/jobs/anarch/anarch.dm | 21 - code/modules/vtmb/jobs/anarch/bouncer.dm | 49 -- code/modules/vtmb/jobs/anarch/emissary.dm | 50 -- code/modules/vtmb/jobs/anarch/sweeper.dm | 47 -- code/modules/vtmb/jobs/antags/caitiff.dm | 70 --- code/modules/vtmb/jobs/antags/hunter.dm | 115 ----- code/modules/vtmb/jobs/antags/sabbat.dm | 188 -------- code/modules/vtmb/jobs/camarilla/camarilla.dm | 28 -- .../camarilla/camarilla_authorities/hound.dm | 63 --- .../camarilla_authorities/seneschal.dm | 79 ---- code/modules/vtmb/jobs/church/priest.dm | 74 --- code/modules/vtmb/jobs/city_services/taxi.dm | 63 --- code/modules/vtmb/jobs/gangs/triad.dm | 53 --- code/modules/vtmb/jobs/jobs.dm | 427 ------------------ .../vtmb/jobs/national_security/fbi.dm | 52 --- .../national_security/national_security.dm | 21 - .../vtmb/jobs/national_security/swat.dm | 379 ---------------- code/modules/vtmb/jobs/police_force/police.dm | 149 ------ .../vtmb/jobs/police_force/police_force.dm | 21 - code/modules/vtmb/jobs/tremere/archivist.dm | 54 --- code/modules/vtmb/jobs/tremere/regent.dm | 57 --- code/modules/vtmb/jobs/tremere/tremere.dm | 21 - .../vtmb/jobs/tzimisce_mansion/bogatyr.dm | 57 --- .../vtmb/jobs/tzimisce_mansion/voivode.dm | 48 -- .../vtmb/jobs/tzimisce_mansion/zadruga.dm | 48 -- code/modules/vtmb/jobs/unaligned/citizen.dm | 61 --- code/modules/vtmb/jobs/unaligned/unaligned.dm | 21 - code/modules/vtmb/jobs/warehouse/warehouse.dm | 21 - 28 files changed, 2337 deletions(-) delete mode 100644 code/modules/vtmb/jobs/anarch/anarch.dm delete mode 100644 code/modules/vtmb/jobs/anarch/bouncer.dm delete mode 100644 code/modules/vtmb/jobs/anarch/emissary.dm delete mode 100644 code/modules/vtmb/jobs/anarch/sweeper.dm delete mode 100644 code/modules/vtmb/jobs/antags/caitiff.dm delete mode 100644 code/modules/vtmb/jobs/antags/hunter.dm delete mode 100644 code/modules/vtmb/jobs/antags/sabbat.dm delete mode 100644 code/modules/vtmb/jobs/camarilla/camarilla.dm delete mode 100644 code/modules/vtmb/jobs/camarilla/camarilla_authorities/hound.dm delete mode 100644 code/modules/vtmb/jobs/camarilla/camarilla_authorities/seneschal.dm delete mode 100644 code/modules/vtmb/jobs/church/priest.dm delete mode 100644 code/modules/vtmb/jobs/city_services/taxi.dm delete mode 100644 code/modules/vtmb/jobs/gangs/triad.dm delete mode 100644 code/modules/vtmb/jobs/jobs.dm delete mode 100644 code/modules/vtmb/jobs/national_security/fbi.dm delete mode 100644 code/modules/vtmb/jobs/national_security/national_security.dm delete mode 100644 code/modules/vtmb/jobs/national_security/swat.dm delete mode 100644 code/modules/vtmb/jobs/police_force/police.dm delete mode 100644 code/modules/vtmb/jobs/police_force/police_force.dm delete mode 100644 code/modules/vtmb/jobs/tremere/archivist.dm delete mode 100644 code/modules/vtmb/jobs/tremere/regent.dm delete mode 100644 code/modules/vtmb/jobs/tremere/tremere.dm delete mode 100644 code/modules/vtmb/jobs/tzimisce_mansion/bogatyr.dm delete mode 100644 code/modules/vtmb/jobs/tzimisce_mansion/voivode.dm delete mode 100644 code/modules/vtmb/jobs/tzimisce_mansion/zadruga.dm delete mode 100644 code/modules/vtmb/jobs/unaligned/citizen.dm delete mode 100644 code/modules/vtmb/jobs/unaligned/unaligned.dm delete mode 100644 code/modules/vtmb/jobs/warehouse/warehouse.dm diff --git a/code/modules/vtmb/jobs/anarch/anarch.dm b/code/modules/vtmb/jobs/anarch/anarch.dm deleted file mode 100644 index e069a3d7fd..0000000000 --- a/code/modules/vtmb/jobs/anarch/anarch.dm +++ /dev/null @@ -1,21 +0,0 @@ -/datum/job/vamp/anarch - supervisors = "the Anarchs and the Traditions" - total_positions = 1 - spawn_positions = 1 - -/datum/timelock/anarch - name = "Anarch Roles" - -/datum/timelock/anarch/New(name, time_required, list/roles) - . = ..() - src.roles = JOB_ANARCH_ROLES_LIST - - -/datum/timelock/living - name = "Living Roles" - -/datum/timelock/living/can_play(client/C) - return C.get_time_living() >= time_required - -/datum/timelock/living/get_role_requirement(client/C) - return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/anarch/bouncer.dm b/code/modules/vtmb/jobs/anarch/bouncer.dm deleted file mode 100644 index 97c9a5490b..0000000000 --- a/code/modules/vtmb/jobs/anarch/bouncer.dm +++ /dev/null @@ -1,49 +0,0 @@ - -/datum/job/vamp/anarch/bruiser - title = JOB_BRUISER - department_head = list("Baron") - faction = "Vampire" - total_positions = 7 - spawn_positions = 7 - supervisors = "the Baron" - selection_color = "#434343" - - outfit = /datum/outfit/job/bruiser - - access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) - minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - - mind_traits = list(TRAIT_DONUT_LOVER) - liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) - - display_order = JOB_DISPLAY_ORDER_BRUISER - known_contacts = list("Baron") - allowed_bloodlines = list("Daughters of Cacophony", "True Brujah", "Brujah", "Nosferatu", "Gangrel", "Toreador", "Tremere", "Malkavian", "Banu Haqim", "Tzimisce", "Caitiff", "Ventrue", "Lasombra", "Gargoyle", "Kiasyd", "Cappadocian", "Ministry") - - v_duty = "You are the enforcer of the Anarchs. The baron is always in need of muscle power. Enforce the Traditions - in the anarch way." - minimal_masquerade = 2 - experience_addition = 15 - -AddTimelock(/datum/job/vamp/anarch/bruiser, list( - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/bruiser - name = "Bruiser" - jobtype = /datum/job/vamp/anarch/bruiser - - id = /obj/item/card/id/anarch - uniform = /obj/item/clothing/under/vampire/bouncer - suit = /obj/item/clothing/suit/vampire/jacket - shoes = /obj/item/clothing/shoes/vampire/jackboots - r_pocket = /obj/item/vamp/keys/anarch - l_pocket = /obj/item/vamp/phone/anarch - r_hand = /obj/item/melee/vampirearms/baseball - backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/vampire_stake=3, /obj/item/flashlight=1, /obj/item/vamp/keys/hack=1, /obj/item/vamp/creditcard=1) - - -/obj/effect/landmark/start/bruiser - name = "Bruiser" - icon_state = "Bouncer" diff --git a/code/modules/vtmb/jobs/anarch/emissary.dm b/code/modules/vtmb/jobs/anarch/emissary.dm deleted file mode 100644 index 158c2677c0..0000000000 --- a/code/modules/vtmb/jobs/anarch/emissary.dm +++ /dev/null @@ -1,50 +0,0 @@ - -/datum/job/vamp/anarch/emissary - title = JOB_EMISSARY - department_head = list("Baron") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = "the Baron" - selection_color = "#434343" - - outfit = /datum/outfit/job/emissary - - access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) - minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - - mind_traits = list(TRAIT_DONUT_LOVER) - liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) - - display_order = JOB_DISPLAY_ORDER_EMISSARY - known_contacts = list("Baron") - allowed_bloodlines = list("Daughters of Cacophony", "True Brujah", "Brujah", "Nosferatu", "Gangrel", "Tremere", "Toreador", "Malkavian", "Banu Haqim", "Tzimisce", "Caitiff", "Ventrue", "Lasombra", "Gargoyle", "Kiasyd", "Cappadocian", "Ministry") - - v_duty = "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." - minimal_masquerade = 2 - experience_addition = 15 - -AddTimelock(/datum/job/vamp/anarch/emissary, list( - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/emissary - name = "emissary" - jobtype = /datum/job/vamp/anarch/emissary - - id = /obj/item/card/id/anarch - uniform = /obj/item/clothing/under/vampire/bouncer - suit = /obj/item/clothing/suit/vampire/jacket - shoes = /obj/item/clothing/shoes/vampire/jackboots - r_pocket = /obj/item/vamp/keys/anarch - l_pocket = /obj/item/vamp/phone/anarch - backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/keys/hack=1, /obj/item/vamp/creditcard/rich=1) - -/datum/outfit/job/emissary/pre_equip(mob/living/carbon/human/H) - ..() - -/obj/effect/landmark/start/emissary - name = "Emissary" - icon_state = "Bouncer" diff --git a/code/modules/vtmb/jobs/anarch/sweeper.dm b/code/modules/vtmb/jobs/anarch/sweeper.dm deleted file mode 100644 index 850ece117e..0000000000 --- a/code/modules/vtmb/jobs/anarch/sweeper.dm +++ /dev/null @@ -1,47 +0,0 @@ - -/datum/job/vamp/anarch/sweeper - title = JOB_SWEEPER - department_head = list("Baron") - faction = "Vampire" - total_positions = 3 - spawn_positions = 3 - supervisors = "the Baron" - selection_color = "#434343" - - outfit = /datum/outfit/job/sweeper - - access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) - minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - - mind_traits = list(TRAIT_DONUT_LOVER) - liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) - - display_order = JOB_DISPLAY_ORDER_SWEEPER - known_contacts = list("Baron") - allowed_bloodlines = list("Daughters of Cacophony", "True Brujah", "Brujah", "Nosferatu", "Gangrel", "Tremere", "Toreador", "Malkavian", "Banu Haqim", "Tzimisce", "Caitiff", "Ventrue", "Lasombra", "Gargoyle", "Kiasyd", "Cappadocian", "Ministry") - - v_duty = "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." - minimal_masquerade = 2 - experience_addition = 15 - -AddTimelock(/datum/job/vamp/anarch/sweeper, list( - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/sweeper - name = "Sweeper" - jobtype = /datum/job/vamp/anarch/sweeper - - id = /obj/item/card/id/anarch - uniform = /obj/item/clothing/under/vampire/bouncer - suit = /obj/item/clothing/suit/vampire/jacket - shoes = /obj/item/clothing/shoes/vampire/jackboots - r_pocket = /obj/item/vamp/keys/anarch - l_pocket = /obj/item/vamp/phone/anarch - backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/keys/hack=1, /obj/item/vamp/creditcard=1, /obj/item/binoculars = 1) - -/obj/effect/landmark/start/sweeper - name = "Sweeper" - icon_state = "Bouncer" diff --git a/code/modules/vtmb/jobs/antags/caitiff.dm b/code/modules/vtmb/jobs/antags/caitiff.dm deleted file mode 100644 index de0711d756..0000000000 --- a/code/modules/vtmb/jobs/antags/caitiff.dm +++ /dev/null @@ -1,70 +0,0 @@ -/datum/outfit/job/caitiff - name = "Caitiff" - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/flashlight - id = /obj/item/cockclock - backpack_contents = list(/obj/item/passport=1, /obj/item/vampire_stake=1, /obj/item/vamp/keys/hack=1) - -/datum/outfit/job/caitiff/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == MALE) - shoes = /obj/item/clothing/shoes/vampire - if(H.clane) - if(H.clane.male_clothes) - uniform = H.clane.male_clothes - else - shoes = /obj/item/clothing/shoes/vampire/heels - if(H.clane) - if(H.clane.female_clothes) - uniform = H.clane.female_clothes - -/datum/outfit/job/caitiff/post_equip(mob/living/carbon/human/H) - ..() - if(H.mind) - H.mind.add_antag_datum(/datum/antagonist/caitiff) - - var/list/landmarkslist = list() - for(var/obj/effect/landmark/start/S in GLOB.start_landmarks_list) - if(S.name == name) - landmarkslist += S - var/obj/effect/landmark/start/D = pick(landmarkslist) - H.forceMove(D.loc) - - var/my_name = "Tyler" - if(H.gender == MALE) - my_name = pick(GLOB.first_names_male) - else - my_name = pick(GLOB.first_names_female) - var/my_surname = pick(GLOB.last_names) - H.fully_replace_character_name(null,"[my_name] [my_surname]") - -/obj/effect/landmark/start/caitiff - name = "Caitiff" - delete_after_roundstart = FALSE - -/datum/antagonist/caitiff - name = "Caitiff" - roundend_category = "caitiffs" - antagpanel_category = "Caitiff" - job_rank = ROLE_TRAITOR - antag_moodlet = /datum/mood_event/focused - antag_hud_type = ANTAG_HUD_TRAITOR - antag_hud_name = "traitor" - -/datum/antagonist/caitiff/on_gain() - owner.special_role = src - var/datum/objective/assassinate/kill_objective = new - kill_objective.owner = owner - kill_objective.find_target() - objectives += kill_objective - owner.current.playsound_local(get_turf(owner.current), 'code/modules/wod13/sounds/sad_start.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE) - return ..() - -/datum/antagonist/caitiff/on_removal() - ..() - to_chat(owner.current,"You are no longer the Caitiff!") - owner.special_role = null - -/datum/antagonist/caitiff/greet() - to_chat(owner.current, "You are the Caitiff.") - owner.announce_objectives() diff --git a/code/modules/vtmb/jobs/antags/hunter.dm b/code/modules/vtmb/jobs/antags/hunter.dm deleted file mode 100644 index d569b94c45..0000000000 --- a/code/modules/vtmb/jobs/antags/hunter.dm +++ /dev/null @@ -1,115 +0,0 @@ -/datum/outfit/job/hunter - name = "Hunter" - uniform = /obj/item/clothing/under/vampire/graveyard - r_pocket = /obj/item/flashlight - id = /obj/item/card/id/hunter - shoes = /obj/item/clothing/shoes/vampire/jackboots - l_pocket = /obj/item/vamp/keys/church - backpack_contents = list( - /obj/item/storage/book/bible = 1, - /obj/item/vampire_stake = 3, - /obj/item/molotov = 1, - /obj/item/gas_can/full = 1, - /obj/item/vamp/keys/hack=1 - ) - -/datum/outfit/job/hunter/post_equip(mob/living/carbon/human/H) - ..() - if(H.clane) - qdel(H.clane) - H.set_species(/datum/species/human) - H.generation = 13 - H.maxHealth = round((initial(H.maxHealth)-initial(H.maxHealth)/4)+(initial(H.maxHealth)/4)*(H.physique+13-H.generation)) - H.health = round((initial(H.health)-initial(H.health)/4)+(initial(H.health)/4)*(H.physique+13-H.generation)) - var/my_name = "Tyler" - if(H.gender == MALE) - my_name = pick(GLOB.first_names_male) - else - my_name = pick(GLOB.first_names_female) - var/my_surname = pick(GLOB.last_names) - H.fully_replace_character_name(null,"[my_name] [my_surname]") -// for(var/atom/movable/screen/blood/B in H.hud_used.infodisplay) -// B.icon_state = null -// for(var/atom/movable/screen/healths/HE in H.hud_used.infodisplay) -// HE.icon = 'code/modules/wod13/ghoul_health.dmi' -// for(var/atom/movable/screen/drinkblood/DB in H.hud_used.static_inventory) -// DB.icon_state = null -// for(var/atom/movable/screen/bloodheal/BH in H.hud_used.static_inventory) -// BH.icon_state = null -// for(var/atom/movable/screen/bloodpower/BP in H.hud_used.static_inventory) -// BP.icon_state = null -// for(var/atom/movable/screen/disciplines/DI in H.hud_used.static_inventory) -// DI.icon_state = null - for(var/datum/action/A in H.actions) - if(A.vampiric) - A.Remove(H) - H.thaumaturgy_knowledge = FALSE - QDEL_NULL(H.clane) - var/obj/item/organ/eyes/NV = new() - NV.Insert(H, TRUE, FALSE) - if(H.mind) - H.mind.add_antag_datum(/datum/antagonist/hunter) - - var/list/landmarkslist = list() - for(var/obj/effect/landmark/start/S in GLOB.start_landmarks_list) - if(S.name == name) - landmarkslist += S - var/obj/effect/landmark/start/D = pick(landmarkslist) - H.forceMove(D.loc) - - var/list/loadouts = list("Fire Fighter", "EOD Suit", "Holy Presence") - spawn() - var/loadout_type = input(H, "Choose the Lord's gift for you:", "Loadout") as anything in loadouts - switch(loadout_type) - if("Fire Master") - H.equip_to_slot_or_del(new /obj/item/clothing/head/vampire/helmet(H), ITEM_SLOT_HEAD) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/vampire/vest(H), ITEM_SLOT_OCLOTHING) - H.put_in_r_hand(new /obj/item/vampire_flamethrower(H)) - H.put_in_l_hand(new /obj/item/melee/vampirearms/fireaxe(H)) - if("EOD Suit") - H.equip_to_slot_or_del(new /obj/item/clothing/suit/vampire/eod(H), ITEM_SLOT_OCLOTHING) - H.equip_to_slot_or_del(new /obj/item/clothing/head/vampire/eod(H), ITEM_SLOT_HEAD) - H.put_in_r_hand(new /obj/item/gun/ballistic/shotgun/vampire(H)) - H.put_in_l_hand(new /obj/item/ammo_box/vampire/c12g(H)) - if("Holy Presence") - H.equip_to_slot_or_del(new /obj/item/clothing/suit/vampire/vest/army(H), ITEM_SLOT_OCLOTHING) - H.put_in_r_hand(new /obj/item/melee/vampirearms/chainsaw(H)) - H.resistant_to_disciplines = TRUE - to_chat(H, "You are no longer vulnerable to vampire blood powers...") - -/obj/effect/landmark/start/hunter - name = "Hunter" - delete_after_roundstart = FALSE - -/datum/antagonist/hunter - name = "Hunter" - roundend_category = "hunters" - antagpanel_category = "Hunter" - job_rank = ROLE_OPERATIVE - antag_hud_type = ANTAG_HUD_OPS - antag_hud_name = "synd" - antag_moodlet = /datum/mood_event/focused - show_to_ghosts = TRUE - -/datum/antagonist/hunter/on_gain() - owner.holy_role = HOLY_ROLE_PRIEST - add_antag_hud(ANTAG_HUD_OPS, "synd", owner.current) - owner.special_role = src - var/datum/objective/custom/custom_objective = new - custom_objective.owner = owner - custom_objective.explanation_text = "Exterminate all evil spirits in the city. Let the Hunt begin!" - objectives += custom_objective - var/datum/objective/martyr/die_objective = new - die_objective.owner = owner - objectives += die_objective - owner.current.playsound_local(get_turf(owner.current), 'code/modules/wod13/sounds/orthodox_start.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE) - return ..() - -/datum/antagonist/hunter/on_removal() - ..() - to_chat(owner.current,"You are no longer the Hunter!") - owner.special_role = null - -/datum/antagonist/hunter/greet() - to_chat(owner.current, "You are the Hunter.") - owner.announce_objectives() diff --git a/code/modules/vtmb/jobs/antags/sabbat.dm b/code/modules/vtmb/jobs/antags/sabbat.dm deleted file mode 100644 index a82a5abc0c..0000000000 --- a/code/modules/vtmb/jobs/antags/sabbat.dm +++ /dev/null @@ -1,188 +0,0 @@ -/datum/outfit/job/sabbatist - name = "Sabbatist" - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/flashlight - suit = /obj/item/clothing/suit/vampire/trench - id = /obj/item/cockclock - backpack_contents = list(/obj/item/passport=1, /obj/item/vampire_stake=3, /obj/item/gun/ballistic/vampire/revolver=1, /obj/item/melee/vampirearms/knife=1, /obj/item/vamp/keys/hack=1, /obj/item/melee/vampirearms/katana/kosa=1) - -/datum/outfit/job/sabbatist/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == MALE) - shoes = /obj/item/clothing/shoes/vampire - if(H.clane) - if(H.clane.male_clothes) - uniform = H.clane.male_clothes - else - shoes = /obj/item/clothing/shoes/vampire/heels - if(H.clane) - if(H.clane.female_clothes) - uniform = H.clane.female_clothes - -/datum/outfit/job/sabbatist/post_equip(mob/living/carbon/human/H) - ..() - if(H.mind) - H.mind.add_antag_datum(/datum/antagonist/sabbatist) - GLOB.sabbatites += H - - var/my_name = "Tyler" - if(H.gender == MALE) - my_name = pick(GLOB.first_names_male) - else - my_name = pick(GLOB.first_names_female) - var/my_surname = pick(GLOB.last_names) - H.fully_replace_character_name(null,"[my_name] [my_surname]") -//Commented out code for future sabbat character setup -/* - H.generation = 13 - H.clane = null - - H.maxHealth = round((initial(H.maxHealth)-initial(H.maxHealth)/4)+(initial(H.maxHealth)/4)*(H.physique+13-H.generation)) - H.health = round((initial(H.health)-initial(H.health)/4)+(initial(H.health)/4)*(H.physique+13-H.generation)) - H.thaumaturgy_knowledge = FALSE - QDEL_NULL(H.clane) - var/obj/item/organ/eyes/NV = new() - NV.Insert(H, TRUE, FALSE) - add_verb(H, /datum/job/sabbatist/verb/setup_character) -*/ - - var/list/landmarkslist = list() - for(var/obj/effect/landmark/start/S in GLOB.start_landmarks_list) - if(S.name == name) - landmarkslist += S - var/obj/effect/landmark/start/D = pick(landmarkslist) - H.forceMove(D.loc) - -//Commented out code for future sabbat character setup -/* -/datum/job/sabbatist/verb/setup_character() - set category = FACTION_SABBAT - set name = "Set Up Character" - set desc = "Prepare your character." - var/list/clans = list("Tzimisce", "Lasombra", "Gangrel", "Brujah", "Toreador", "Ventrue") - var/list/generations = list(8, 9, 10, 11, 12, 13) - var/total_points = 10 - var/points_spent = 0 - - var/clan_choice = input("Choose your clan:", "Clan Selection") in clans - var/generation_choice = input("Choose your generation:", "Generation Selection") in generations - - var/discipline1 - var/discipline2 - var/discipline3 - switch(clan_choice) - if("Tzimisce") - discipline1 = "Animalism" - discipline2 = "Auspex" - discipline3 = "Vicissitude" - if("Lasombra") - discipline1 = "Dominate" - discipline2 = "Obtenebration" - discipline3 = "Potence" - if("Gangrel") - discipline1 = "Animalism" - discipline2 = "Fortitude" - discipline3 = "Protean" - if("Brujah") - discipline1 = "Celerity" - discipline2 = "Potence" - discipline3 = "Presence" - if("Toreador") - discipline1 = "Auspex" - discipline2 = "Celerity" - discipline3 = "Presence" - if("Ventrue") - discipline1 = "Dominate" - discipline2 = "Fortitude" - discipline3 = "Presence" - var/discipline1_level = 0 - var/discipline2_level = 0 - var/discipline3_level = 0 - - var/list/generation_costs = list(8 = 5, 9 = 4, 10 = 3, 11 = 2, 12 = 1, 13 = 0) - generation_choice = 13 - - while(points_spent < total_points) - var/list/choices = list("Discipline 1: [discipline1] (Level: [discipline1_level])", "Discipline 2: [discipline2] (Level: [discipline2_level])", "Discipline 3: [discipline3] (Level: [discipline3_level])", "Finish") - var/choice = input("Allocate your points. Points remaining: [total_points - points_spent]", "Discipline Allocation") in choices - - if(choice == "Finish") - break - - if(choice == "Discipline 1: [discipline1] (Level: [discipline1_level])") - if(points_spent < total_points) - discipline1_level += 1 - points_spent += 1 - if(choice == "Discipline 2: [discipline2] (Level: [discipline2_level])") - if(points_spent < total_points) - discipline2_level += 1 - points_spent += 1 - if(choice == "Discipline 3: [discipline3] (Level: [discipline3_level])") - if(points_spent < total_points) - discipline3_level += 1 - points_spent += 1 - if(choice == "Choose Generation (Current: [generation_choice])") - var/new_generation = input("Choose your generation:", "Generation Selection") in generation_costs - var/cost = generation_costs[new_generation] - if(points_spent + cost <= total_points) - points_spent += cost - generation_choice = new_generation - - H.skin_tone = get_vamp_skin_color(H.skin_tone) - H.update_body() - H.clane = new H.clane.type() - H.clane.on_gain(H) - if(H.clane.alt_sprite) - H.skin_tone = "albino" - H.update_body() - H.create_disciplines(FALSE, discipline1, discipline2, discipline3) - -// H.discipline1 = discipline1_level -// H.discipline2 = discipline2_level -// H.discipline3 = discipline3_level - - H.generation = generation_choice - H.maxbloodpool = 10+((13-min(13, H.generation))*3) - H.clane.enlightenment = H.clane.enlightenment - H.maxHealth = round((initial(H.maxHealth)-initial(H.maxHealth)/4)+(initial(H.maxHealth)/4)*(H.physique+13-H.generation)) - H.health = round((initial(H.maxHealth)-initial(H.maxHealth)/4)+(initial(H.maxHealth)/4)*(H.physique+13-H.generation)) - - to_chat(H, "You have chosen [clan_choice] with generation [generation_choice]. Your disciplines are [discipline1] (Level: [discipline1_level]), [discipline2] (Level: [discipline2_level]) and [discipline3] (Level: [discipline3_level]).") - remove_verb(H, /datum/job/sabbatist/verb/setup_character) - -*/ - -/obj/effect/landmark/start/sabbatist - name = "Sabbatist" - delete_after_roundstart = FALSE - -/datum/antagonist/sabbatist - name = "Sabbatist" - roundend_category = "sabbattites" - antagpanel_category = FACTION_SABBAT - job_rank = ROLE_REV - antag_moodlet = /datum/mood_event/revolution - antag_hud_type = ANTAG_HUD_REV - antag_hud_name = "rev" - -/datum/antagonist/sabbatist/on_gain() - add_antag_hud(ANTAG_HUD_REV, "rev", owner.current) - owner.special_role = src - var/datum/objective/custom/custom_objective = new - custom_objective.owner = owner - custom_objective.explanation_text = "Sow chaos, maim, butcher and kill. When you're done The Ivory Tower should be but a distant memory." - objectives += custom_objective - var/datum/objective/survive/survive_objective = new - survive_objective.owner = owner - objectives += survive_objective - owner.current.playsound_local(get_turf(owner.current), 'code/modules/wod13/sounds/evil_start.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE) - return ..() - -/datum/antagonist/sabbatist/on_removal() - ..() - to_chat(owner.current,"You are no longer the part of Sabbat!") - owner.special_role = null - -/datum/antagonist/sabbatist/greet() - to_chat(owner.current, "You are the part of Sabbat.") - owner.announce_objectives() diff --git a/code/modules/vtmb/jobs/camarilla/camarilla.dm b/code/modules/vtmb/jobs/camarilla/camarilla.dm deleted file mode 100644 index 74db403b9f..0000000000 --- a/code/modules/vtmb/jobs/camarilla/camarilla.dm +++ /dev/null @@ -1,28 +0,0 @@ -/datum/job/vamp/camarilla - supervisors = "the Camarilla and the Traditions" - total_positions = 1 - spawn_positions = 1 - -/datum/timelock/camarilla_authorities - name = "Camarilla Authorities Roles" - -/datum/timelock/camarilla_authorities/New(name, time_required, list/roles) - . = ..() - src.roles = JOB_CAMARILLA_AUTHORITIES_ROLES_LIST - -/datum/timelock/camarilla_council - name = "Camarilla Council Roles" - -/datum/timelock/camarilla_council/New(name, time_required, list/roles) - . = ..() - src.roles = JOB_CAMARILLA_COUNCIL_ROLES_LIST - - -/datum/timelock/living - name = "Living Roles" - -/datum/timelock/living/can_play(client/C) - return C.get_time_living() >= time_required - -/datum/timelock/living/get_role_requirement(client/C) - return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/camarilla/camarilla_authorities/hound.dm b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/hound.dm deleted file mode 100644 index 9fba12018c..0000000000 --- a/code/modules/vtmb/jobs/camarilla/camarilla_authorities/hound.dm +++ /dev/null @@ -1,63 +0,0 @@ - -/datum/job/vamp/camarilla/hound - title = JOB_HOUND - auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY - department_head = list("Prince") - faction = "Vampire" - total_positions = 7 - spawn_positions = 7 - supervisors = "the Sheriff" - selection_color = "#bd3327" - minimal_player_age = 7 - exp_requirements = 300 - exp_type = EXP_TYPE_CREW - - outfit = /datum/outfit/job/hound - - access = list(ACCESS_MAINT_TUNNELS, ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY, ACCESS_MINERAL_STOREROOM) // See /datum/job/officer/get_access() - paycheck = PAYCHECK_HARD - paycheck_department = ACCOUNT_SEC - - mind_traits = list(TRAIT_DONUT_LOVER) - liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) - - display_order = JOB_DISPLAY_ORDER_HOUND - bounty_types = CIV_JOB_SEC - known_contacts = list("Prince", "Sheriff") - - v_duty = "You are the Prince's enforcer. You report to the Sheriff and uphold the Traditions." - minimal_masquerade = 4 - experience_addition = 10 - allowed_bloodlines = list("True Brujah", "Daughters of Cacophony", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Lasombra", "Gargoyle", "Kiasyd", "Cappadocian") - -AddTimelock(/datum/job/vamp/camarilla/agent, list( - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/hound - name = "Hound" - jobtype = /datum/job/vamp/camarilla/hound - - ears = /obj/item/p25radio - id = /obj/item/card/id/camarilla - uniform = /obj/item/clothing/under/vampire/hound - gloves = /obj/item/clothing/gloves/vampire/work - suit = /obj/item/clothing/suit/vampire/trench - shoes = /obj/item/clothing/shoes/vampire - r_pocket = /obj/item/vamp/keys/camarilla - l_pocket = /obj/item/vamp/phone/camarilla - backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/vampire_stake=3, /obj/item/flashlight=1, /obj/item/masquerade_contract=1, /obj/item/vamp/keys/hack=1, /obj/item/vamp/creditcard=1) - - backpack = /obj/item/storage/backpack - satchel = /obj/item/storage/backpack/satchel - duffelbag = /obj/item/storage/backpack/duffelbag - - implants = list(/obj/item/implant/mindshield) - -/datum/outfit/job/hound/pre_equip(mob/living/carbon/human/H) - ..() - -/obj/effect/landmark/start/hound - name = "Hound" - icon_state = "Hound" diff --git a/code/modules/vtmb/jobs/camarilla/camarilla_authorities/seneschal.dm b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/seneschal.dm deleted file mode 100644 index 5e48cdcd0f..0000000000 --- a/code/modules/vtmb/jobs/camarilla/camarilla_authorities/seneschal.dm +++ /dev/null @@ -1,79 +0,0 @@ - -/datum/job/vamp/camarilla/clerk - title = JOB_CLERK - auto_deadmin_role_flags = DEADMIN_POSITION_HEAD - department_head = list("Prince") - head_announce = list(RADIO_CHANNEL_SUPPLY, RADIO_CHANNEL_SERVICE) - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = "the prince" - selection_color = "#bd3327" - req_admin_notify = 1 - minimal_player_age = 10 - exp_requirements = 180 - exp_type = EXP_TYPE_CREW - exp_type_department = EXP_TYPE_NEUTRALS - - outfit = /datum/outfit/job/clerk - - access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, - ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, - ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, - ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER, - ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, - ACCESS_MECH_MINING, ACCESS_MECH_ENGINE, ACCESS_MECH_SCIENCE, ACCESS_MECH_SECURITY, ACCESS_MECH_MEDICAL, - ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE, ACCESS_TELEPORTER) - minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, - ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, - ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, - ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER, - ACCESS_MECH_MINING, ACCESS_MECH_ENGINE, ACCESS_MECH_SCIENCE, ACCESS_MECH_SECURITY, ACCESS_MECH_MEDICAL, - ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, - ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE, ACCESS_TELEPORTER) - paycheck = PAYCHECK_COMMAND - paycheck_department = ACCOUNT_SRV - bounty_types = CIV_JOB_RANDOM - - liver_traits = list(TRAIT_ROYAL_METABOLISM) - - display_order = JOB_DISPLAY_ORDER_CLERK - -// minimal_generation = 12 //Uncomment when players get exp enough - minimal_masquerade = 5 - - my_contact_is_important = TRUE - known_contacts = list("Prince","Sheriff","Tremere Regent","Dealer","Primogens") - - v_duty = "You are the right hand man or woman of the most powerful vampire in the city. The Camarilla trusts you to run the city, even in their stead." - duty = "You are the right hand man or woman of the most powerful vampire in the city. The Camarilla trusts you to run the city, even in their stead." - experience_addition = 15 - allowed_bloodlines = list("Daughters of Cacophony", "True Brujah", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Lasombra", "Gargoyle", "Kiasyd") - - -AddTimelock(/datum/job/vamp/camarilla/clerk, list( - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/clerk - name = "Seneschal" - jobtype = /datum/job/vamp/camarilla/clerk - - ears = /obj/item/p25radio - id = /obj/item/card/id/clerk - uniform = /obj/item/clothing/under/vampire/clerk - shoes = /obj/item/clothing/shoes/vampire/brown -// head = /obj/item/clothing/head/hopcap - l_pocket = /obj/item/vamp/phone/clerk - r_pocket = /obj/item/vamp/keys/clerk - backpack_contents = list(/obj/item/passport=1, /obj/item/phone_book=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/seneschal=1) - -/datum/outfit/job/clerk/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == FEMALE) - uniform = /obj/item/clothing/under/vampire/clerk/female - shoes = /obj/item/clothing/shoes/vampire/heels - -/obj/effect/landmark/start/clerk - name = "Seneschal" - icon_state = "Clerk" diff --git a/code/modules/vtmb/jobs/church/priest.dm b/code/modules/vtmb/jobs/church/priest.dm deleted file mode 100644 index f1c1430a73..0000000000 --- a/code/modules/vtmb/jobs/church/priest.dm +++ /dev/null @@ -1,74 +0,0 @@ - -/datum/job/vamp/church/priest - title = JOB_PRIEST - department_head = list("Bishop") - faction = "Vampire" - total_positions = 2 - spawn_positions = 2 - supervisors = "God" - selection_color = "#fff700" - - outfit = /datum/outfit/job/priest - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_PRIEST - exp_type_department = EXP_TYPE_CHURCH - - allowed_species = list("Human") - minimal_generation = 13 - - duty = "Be the shepherd of the flock in San Francisco, lead them to salvation, piety and righteousness." - v_duty = "The mortals believe you to be their savior. The kindred look at you with suspicion. Yours is the charge of this church." - minimal_masquerade = 0 - my_contact_is_important = FALSE - -AddTimelock(/datum/job/vamp/church/priest, list( - JOB_LIVING_ROLES = 2 HOURS, -)) - - -/datum/outfit/job/priest - name = "Priest" - jobtype = /datum/job/vamp/church/priest - - uniform = /obj/item/clothing/under/vampire/graveyard - shoes = /obj/item/clothing/shoes/vampire/jackboots - id = /obj/item/card/id/hunter - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/flashlight - l_hand = /obj/item/vamp/keys/church - back = /obj/item/storage/backpack/satchel - backpack_contents = list(/obj/item/passport=1, /obj/item/vamp/creditcard=1) - -/datum/outfit/job/priest/pre_equip(mob/living/carbon/human/H) - ..() - add_verb(H, /datum/job/vampire/priest/verb/choose_special) - -/datum/job/vampire/priest/verb/choose_special() - set category = "Priest" - set name = "Choose Special" - set desc = "Select Priest special ability." - var/list/loadouts = list("Numina", "True Faith") - spawn() - var/mob/living/carbon/human/H = src - if(is_species(H, /datum/species/human)) - if(H.client) - var/loadout_type = input(H, "Choose what makes you special:", "Loadout") as anything in loadouts - remove_verb(H, /datum/job/vampire/priest/verb/choose_special) - switch(loadout_type) - if("Numina") - to_chat(H, "You have been blessed with psychic powers. They make you extraordinary among mortals, yet you still fear the horrors lurking unknown.") - var/obj/effect/proc_holder/spell/targeted/numina_freeze/n_freeze = new(H) - var/obj/effect/proc_holder/spell/self/numina_heal/n_heal = new(H) - H.mind.AddSpell(n_freeze) - H.mind.AddSpell(n_heal) - if("True Faith") - H.mind.holy_role = HOLY_ROLE_PRIEST - H.resistant_to_disciplines = TRUE - to_chat(H, "Your faith in God is made of iron. None could shake it, and even in the darkest moments it holds you up.") - -/obj/effect/landmark/start/priest - name = "Priest" diff --git a/code/modules/vtmb/jobs/city_services/taxi.dm b/code/modules/vtmb/jobs/city_services/taxi.dm deleted file mode 100644 index af84bf09f9..0000000000 --- a/code/modules/vtmb/jobs/city_services/taxi.dm +++ /dev/null @@ -1,63 +0,0 @@ -/datum/job/vamp/city_services/taxi - title = JOB_TAXI - department_head = list("Justicar") - faction = "Vampire" - total_positions = 3 - spawn_positions = 3 - supervisors = " the Traditions" - selection_color = "#e3e3e3" - - outfit = /datum/outfit/job/taxi - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_TAXI - exp_type_department = EXP_TYPE_SERVICES - - allowed_species = list("Vampire", "Ghoul", "Human", "Werewolf", "Kuei-Jin") - - v_duty = "Drive people in the city." - duty = "Drive people in the city." - minimal_masquerade = 0 - experience_addition = 10 - allowed_bloodlines = list("Daughters of Cacaphony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff", "Kiasyd", "Cappadocian") - -/datum/job/vamp/taxi/after_spawn(mob/living/H, mob/M, latejoin = FALSE) - ..() - H.taxist = TRUE - -/datum/outfit/job/taxi - name = "Taxi Driver" - jobtype = /datum/job/vamp/city_services/taxi - - id = /obj/item/cockclock - glasses = /obj/item/clothing/glasses/vampire/sun - uniform = /obj/item/clothing/under/vampire/suit - shoes = /obj/item/clothing/shoes/vampire - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/vamp/keys/taxi - backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1, /obj/item/melee/vampirearms/tire=1) - -/datum/outfit/job/taxi/pre_equip(mob/living/carbon/human/H) - ..() - if(H.clane) - if(H.gender == MALE) - shoes = /obj/item/clothing/shoes/vampire - if(H.clane.male_clothes) - uniform = H.clane.male_clothes - else - shoes = /obj/item/clothing/shoes/vampire/heels - if(H.clane.female_clothes) - uniform = H.clane.female_clothes - else - if(H.gender == MALE) - shoes = /obj/item/clothing/shoes/vampire - uniform = /obj/item/clothing/under/vampire/sport - else - shoes = /obj/item/clothing/shoes/vampire/heels - uniform = /obj/item/clothing/under/vampire/red - -/obj/effect/landmark/start/taxi - name = "Taxi Driver" diff --git a/code/modules/vtmb/jobs/gangs/triad.dm b/code/modules/vtmb/jobs/gangs/triad.dm deleted file mode 100644 index 6937e4a2b3..0000000000 --- a/code/modules/vtmb/jobs/gangs/triad.dm +++ /dev/null @@ -1,53 +0,0 @@ - -/datum/job/vamp/gangs/triad_soldier - title = JOB_TRIAD_GANGSTER - department_head = list("Triad Leadership") - faction = "Vampire" - total_positions = 8 - spawn_positions = 8 - supervisors = " the Triads" - selection_color = "#bb9d3d" - - outfit = /datum/outfit/job/triad_soldier - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_TRIAD_GANGSTER - exp_type_department = EXP_TYPE_GANG - - allowed_species = list("Human", "Werewolf", "Kuei-Jin") - minimal_generation = 13 - - duty = "Make money, do drugs, fight law. Your hideout is the laundromat in Chinatown." - experience_addition = 10 - minimal_masquerade = 0 - my_contact_is_important = FALSE - -AddTimelock(/datum/job/vamp/gangs/triad_soldier, list( - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/triad_soldier/pre_equip(mob/living/carbon/human/H) - ..() - H.grant_language(/datum/language/cantonese) - if(H.gender == FEMALE) - uniform = /obj/item/clothing/under/vampire/suit/female - shoes = /obj/item/clothing/shoes/vampire/heels - -/datum/outfit/job/triad_soldier - name = "Triad Soldier" - jobtype = /datum/job/vamp/gangs/triad_soldier - uniform = /obj/item/clothing/under/vampire/suit - shoes = /obj/item/clothing/shoes/vampire/jackboots -// suit = /obj/item/clothing/suit/vampire/vest -// belt = /obj/item/melee/classic_baton - id = /obj/item/cockclock -// gloves = /obj/item/cockclock -// id = /obj/item/card/id/police - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/flashlight - l_hand = /obj/item/vamp/keys/triads -// r_hand = /obj/item/police_radio - backpack_contents = list(/obj/item/passport=1, /obj/item/vamp/creditcard=1, /obj/item/clothing/mask/vampire/balaclava =1, /obj/item/gun/ballistic/automatic/vampire/glock19, /obj/item/melee/vampirearms/knife) diff --git a/code/modules/vtmb/jobs/jobs.dm b/code/modules/vtmb/jobs/jobs.dm deleted file mode 100644 index ec74264f33..0000000000 --- a/code/modules/vtmb/jobs/jobs.dm +++ /dev/null @@ -1,427 +0,0 @@ -/datum/job - var/experience_addition = 5 - -/datum/outfit/job/post_equip(mob/living/carbon/human/H) - . = ..() - if(H.clane) - if(H.clane.name == "Ventrue") - var/obj/item/stack/dollar/hundred/HUN = new(H.loc) - for(var/obj/item/storage/backpack/B in H) - if(B) - HUN.forceMove(B) - - var/obj/item/storage/backpack/b = locate() in H - if(b) - var/obj/item/vamp/creditcard/card = locate() in b.contents - if(card && card.has_checked == FALSE) - for(var/obj/item/vamp/creditcard/caard in b.contents) - if(caard) - H.bank_id = caard.account.bank_id - caard.account.account_owner = H.true_real_name - caard.has_checked = TRUE - -//ID - -/obj/item/card/id/prince/AltClick(mob/user) - return - -/obj/item/card/id/sheriff/AltClick(mob/user) - return - -/obj/item/card/id/camarilla/AltClick(mob/user) - return - -/obj/item/card/id/clerk/AltClick(mob/user) - return - -/obj/item/card/id/anarch/AltClick(mob/user) - return - -/obj/item/card/id/clinic/AltClick(mob/user) - return - -/obj/item/card/id/archive/AltClick(mob/user) - return - -/obj/item/card/id/cleaning/AltClick(mob/user) - return - -/obj/item/card/id/dealer/AltClick(mob/user) - return - -/obj/item/card/id/supplytech/AltClick(mob/user) - return - -/obj/item/card/id/hunter/AltClick(mob/user) - return - -/obj/item/card/id/primogen/AltClick(mob/user) - return - -/obj/item/card/id/police/AltClick(mob/user) - return - -/obj/item/card/id/hunter - var/last_detonated = 0 - -/obj/item/card/id/hunter/attack_self(mob/user) - . = ..() - if(last_detonated+300 > world.time) - return - if(!user.mind) - return - if(user.mind.holy_role != HOLY_ROLE_PRIEST) - return - last_detonated = world.time - do_sparks(rand(5, 9), FALSE, user) - playsound(user.loc, 'code/modules/wod13/sounds/cross.ogg', 100, FALSE, 8, 0.9) - for(var/mob/living/M in get_hearers_in_view(4, user.loc)) - bang(get_turf(M), M, user) - -/obj/item/card/id/hunter/proc/bang(turf/T, mob/living/M, var/mob/living/user) - if(M.stat == DEAD) //They're dead! - return - var/mob/living/carbon/human/H - if(ishuman(M)) - H = M - if(H) - for(var/obj/item/card/id/hunter/HUNT in H.contents) - if(HUNT) - if(H.mind) - if(H.mind.holy_role == HOLY_ROLE_PRIEST) - return - if(iskindred(H)) - if(H.clane) - if(H.clane.name == "Baali") - H.emote("scream") - H.pointed(user) - M.show_message("GOD SEES YOU!", MSG_AUDIBLE) - var/distance = max(0,get_dist(get_turf(src),T)) - - if(M.flash_act(affect_silicon = 1)) - M.Immobilize(max(10/max(1,distance), 5)) - -/obj/item/card/id/hunter/attack(mob/living/target, mob/living/user) - . = ..() - if(HAS_TRAIT(user, TRAIT_PACIFISM)) - return - if(last_detonated+300 > world.time) - return - if(iskindred(target)) - var/mob/living/carbon/human/H = target - if(H.clane) - if(H.clane.name == "Baali") - last_detonated = world.time - var/turf/lightning_source = get_step(get_step(H, NORTH), NORTH) - lightning_source.Beam(H, icon_state="lightning[rand(1,12)]", time = 5) - H.adjustFireLoss(100) - H.electrocution_animation(50) - to_chat(H, "The God has punished you for your sins!", confidential = TRUE) - -/obj/item/card/id/prince - name = "leader badge" - id_type_name = "leader badge" - desc = "King in the castle!" - icon = 'code/modules/wod13/items.dmi' - icon_state = "id6" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id6" - -/obj/item/card/id/sheriff - name = "head security badge" - id_type_name = "head security badge" - desc = "A badge which shows honour and dedication." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id4" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id4" - -/obj/item/card/id/camarilla - name = "security badge" - id_type_name = "security badge" - desc = "A badge which shows honour and dedication." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id3" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id3" - -/obj/item/card/id/clerk - name = "clerk badge" - id_type_name = "clerk badge" - desc = "A badge which shows buerocracy qualification." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id1" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id1" - -/obj/item/card/id/anarch - name = "biker badge" - id_type_name = "biker badge" - desc = "A badge which shows protest and anarchy." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id5" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id5" - -/obj/item/card/id/clinic - name = "medical badge" - id_type_name = "medical badge" - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY) - desc = "A badge which shows medical qualification." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id2" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id2" - -/obj/item/card/id/clinic/director - name = "clinic director's badge" - desc = "A badge which shows not only medical qualification, but also an authority over the clinic." - -/obj/item/card/id/archive - name = "scholar badge" - id_type_name = "scholar badge" - desc = "A badge which shows a love of culture." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id7" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id7" - -/obj/item/card/id/regent - name = "erudite scholar badge" - id_type_name = "erudite scholar badge" - desc = "A badge which shows a deep understanding of culture." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id7_regent" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id7_regent" - -/obj/item/card/id/cleaning - name = "janitor badge" - id_type_name = "janitor badge" - desc = "A badge which shows cleaning employment." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id8" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id8" - -/obj/item/card/id/graveyard - name = "keeper badge" - id_type_name = "keeper badge" - desc = "A badge which shows graveyard employment." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id8" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id8" - -/obj/item/card/id/dealer - name = "business badge" - id_type_name = "business badge" - desc = "A badge which shows business." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id9" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id9" - -/obj/item/card/id/supplytech - name = "technician badge" - id_type_name = "technician badge" - desc = "A badge which shows supply employment." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id10" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id10" - -/obj/item/card/id/hunter - name = "cross" - id_type_name = "cross" - desc = "When you come into the land that the Lord your God is giving you, you must not learn to imitate the abhorrent practices of those nations. No one shall be found among you who makes a son or daughter pass through fire, or who practices divination, or is a soothsayer, or an augur, or a sorcerer, or one who casts spells, or who consults ghosts or spirits, or who seeks oracles from the dead. For whoever does these things is abhorrent to the Lord; it is because of such abhorrent practices that the Lord your God is driving them out before you (Deuteronomy 18:9-12)." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id11" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id11" - -/obj/item/card/id/primogen - name = "mysterious primogen badge" - id_type_name = "mysterious primogen badge" - desc = "Sponsored by the Shadow Government." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id12" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id12" - -/obj/item/card/id/police - name = "police officer badge" - id_type_name = "police officer badge" - desc = "Sponsored by the Government." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id13" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id13" - -/obj/item/card/id/police/sergeant - name = "police sergeant badge" - desc = "Sponsored by the Government. This one seems slightly more worn down than all the others." - -/obj/item/card/id/police/chief - name = "police chief badge" - desc = "Sponsored by the Government. This one has a chrome plated finish." - -/obj/item/card/id/police/fbi - name = "fbi special agent badge" - desc = "Sponsored by the Government. This one has all the bells and whistles." - -/obj/item/card/id/voivode - name = "ancient badge" - id_type_name ="ancient badge" - desc = "You have to wear this filthy thing to be recognized." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id12" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id12" - -/obj/item/card/id/bogatyr - name = "dusty badge" - id_type_name ="dusty badge" - desc = "You have to wear this because the Voivode wants you to." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id12" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id12" - - -/obj/item/card/id/bahari - name = "cultist badge" - id_type_name = "cultist badge" - desc = "This shows your devotion to the dark mother." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id14" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id14" - -/obj/item/card/id/noddist - name = "cultist badge" - id_type_name = "cultist badge" - desc = "This shows your devotion to the dark father." - icon = 'code/modules/wod13/items.dmi' - icon_state = "id15" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "id15" - -//TZIMISCE ROLES - -// PRIMOGEN STAFF (Distributed in game by Primogen) - -/obj/item/card/id/whip - name = "primogen's whip badge" - id_type_name = "whip badge" - desc = "This badge shows your servitude to an important person." - icon = 'code/modules/wod13/items.dmi' - icon_state = "onyxBadge" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "onyxBadge" - -/obj/item/card/id/steward - name = "primogen's steward badge" - id_type_name = "steward badge" - desc = "This badge shows you're very good at taking care of someone else's property." - icon = 'code/modules/wod13/items.dmi' - icon_state = "emeraldBadge" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "emeraldBadge" - -/obj/item/card/id/myrmidon - name = "primogen's myrmidon badge" - id_type_name = "myrmidon badge" - desc = "A badge which shows you're responsible enough to protect someone important but not responsible enough to protect the most important." - icon = 'code/modules/wod13/items.dmi' - icon_state = "rubyBadge" - inhand_icon_state = "card-id" - lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - onflooricon = 'code/modules/wod13/onfloor.dmi' - worn_icon = 'code/modules/wod13/worn.dmi' - worn_icon_state = "rubyBadge" diff --git a/code/modules/vtmb/jobs/national_security/fbi.dm b/code/modules/vtmb/jobs/national_security/fbi.dm deleted file mode 100644 index ef498b5822..0000000000 --- a/code/modules/vtmb/jobs/national_security/fbi.dm +++ /dev/null @@ -1,52 +0,0 @@ - -/datum/job/vamp/national_security/fbi - title = JOB_FBI - department_head = list("Federal Bureau of Investigation") - faction = "Vampire" - total_positions = 2 - spawn_positions = 2 - supervisors = " the FBI" - selection_color = "#1a1d8a" - - outfit = /datum/outfit/job/fbi - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_ARMORY, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_MEDIUM - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_FBI - exp_type_department = EXP_TYPE_NATIONAL_SECURITY - - allowed_species = list("Human") - minimal_generation = 13 - - duty = "Enforce the Law." - minimal_masquerade = 0 - my_contact_is_important = FALSE - known_contacts = list("Police Chief") - -AddTimelock(/datum/job/vamp/national_security/fbi, list( - JOB_POLICE_ROLES = 15 HOURS, - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/fbi - name = "Federal Investigator" - jobtype = /datum/job/vamp/national_security/fbi - - ears = /obj/item/p25radio/police/government - uniform = /obj/item/clothing/under/vampire/office - shoes = /obj/item/clothing/shoes/vampire - suit = /obj/item/clothing/suit/vampire/jacket/fbi - belt = /obj/item/storage/belt/holster/detective/vampire/fbi - id = /obj/item/card/id/police/fbi - gloves = /obj/item/clothing/gloves/vampire/investigator - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/radio/cop - l_hand = /obj/item/vamp/keys/police - r_hand = /obj/item/police_radio - backpack_contents = list(/obj/item/card/id/police/sergeant=1, /obj/item/passport=1, /obj/item/implant/radio=1, /obj/item/camera/detective=1, /obj/item/camera_film=1, /obj/item/taperecorder=1, /obj/item/tape=1, /obj/item/vamp/creditcard=1, /obj/item/ammo_box/vampire/c45acp=1, /obj/item/storage/firstaid/ifak=1) - -/datum/outfit/job/fbi/post_equip(mob/living/carbon/human/agent) - ..() - agent.ignores_warrant = TRUE diff --git a/code/modules/vtmb/jobs/national_security/national_security.dm b/code/modules/vtmb/jobs/national_security/national_security.dm deleted file mode 100644 index ce0dbaf6b7..0000000000 --- a/code/modules/vtmb/jobs/national_security/national_security.dm +++ /dev/null @@ -1,21 +0,0 @@ -/datum/job/vamp/national_security - supervisors = "Your Country and respective supervisors" - total_positions = 1 - spawn_positions = 1 - -/datum/timelock/national_security - name = "National Security Roles" - -/datum/timelock/national_security/New(name, time_required, list/roles) - . = ..() - src.roles = JOB_NATIONAL_SECURITY_ROLES_LIST - - -/datum/timelock/living - name = "Living Roles" - -/datum/timelock/living/can_play(client/C) - return C.get_time_living() >= time_required - -/datum/timelock/living/get_role_requirement(client/C) - return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/national_security/swat.dm b/code/modules/vtmb/jobs/national_security/swat.dm deleted file mode 100644 index 039a58031e..0000000000 --- a/code/modules/vtmb/jobs/national_security/swat.dm +++ /dev/null @@ -1,379 +0,0 @@ -/datum/outfit/job/swat - name = "Swat Officer" - ears = /obj/item/p25radio/police/tactical - uniform = /obj/item/clothing/under/vampire/police - mask = /obj/item/clothing/mask/vampire/balaclava - r_pocket = /obj/item/flashlight - l_pocket = /obj/item/ammo_box/magazine/vamp556 - shoes = /obj/item/clothing/shoes/vampire/jackboots - belt = /obj/item/gun/ballistic/automatic/vampire/ar15 - suit = /obj/item/clothing/suit/vampire/vest/police - head = /obj/item/clothing/head/vampire/helmet - id = /obj/item/card/id/police - backpack_contents = list( - /obj/item/ammo_box/magazine/vamp556 = 3, - /obj/item/radio/cop = 1, - /obj/item/vamp/keys/hack=2 - ) - -/datum/antagonist/swat/proc/equip_swat() - var/mob/living/carbon/human/H = owner.current - if(!ishuman(owner.current)) - return - H.equipOutfit(swat_outfit) - if(H.clane) - H.remove_overlay(H.clane.accessories_layers[H.clane.current_accessory]) - qdel(H.clane) - H.set_species(/datum/species/human) - H.generation = 13 - H.lockpicking = 5 - H.physique = 4 - H.ignores_warrant = TRUE - H.maxHealth = round((initial(H.maxHealth)-initial(H.maxHealth)/4)+(initial(H.maxHealth)/4)*(H.physique+13-H.generation)) - H.health = round((initial(H.health)-initial(H.health)/4)+(initial(H.health)/4)*(H.physique+13-H.generation)) -/* var/my_name = "Tyler" - if(H.gender == MALE) - my_name = pick(GLOB.first_names_male) - else - my_name = pick(GLOB.first_names_female) - var/my_surname = pick(GLOB.last_names) - H.fully_replace_character_name(null,"[my_name] [my_surname]")*/ - for(var/datum/action/A in H.actions) - if(A.vampiric) - A.Remove(H) - H.thaumaturgy_knowledge = FALSE - QDEL_NULL(H.clane) - var/obj/item/organ/eyes/NV = new() - NV.Insert(H, TRUE, FALSE) - - var/list/landmarkslist = list() - for(var/obj/effect/landmark/start/S in GLOB.start_landmarks_list) - if(S.name == name) - landmarkslist += S - var/obj/effect/landmark/start/D = pick(landmarkslist) - H.forceMove(D.loc) - -/obj/effect/landmark/start/swat - name = "Swat Officer" - delete_after_roundstart = FALSE - -/datum/antagonist/swat - name = "Swat Officer" - roundend_category = "Swat" - antagpanel_category = "Swat" - job_rank = ROLE_SWAT - antag_hud_type = ANTAG_HUD_OPS - antag_hud_name = "synd" - antag_moodlet = /datum/mood_event/focused - show_to_ghosts = TRUE - var/always_new_team = FALSE - var/datum/team/swat/swat_team - var/swat_outfit = /datum/outfit/job/swat - var/custom_objective - -/datum/antagonist/swat/team_leader - name = "Swat Team Leader" - always_new_team = TRUE - var/title - -/datum/antagonist/swat/on_gain() - randomize_appearance() - forge_objectives() - add_antag_hud(ANTAG_HUD_OPS, "synd", owner.current) - owner.special_role = src - equip_swat() - give_alias() - return ..() - -/datum/antagonist/swat/on_removal() - ..() - to_chat(owner.current,"You are no longer in the Special Weapons and Tactics squad!") - owner.special_role = null - -/datum/antagonist/swat/greet() - to_chat(owner.current, "You're in the Special Weapons and Tactics squad.") - to_chat(owner, "You are a [swat_team ? swat_team.swat_name : "swat"] officer!") - spawn(3 SECONDS) - owner.announce_objectives() - - -/datum/antagonist/swat/proc/give_alias() - var/my_name = "Tyler" - var/list/swat_ranks = list("Private", "Private First Class", "Lance Corporal", "Corporal") - var/selected_rank = pick(swat_ranks) - if(owner.current.gender == MALE) - my_name = pick(GLOB.first_names_male) - else - my_name = pick(GLOB.first_names_female) - var/my_surname = pick(GLOB.last_names) - owner.current.fully_replace_character_name(null,"[selected_rank] [my_name] [my_surname]") - -/datum/antagonist/swat/proc/forge_objectives() - spawn(2 SECONDS) - if(swat_team) - objectives |= swat_team.objectives - -/datum/antagonist/swat/leader/give_alias() - var/my_name = "Tyler" - if(owner.current.gender == MALE) - my_name = pick(GLOB.first_names_male) - else - my_name = pick(GLOB.first_names_female) - var/my_surname = pick(GLOB.last_names) - owner.current.fully_replace_character_name(null,"Squad Leader [my_name] [my_surname]") - -/datum/team/swat/antag_listing_name() - if(swat_name) - return "[swat_name] Officers" - else - return "Officers" - - -/datum/antagonist/swat/leader/greet() - to_chat(owner, "You are the SWAT Officer in charge of this mission. You are responsible for guiding your team's operation.") - to_chat(owner, "If you feel you are not up to this task, give your command to another officer.") - spawn(3 SECONDS) - owner.announce_objectives() - addtimer(CALLBACK(src, PROC_REF(swatteam_name_assign)), 1) - -/datum/antagonist/swat/leader/proc/swatteam_name_assign() - if(!swat_team) - return - swat_team.rename_team(ask_name()) - -/datum/antagonist/swat/leader/proc/ask_name() - var/randomname = pick(GLOB.last_names) - var/newname = stripped_input(owner.current,"You are the squa leader. Please choose a name for your team.", "Name change",randomname) - if (!newname) - newname = randomname - else - newname = reject_bad_name(newname) - if(!newname) - newname = randomname - -/datum/antagonist/swat/create_team(datum/team/swat/new_team) - if(!new_team) - if(!always_new_team) - for(var/datum/antagonist/swat/N in GLOB.antagonists) - if(!N.owner) - stack_trace("Antagonist datum without owner in GLOB.antagonists: [N]") - continue - swat_team = new /datum/team/swat - swat_team.update_objectives() - return - if(!istype(swat_team)) - stack_trace("Wrong team type passed to [type] initialization.") - swat_team = new_team - -/datum/antagonist/swat/admin_add(datum/mind/new_owner,mob/admin) - new_owner.assigned_role = ROLE_SWAT - new_owner.add_antag_datum(src) - message_admins("[key_name_admin(admin)] has swat'd [key_name_admin(new_owner)].") - log_admin("[key_name(admin)] has swat'd [key_name(new_owner)].") - -/datum/random_gen/swat - var/hair_colors = list("040404", //Black - "120b05", //Dark Brown - "342414", //Brown - "554433", //Light Brown - "695c3b", //Dark Blond - "ad924e", //Blond - "dac07f", //Light Blond - "802400", //Ginger - "a5380e", //Ginger alt - "ffeace", //Albino - "650b0b", //Punk Red - "14350e", //Punk Green - "080918") //Punk Blue - - var/male_hair = list("Balding Hair", - "Bedhead", - "Bedhead 2", - "Bedhead 3", - "Boddicker", - "Business Hair", - "Business Hair 2", - "Business Hair 3", - "Business Hair 4", - "Coffee House", - "Combover", - "Crewcut", - "Father", - "Flat Top", - "Gelled Back", - "Joestar", - "Keanu Hair", - "Oxton", - "Volaju") - - var/male_facial = list("Beard (Abraham Lincoln)", - "Beard (Chinstrap)", - "Beard (Full)", - "Beard (Cropped Fullbeard)", - "Beard (Hipster)", - "Beard (Neckbeard)", - "Beard (Three o Clock Shadow)", - "Beard (Five o Clock Shadow)", - "Beard (Seven o Clock Shadow)", - "Moustache (Hulk Hogan)", - "Moustache (Watson)", - "Sideburns (Elvis)", - "Sideburns") - - var/female_hair = list("Ahoge", - "Long Bedhead", - "Beehive", - "Beehive 2", - "Bob Hair", - "Bob Hair 2", - "Bob Hair 3", - "Bob Hair 4", - "Bobcurl", - "Braided", - "Braided Front", - "Braid (Short)", - "Braid (Low)", - "Bun Head", - "Bun Head 2", - "Bun Head 3", - "Bun (Large)", - "Bun (Tight)", - "Double Bun", - "Emo", - "Emo Fringe", - "Feather", - "Gentle", - "Long Hair 1", - "Long Hair 2", - "Long Hair 3", - "Long Over Eye", - "Long Emo", - "Long Fringe", - "Ponytail", - "Ponytail 2", - "Ponytail 3", - "Ponytail 4", - "Ponytail 5", - "Ponytail 6", - "Ponytail 7", - "Ponytail (High)", - "Ponytail (Short)", - "Ponytail (Long)", - "Ponytail (Country)", - "Ponytail (Fringe)", - "Poofy", - "Short Hair Rosa", - "Shoulder-length Hair", - "Volaju") - -/datum/antagonist/swat/proc/randomize_appearance() - var/datum/random_gen/swat/h_gen = new - var/mob/living/carbon/human/H = owner.current - H.gender = pick(MALE, FEMALE) - H.body_type = H.gender - H.age = rand(18, 36) -// if(age >= 55) -// hair_color = "a2a2a2" -// facial_hair_color = hair_color -// else - H.hair_color = pick(h_gen.hair_colors) - H.facial_hair_color = H.hair_color - if(H.gender == MALE) - H.hairstyle = pick(h_gen.male_hair) - if(prob(25) || H.age >= 25) - H.facial_hairstyle = pick(h_gen.male_facial) - else - H.facial_hairstyle = "Shaved" - else - H.hairstyle = pick(h_gen.female_hair) - H.facial_hairstyle = "Shaved" - H.name = H.real_name - H.dna.real_name = H.real_name - var/obj/item/organ/eyes/organ_eyes = H.getorgan(/obj/item/organ/eyes) - if(organ_eyes) - organ_eyes.eye_color = random_eye_color() - H.underwear = random_underwear(H.gender) - if(prob(50)) - H.underwear_color = organ_eyes.eye_color - if(prob(50) || H.gender == FEMALE) - H.undershirt = random_undershirt(H.gender) - if(prob(25)) - H.socks = random_socks() - H.update_body() - H.update_hair() - H.update_body_parts() - -/datum/team/swat/proc/rename_team(new_name) - swat_name = new_name - name = "[swat_name] Team" - -/datum/team/swat - var/swat_name - var/core_objective = /datum/objective/swat - member_name = "Swat Officer" - var/memorized_code - var/list/team_discounts - var/obj/item/nuclear_challenge/war_button - -/datum/team/swat/New() - ..() - swat_name = swat_name() - -/datum/team/swat/proc/update_objectives() - if(core_objective) - var/datum/objective/O = new core_objective - O.team = src - objectives += O - - -/datum/team/swat/roundend_report() - var/list/parts = list() - parts += "[swat_name] Operatives:" - - var/text = "
The SWAT were:" - text += printplayerlist(members) - parts += text - - return "
[parts.Join("
")]
" - - - - -////////////////////////////////////////////// -// // -// SWAT (MIDROUND) // -// // -////////////////////////////////////////////// - -/datum/dynamic_ruleset/midround/from_ghosts/swat - name = "Swat Officer" - antag_flag = ROLE_SWAT - antag_datum = /datum/antagonist/swat - required_candidates = 1 - weight = 5 - cost = 35 - requirements = list(90,90,90,80,60,40,30,20,10,10) - var/list/operative_cap = list(2,2,3,3,4,5,5,5,5,5) - var/datum/team/swat/swat_team - flags = HIGHLANDER_RULESET - -/datum/dynamic_ruleset/midround/from_ghosts/swat/acceptable(population=0, threat=0) - indice_pop = min(operative_cap.len, round(living_players.len/5)+1) - required_candidates = max(5, operative_cap[indice_pop]) - return ..() - -/datum/dynamic_ruleset/midround/from_ghosts/swat/ready(forced = FALSE) - if (required_candidates > (dead_players.len + list_observers.len)) - return FALSE - return ..() - -/datum/dynamic_ruleset/midround/from_ghosts/swat/finish_setup(mob/new_character, index) - new_character.mind.special_role = "Swat Officer" - new_character.mind.assigned_role = "Swat Officer" - if (index == 1) // Our first guy is the leader - var/datum/antagonist/swat/leader/new_role = new - swat_team = new_role.swat_team - new_character.mind.add_antag_datum(new_role) - else - return ..() - diff --git a/code/modules/vtmb/jobs/police_force/police.dm b/code/modules/vtmb/jobs/police_force/police.dm deleted file mode 100644 index 58e9ef6fe9..0000000000 --- a/code/modules/vtmb/jobs/police_force/police.dm +++ /dev/null @@ -1,149 +0,0 @@ - -/datum/job/vamp/police_force/police_officer - title = JOB_POLICE - department_head = list("Police Department") - faction = "Vampire" - total_positions = 5 - spawn_positions = 5 - supervisors = " the SFPD Chief and your Sergeant." - selection_color = "#7e7e7e" - - outfit = /datum/outfit/job/police_officer - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_ARMORY, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_POLICE - exp_type_department = EXP_TYPE_POLICE - - allowed_species = list("Ghoul", "Human") - species_slots = list("Ghoul" = 1) - - duty = "Enforce the Law." - minimal_masquerade = 0 - my_contact_is_important = FALSE - known_contacts = list("Police Chief") - -AddTimelock(/datum/job/vamp/police_force/police_officer, list( - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/police_officer - name = "Police Officer" - jobtype = /datum/job/vamp/police_force/police_officer - - ears = /obj/item/p25radio/police - uniform = /obj/item/clothing/under/vampire/police - shoes = /obj/item/clothing/shoes/vampire/jackboots - suit = /obj/item/clothing/suit/vampire/vest/police - belt = /obj/item/storage/belt/holster/detective/vampire/police - gloves = /obj/item/cockclock - id = /obj/item/card/id/police - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/vamp/keys/police - backpack_contents = list(/obj/item/passport=1, /obj/item/implant/radio=1, /obj/item/vamp/creditcard=1, /obj/item/ammo_box/vampire/c9mm = 1, /obj/item/restraints/handcuffs = 1,/obj/item/melee/classic_baton/vampire = 1, /obj/item/storage/firstaid/ifak = 1) - -/datum/job/vamp/police_force/police_sergeant - title = JOB_POLICE_SERGEANT - department_head = list("Police Department") - faction = "Vampire" - total_positions = 2 - spawn_positions = 2 - supervisors = " the SFPD Chief" - selection_color = "#7e7e7e" - - outfit = /datum/outfit/job/police_sergeant - - access = list(ACCESS_HYDROPONICS, ACCESS_ARMORY, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_HARD - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_POLICE_SERGEANT - exp_type_department = EXP_TYPE_POLICE - - allowed_species = list("Human") - - duty = "Enforce the law. Keep the officers in line. Follow what the Chief says." - minimal_masquerade = 0 - my_contact_is_important = FALSE - known_contacts = list("Police Chief") - -AddTimelock(/datum/job/vamp/police_force/police_sergeant, list( - JOB_POLICE_ROLES = 5 HOURS, - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/police_sergeant - name = "Police Sergeant" - jobtype = /datum/job/vamp/police_force/police_sergeant - - ears = /obj/item/p25radio/police/supervisor - uniform = /obj/item/clothing/under/vampire/police - shoes = /obj/item/clothing/shoes/vampire/jackboots - suit = /obj/item/clothing/suit/vampire/vest/police/sergeant - belt = /obj/item/storage/belt/holster/detective/vampire/officer - gloves = /obj/item/cockclock - id = /obj/item/card/id/police/sergeant - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/vamp/keys/police/secure - backpack_contents = list(/obj/item/passport=1, /obj/item/implant/radio=1, /obj/item/vamp/creditcard=1, /obj/item/ammo_box/vampire/c9mm = 1, /obj/item/restraints/handcuffs = 1,/obj/item/melee/classic_baton/vampire = 1, /obj/item/storage/firstaid/ifak = 1) - -/datum/job/vamp/police_force/police_chief - title = JOB_POLICE_CHIEF - department_head = list("Police Department") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = " the SFPD" - selection_color = "#7e7e7e" - - outfit = /datum/outfit/job/police_chief - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_ARMORY, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_COMMAND - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_POLICE_CHIEF - exp_type_department = EXP_TYPE_POLICE - - allowed_species = list("Human") - - duty = "Underpaid, overworked, and understrength. Do your best to keep the order in San Francisco. Keep the officers in line." - minimal_masquerade = 0 - my_contact_is_important = FALSE -// known_contacts = list("Investigator") - -AddTimelock(/datum/job/vamp/police_force/police_chief, list( - JOB_POLICE_ROLES = 10 HOURS, - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/police_chief - name = "Police Chief" - jobtype = /datum/job/vamp/police_force/police_chief - - ears = /obj/item/p25radio/police/command - uniform = /obj/item/clothing/under/vampire/police - shoes = /obj/item/clothing/shoes/vampire/jackboots - suit = /obj/item/clothing/suit/vampire/vest/police/chief - belt = /obj/item/storage/belt/holster/detective/vampire/officer - gloves = /obj/item/cockclock - id = /obj/item/card/id/police/chief - l_pocket = /obj/item/vamp/phone - r_pocket = /obj/item/vamp/keys/police/secure/chief - backpack_contents = list(/obj/item/passport=1, /obj/item/implant/radio=1, /obj/item/vamp/creditcard=1, /obj/item/ammo_box/vampire/c9mm = 1, /obj/item/restraints/handcuffs = 1,/obj/item/melee/classic_baton/vampire = 1, /obj/item/storage/firstaid/ifak = 1) - -/datum/outfit/job/police_officer/post_equip(mob/living/carbon/human/H) - ..() - H.ignores_warrant = TRUE - -/datum/outfit/job/police_chief/post_equip(mob/living/carbon/human/H) - ..() - var/datum/martial_art/martial_art = new /datum/martial_art/cqc - H.ignores_warrant = TRUE - martial_art.teach(H) - -/datum/outfit/job/police_sergeant/post_equip(mob/living/carbon/human/H) - ..() - H.ignores_warrant = TRUE diff --git a/code/modules/vtmb/jobs/police_force/police_force.dm b/code/modules/vtmb/jobs/police_force/police_force.dm deleted file mode 100644 index c8a5826f6f..0000000000 --- a/code/modules/vtmb/jobs/police_force/police_force.dm +++ /dev/null @@ -1,21 +0,0 @@ -/datum/job/vamp/police_force - supervisors = "the SFPD" - total_positions = 1 - spawn_positions = 1 - -/datum/timelock/police_force - name = "Police Force Roles" - -/datum/timelock/police_force/New(name, time_required, list/roles) - . = ..() - src.roles = JOB_POLICE_ROLES_LIST - - -/datum/timelock/living - name = "Living Roles" - -/datum/timelock/living/can_play(client/C) - return C.get_time_living() >= time_required - -/datum/timelock/living/get_role_requirement(client/C) - return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/tremere/archivist.dm b/code/modules/vtmb/jobs/tremere/archivist.dm deleted file mode 100644 index c6ed5d6b57..0000000000 --- a/code/modules/vtmb/jobs/tremere/archivist.dm +++ /dev/null @@ -1,54 +0,0 @@ - -/datum/job/vamp/tremere/archivist - title = JOB_ARCHIVIST - department_head = list("Prince") - faction = "Vampire" - total_positions = 4 - spawn_positions = 4 - supervisors = "the Traditions and the Regent" - selection_color = "#ab2508" - - outfit = /datum/outfit/job/archivist - - access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION) - minimal_access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - exp_type_department = EXP_TYPE_TREMERE - - display_order = JOB_DISPLAY_ORDER_ARCHIVIST - - v_duty = "Keep a census of events and provide information to neonates. Listen to the Regent Carefully. Study blood magic and protect the chantry." - minimal_masquerade = 3 - allowed_species = list("Vampire") - allowed_bloodlines = list("Tremere", "Gargoyle") - known_contacts = list("Tremere Regent") - experience_addition = 15 - -AddTimelock(/datum/job/vamp/tremere/archivist, list( - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/archivist - name = "Archivist" - jobtype = /datum/job/vamp/tremere/archivist - - id = /obj/item/card/id/archive - glasses = /obj/item/clothing/glasses/vampire/perception - shoes = /obj/item/clothing/shoes/vampire - gloves = /obj/item/clothing/gloves/vampire/latex - uniform = /obj/item/clothing/under/vampire/archivist - r_pocket = /obj/item/vamp/keys/archive - l_pocket = /obj/item/vamp/phone/archivist - accessory = /obj/item/clothing/accessory/pocketprotector/full - backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/arcane_tome=1, /obj/item/vamp/creditcard=1, /obj/item/melee/vampirearms/katana/kosa=1) - -/datum/outfit/job/archivist/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == FEMALE) - uniform = /obj/item/clothing/under/vampire/archivist/female - shoes = /obj/item/clothing/shoes/vampire/heels - -/obj/effect/landmark/start/archivist - name = "Archivist" - icon_state = "Archivist" diff --git a/code/modules/vtmb/jobs/tremere/regent.dm b/code/modules/vtmb/jobs/tremere/regent.dm deleted file mode 100644 index 9b1b3209e7..0000000000 --- a/code/modules/vtmb/jobs/tremere/regent.dm +++ /dev/null @@ -1,57 +0,0 @@ - -/datum/job/vamp/tremere/regent - title = JOB_REGENT - department_head = list("Prince") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = "the Pyramid" - selection_color = "#ab2508" - - outfit = /datum/outfit/job/regent - - access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION) - minimal_access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - exp_type_department = EXP_TYPE_TREMERE - - my_contact_is_important = TRUE - display_order = JOB_DISPLAY_ORDER_REGENT - v_duty = "Lead the Chantry. You serve as both the Regent and Tremere Primogen. You report to the Tremere Lord of this region first, Prince second." - minimal_masquerade = 4 - minimal_generation = 7 - allowed_species = list("Vampire") - allowed_bloodlines = list("Tremere") - experience_addition = 20 - known_contacts = list("Prince") - -AddTimelock(/datum/job/vamp/tremere/regent, list( - JOB_TREMERE_ROLES = 10 HOURS, - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/regent - name = "Chantry Regent" - jobtype = /datum/job/vamp/tremere/regent - - id = /obj/item/card/id/regent - glasses = /obj/item/clothing/glasses/vampire/perception - suit = /obj/item/clothing/suit/vampire/trench/archive - shoes = /obj/item/clothing/shoes/vampire - gloves = /obj/item/clothing/gloves/vampire/latex - uniform = /obj/item/clothing/under/vampire/archivist - r_pocket = /obj/item/vamp/keys/regent - l_pocket = /obj/item/vamp/phone/tremere - accessory = /obj/item/clothing/accessory/pocketprotector/full - backpack_contents = list(/obj/item/passport=1, /obj/item/phone_book=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/arcane_tome=1, /obj/item/vamp/creditcard/elder=1, /obj/item/melee/vampirearms/katana/kosa=1) - -/datum/outfit/job/regent/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == FEMALE) - uniform = /obj/item/clothing/under/vampire/archivist/female - shoes = /obj/item/clothing/shoes/vampire/heels - -/obj/effect/landmark/start/regent - name = "Chantry Regent" - icon_state = "Archivist" diff --git a/code/modules/vtmb/jobs/tremere/tremere.dm b/code/modules/vtmb/jobs/tremere/tremere.dm deleted file mode 100644 index 5feca1b936..0000000000 --- a/code/modules/vtmb/jobs/tremere/tremere.dm +++ /dev/null @@ -1,21 +0,0 @@ -/datum/job/vamp/tremere - supervisors = "the Pyramid" - total_positions = 1 - spawn_positions = 1 - -/datum/timelock/tremere - name = "Tremere Roles" - -/datum/timelock/tremere/New(name, time_required, list/roles) - . = ..() - src.roles = JOB_TREMERE_ROLES_LIST - - -/datum/timelock/living - name = "Living Roles" - -/datum/timelock/living/can_play(client/C) - return C.get_time_living() >= time_required - -/datum/timelock/living/get_role_requirement(client/C) - return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/tzimisce_mansion/bogatyr.dm b/code/modules/vtmb/jobs/tzimisce_mansion/bogatyr.dm deleted file mode 100644 index cb1be8e47c..0000000000 --- a/code/modules/vtmb/jobs/tzimisce_mansion/bogatyr.dm +++ /dev/null @@ -1,57 +0,0 @@ - -/datum/job/vamp/tzimisce_mansion_v/bogatyr - title = JOB_BOGATYR - department_head = list("Voivode") - faction = "Vampire" - total_positions = 4 - spawn_positions = 4 - supervisors = " the Laws of Hospitality" - selection_color = "#953d2d" - - outfit = /datum/outfit/job/bogatyr - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_BOGATYR - exp_type_department = EXP_TYPE_TZIMISCE - - allowed_species = list("Vampire") - allowed_bloodlines = list("Old Clan Tzimisce") - minimal_generation = 13 //Uncomment when players get exp enough - - v_duty = "Whether you are of Voivode-in-Waiting's blood or if you've been honored, you are one of the Kin of the Voivode. Protect your Family, as your Family would protect you." - experience_addition = 15 - minimal_masquerade = 2 - my_contact_is_important = TRUE - known_contacts = list("Prince", "Baron", "Sheriff") - -AddTimelock(/datum/job/vamp/tzimisce_mansion_v/bogatyr, list( - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/bogatyr/pre_equip(mob/living/carbon/human/H) - ..() - if(H.gender == FEMALE) - uniform = /obj/item/clothing/under/vampire/bogatyr/female - shoes = /obj/item/clothing/shoes/vampire/heels - - -/datum/outfit/job/bogatyr - name = "Bogatyr" - jobtype = /datum/job/vamp/tzimisce_mansion_v/bogatyr - id = /obj/item/card/id/bogatyr - //glasses = /obj/item/clothing/glasses/vampire/yellow - uniform = /obj/item/clothing/under/vampire/bogatyr - //suit = /obj/item/clothing/suit/vampire/jacket/punk - shoes = /obj/item/clothing/shoes/vampire/jackboots - head = /obj/item/clothing/head/vampire/bogatyr - suit = /obj/item/clothing/suit/vampire/bogatyr - belt = /obj/item/storage/belt/vampire/sheathe/longsword - l_pocket = /obj/item/vamp/phone - //r_pocket = /obj/item/cockclock - backpack_contents = list(/obj/item/vamp/keys/old_clan_tzimisce=1, /obj/item/melee/vampirearms/fireaxe=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) - -/obj/effect/landmark/start/bogatyr - name = "Bogatyr" diff --git a/code/modules/vtmb/jobs/tzimisce_mansion/voivode.dm b/code/modules/vtmb/jobs/tzimisce_mansion/voivode.dm deleted file mode 100644 index 3a6899aab4..0000000000 --- a/code/modules/vtmb/jobs/tzimisce_mansion/voivode.dm +++ /dev/null @@ -1,48 +0,0 @@ -/datum/job/vamp/tzimisce_mansion_v/voivode - title = JOB_VOIVODE - department_head = list("Eldest") - faction = "Vampire" - total_positions = 1 - spawn_positions = 1 - supervisors = " the Laws of Hospitality" - selection_color = "#953d2d" - - outfit = /datum/outfit/job/voivode - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_VOIVODE - exp_type_department = EXP_TYPE_TZIMISCE - - allowed_species = list("Vampire") - allowed_bloodlines = list("Old Clan Tzimisce") - minimal_generation = 7 - - v_duty = "You are a Childe of the Voivode-in-Waiting, the ancient Tzimisce Elder who has rested beneath the Earth for an age longer than the city that now rests on their bones. Honor them in all your actions, and remember that you walk with their favor." - experience_addition = 20 - minimal_masquerade = 2 - my_contact_is_important = TRUE - known_contacts = list("Prince", "Baron", "Sheriff") - -AddTimelock(/datum/job/vamp/tzimisce_mansion_v/voivode, list( - JOB_TZIMISCE_MANSION_ROLES = 10 HOURS, - JOB_LIVING_ROLES = 2 HOURS, -)) - -/datum/outfit/job/voivode - name = "Voivode" - jobtype = /datum/job/vamp/tzimisce_mansion_v/voivode - id = /obj/item/card/id/voivode - //glasses = /obj/item/clothing/glasses/vampire/yellow - uniform = /obj/item/clothing/under/vampire/voivode - suit = /obj/item/clothing/suit/vampire/trench/voivode - shoes = /obj/item/clothing/shoes/vampire/jackboots - belt = /obj/item/storage/belt/vampire/sheathe/longsword - l_pocket = /obj/item/vamp/phone - //r_pocket = - backpack_contents = list(/obj/item/vamp/keys/old_clan_tzimisce=1, /obj/item/melee/vampirearms/eguitar=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/elder=1) - -/obj/effect/landmark/start/voivode - name = "Voivode" diff --git a/code/modules/vtmb/jobs/tzimisce_mansion/zadruga.dm b/code/modules/vtmb/jobs/tzimisce_mansion/zadruga.dm deleted file mode 100644 index 82066abf9c..0000000000 --- a/code/modules/vtmb/jobs/tzimisce_mansion/zadruga.dm +++ /dev/null @@ -1,48 +0,0 @@ -/datum/job/vamp/tzimisce_mansion_v/zadruga - title = JOB_ZADRUGA - department_head = list("Voivode") - faction = "Ghoul" //[Lucifernix] - Change this to vampire when I actually fix this. - total_positions = 2 - spawn_positions = 2 - supervisors = " the Laws of Hospitality" - selection_color = "#953d2d" - - outfit = /datum/outfit/job/zadruga - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) - paycheck = PAYCHECK_EASY - paycheck_department = ACCOUNT_SRV - display_order = JOB_DISPLAY_ORDER_ZADRUGA - exp_type_department = EXP_TYPE_TZIMISCE - - //ghoul_only = TRUE - //allowed_bloodlines = list("Old Clan Tzimisce", "Tzimisce") - //minimal_generation = 7 //Uncomment when players get exp enough - - duty = "You were born in servitude to the Master of the Manor: your father served the Voivode, as did his father. Now, you carry their blood, and with it their responsibilities." - experience_addition = 20 - minimal_masquerade = 2 - my_contact_is_important = FALSE - known_contacts = list("Prince", "Baron", "Sheriff") - -AddTimelock(/datum/job/vamp/tzimisce_mansion_v/zadruga, list( - JOB_TZIMISCE_MANSION_ROLES = 5 HOURS, - JOB_LIVING_ROLES = 2 HOURS, -)) - - -/datum/outfit/job/zadruga - name = "zadruga" - jobtype = /datum/job/vamp/tzimisce_mansion_v/zadruga - id = /obj/item/card/id/bogatyr - //glasses = /obj/item/clothing/glasses/vampire/yellow - uniform = /obj/item/clothing/under/vampire/bogatyr - //suit = /obj/item/clothing/suit/vampire/jacket/punk - shoes = /obj/item/clothing/shoes/vampire/jackboots - l_pocket = /obj/item/vamp/phone - //r_pocket = /obj/item/cockclock - backpack_contents = list(/obj/item/vamp/keys/old_clan_tzimisce=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) - -/obj/effect/landmark/start/zadruga - name = "Zadruga" diff --git a/code/modules/vtmb/jobs/unaligned/citizen.dm b/code/modules/vtmb/jobs/unaligned/citizen.dm deleted file mode 100644 index 83b659762a..0000000000 --- a/code/modules/vtmb/jobs/unaligned/citizen.dm +++ /dev/null @@ -1,61 +0,0 @@ - -/datum/job/vamp/unaligned/citizen - title = JOB_CIVILIAN - faction = "Vampire" - total_positions = -1 - spawn_positions = -1 - supervisors = "the Traditions" - selection_color = "#df7058" - access = list() //See /datum/job/assistant/get_access() - minimal_access = list() //See /datum/job/assistant/get_access() - outfit = /datum/outfit/job/citizen - antag_rep = 7 - paycheck = PAYCHECK_ASSISTANT // Get a job. Job reassignment changes your paycheck now. Get over it. - - access = list(ACCESS_MAINT_TUNNELS) - liver_traits = list(TRAIT_GREYTIDE_METABOLISM) - - paycheck_department = ACCOUNT_CIV - display_order = JOB_DISPLAY_ORDER_CITIZEN - - allowed_species = list("Vampire", "Ghoul", "Human", "Werewolf", "Kuei-Jin") - - v_duty = "Follow the traditions of the Camarilla. Obey the Prince and their authority. The city belongs to him. Aligning yourself with your clan members would be of benefit." - duty = "Obey the authorities... Or don't. You are up late tonight for one reason or another." - minimal_masquerade = 0 - allowed_bloodlines = list("True Brujah", "Daughters of Cacophony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff", "Old Clan Tzimisce", "Kiasyd", "Cappadocian") - -/datum/outfit/job/citizen - name = "Citizen" - jobtype = /datum/job/vamp/unaligned/citizen - l_pocket = /obj/item/vamp/phone - id = /obj/item/cockclock - -/datum/outfit/job/citizen/pre_equip(mob/living/carbon/human/H) - ..() - if(H.clane) - if(H.gender == MALE) - shoes = /obj/item/clothing/shoes/vampire - if(H.clane.male_clothes) - uniform = H.clane.male_clothes - else - shoes = /obj/item/clothing/shoes/vampire/heels - if(H.clane.female_clothes) - uniform = H.clane.female_clothes - else - uniform = /obj/item/clothing/under/vampire/emo - if(H.gender == MALE) - shoes = /obj/item/clothing/shoes/vampire - else - shoes = /obj/item/clothing/shoes/vampire/heels - if(H.clane) - if(H.clane.name == "Lasombra") - backpack_contents = list(/obj/item/passport =1, /obj/item/vamp/creditcard=1) - if(!H.clane) - backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) - if(H.clane && H.clane.name != "Lasombra") - backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) - -/obj/effect/landmark/start/citizen - name = "Citizen" - icon_state = "Assistant" diff --git a/code/modules/vtmb/jobs/unaligned/unaligned.dm b/code/modules/vtmb/jobs/unaligned/unaligned.dm deleted file mode 100644 index 9bcd79fb87..0000000000 --- a/code/modules/vtmb/jobs/unaligned/unaligned.dm +++ /dev/null @@ -1,21 +0,0 @@ -/datum/job/vamp/unaligned - supervisors = "Yourself" - total_positions = 1 - spawn_positions = 1 - -/datum/timelock/unaligned - name = "Unaligned Roles" - -/datum/timelock/unaligned/New(name, time_required, list/roles) - . = ..() - src.roles = JOB_UNALIGNED_ROLES_LIST - - -/datum/timelock/living - name = "Living Roles" - -/datum/timelock/living/can_play(client/C) - return C.get_time_living() >= time_required - -/datum/timelock/living/get_role_requirement(client/C) - return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/warehouse/warehouse.dm b/code/modules/vtmb/jobs/warehouse/warehouse.dm deleted file mode 100644 index 9cec8b4574..0000000000 --- a/code/modules/vtmb/jobs/warehouse/warehouse.dm +++ /dev/null @@ -1,21 +0,0 @@ -/datum/job/vamp/warehouse - supervisors = "None. You are beholden only to yourself." - total_positions = 1 - spawn_positions = 1 - -/datum/timelock/warehouse - name = "Warehouse Roles" - -/datum/timelock/warehouse/New(name, time_required, list/roles) - . = ..() - src.roles = JOB_WAREHOUSE_ROLES_LIST - - -/datum/timelock/living - name = "Living Roles" - -/datum/timelock/living/can_play(client/C) - return C.get_time_living() >= time_required - -/datum/timelock/living/get_role_requirement(client/C) - return time_required - C.get_time_living() From 84fa54ce6f27e79a28ca2718b48eaa1655fc7274 Mon Sep 17 00:00:00 2001 From: Washington <47699733+wgtjunior743@users.noreply.github.com> Date: Thu, 6 Feb 2025 18:48:26 -0300 Subject: [PATCH 3/6] fix previous commit being faulty in some stuff --- code/modules/vtmb/jobs/anarch/anarch.dm | 21 + code/modules/vtmb/jobs/anarch/baron.dm | 62 +++ code/modules/vtmb/jobs/anarch/bouncer.dm | 49 ++ code/modules/vtmb/jobs/anarch/emissary.dm | 50 ++ code/modules/vtmb/jobs/anarch/sweeper.dm | 47 ++ code/modules/vtmb/jobs/antags/caitiff.dm | 70 +++ code/modules/vtmb/jobs/antags/hunter.dm | 115 +++++ code/modules/vtmb/jobs/antags/sabbat.dm | 188 ++++++++ code/modules/vtmb/jobs/camarilla/camarilla.dm | 28 ++ .../camarilla/camarilla_authorities/hound.dm | 63 +++ .../camarilla/camarilla_authorities/prince.dm | 87 ++++ .../camarilla_authorities/seneschal.dm | 79 ++++ .../camarilla_authorities/sheriff.dm | 84 ++++ .../camarilla_primogen_council/primogen.dm | 261 +++++++++++ code/modules/vtmb/jobs/church/church.dm | 21 + code/modules/vtmb/jobs/church/priest.dm | 74 +++ .../vtmb/jobs/city_services/city_services.dm | 21 + .../jobs/city_services/graveyard_keeper.dm | 55 +++ .../vtmb/jobs/city_services/janitor.dm | 42 ++ .../vtmb/jobs/city_services/stripper.dm | 45 ++ code/modules/vtmb/jobs/city_services/taxi.dm | 63 +++ code/modules/vtmb/jobs/clinic/clinic.dm | 21 + code/modules/vtmb/jobs/clinic/doctor.dm | 117 +++++ code/modules/vtmb/jobs/gangs/gangs.dm | 21 + code/modules/vtmb/jobs/gangs/triad.dm | 53 +++ .../vtmb/jobs/giovanni_family/giovanni.dm | 153 +++++++ .../jobs/giovanni_family/giovanni_family.dm | 21 + code/modules/vtmb/jobs/jobs.dm | 427 ++++++++++++++++++ .../vtmb/jobs/national_security/fbi.dm | 52 +++ .../jobs/national_security/national_guard.dm | 398 ++++++++++++++++ .../national_security/national_security.dm | 21 + .../vtmb/jobs/national_security/swat.dm | 379 ++++++++++++++++ code/modules/vtmb/jobs/police_force/police.dm | 149 ++++++ .../vtmb/jobs/police_force/police_force.dm | 21 + code/modules/vtmb/jobs/tremere/archivist.dm | 54 +++ code/modules/vtmb/jobs/tremere/regent.dm | 57 +++ code/modules/vtmb/jobs/tremere/tremere.dm | 21 + .../vtmb/jobs/tzimisce_mansion/bogatyr.dm | 57 +++ .../tzimisce_mansion/tzimisce_mansion_v.dm | 21 + .../vtmb/jobs/tzimisce_mansion/voivode.dm | 48 ++ .../vtmb/jobs/tzimisce_mansion/zadruga.dm | 48 ++ code/modules/vtmb/jobs/unaligned/citizen.dm | 61 +++ code/modules/vtmb/jobs/unaligned/unaligned.dm | 21 + code/modules/vtmb/jobs/warehouse/dealer.dm | 61 +++ .../vtmb/jobs/warehouse/supply_assistant.dm | 50 ++ code/modules/vtmb/jobs/warehouse/warehouse.dm | 21 + 46 files changed, 3878 insertions(+) create mode 100644 code/modules/vtmb/jobs/anarch/anarch.dm create mode 100644 code/modules/vtmb/jobs/anarch/baron.dm create mode 100644 code/modules/vtmb/jobs/anarch/bouncer.dm create mode 100644 code/modules/vtmb/jobs/anarch/emissary.dm create mode 100644 code/modules/vtmb/jobs/anarch/sweeper.dm create mode 100644 code/modules/vtmb/jobs/antags/caitiff.dm create mode 100644 code/modules/vtmb/jobs/antags/hunter.dm create mode 100644 code/modules/vtmb/jobs/antags/sabbat.dm create mode 100644 code/modules/vtmb/jobs/camarilla/camarilla.dm create mode 100644 code/modules/vtmb/jobs/camarilla/camarilla_authorities/hound.dm create mode 100644 code/modules/vtmb/jobs/camarilla/camarilla_authorities/prince.dm create mode 100644 code/modules/vtmb/jobs/camarilla/camarilla_authorities/seneschal.dm create mode 100644 code/modules/vtmb/jobs/camarilla/camarilla_authorities/sheriff.dm create mode 100644 code/modules/vtmb/jobs/camarilla/camarilla_primogen_council/primogen.dm create mode 100644 code/modules/vtmb/jobs/church/church.dm create mode 100644 code/modules/vtmb/jobs/church/priest.dm create mode 100644 code/modules/vtmb/jobs/city_services/city_services.dm create mode 100644 code/modules/vtmb/jobs/city_services/graveyard_keeper.dm create mode 100644 code/modules/vtmb/jobs/city_services/janitor.dm create mode 100644 code/modules/vtmb/jobs/city_services/stripper.dm create mode 100644 code/modules/vtmb/jobs/city_services/taxi.dm create mode 100644 code/modules/vtmb/jobs/clinic/clinic.dm create mode 100644 code/modules/vtmb/jobs/clinic/doctor.dm create mode 100644 code/modules/vtmb/jobs/gangs/gangs.dm create mode 100644 code/modules/vtmb/jobs/gangs/triad.dm create mode 100644 code/modules/vtmb/jobs/giovanni_family/giovanni.dm create mode 100644 code/modules/vtmb/jobs/giovanni_family/giovanni_family.dm create mode 100644 code/modules/vtmb/jobs/jobs.dm create mode 100644 code/modules/vtmb/jobs/national_security/fbi.dm create mode 100644 code/modules/vtmb/jobs/national_security/national_guard.dm create mode 100644 code/modules/vtmb/jobs/national_security/national_security.dm create mode 100644 code/modules/vtmb/jobs/national_security/swat.dm create mode 100644 code/modules/vtmb/jobs/police_force/police.dm create mode 100644 code/modules/vtmb/jobs/police_force/police_force.dm create mode 100644 code/modules/vtmb/jobs/tremere/archivist.dm create mode 100644 code/modules/vtmb/jobs/tremere/regent.dm create mode 100644 code/modules/vtmb/jobs/tremere/tremere.dm create mode 100644 code/modules/vtmb/jobs/tzimisce_mansion/bogatyr.dm create mode 100644 code/modules/vtmb/jobs/tzimisce_mansion/tzimisce_mansion_v.dm create mode 100644 code/modules/vtmb/jobs/tzimisce_mansion/voivode.dm create mode 100644 code/modules/vtmb/jobs/tzimisce_mansion/zadruga.dm create mode 100644 code/modules/vtmb/jobs/unaligned/citizen.dm create mode 100644 code/modules/vtmb/jobs/unaligned/unaligned.dm create mode 100644 code/modules/vtmb/jobs/warehouse/dealer.dm create mode 100644 code/modules/vtmb/jobs/warehouse/supply_assistant.dm create mode 100644 code/modules/vtmb/jobs/warehouse/warehouse.dm diff --git a/code/modules/vtmb/jobs/anarch/anarch.dm b/code/modules/vtmb/jobs/anarch/anarch.dm new file mode 100644 index 0000000000..e069a3d7fd --- /dev/null +++ b/code/modules/vtmb/jobs/anarch/anarch.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/anarch + supervisors = "the Anarchs and the Traditions" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/anarch + name = "Anarch Roles" + +/datum/timelock/anarch/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_ANARCH_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/anarch/baron.dm b/code/modules/vtmb/jobs/anarch/baron.dm new file mode 100644 index 0000000000..dd86a1bb0d --- /dev/null +++ b/code/modules/vtmb/jobs/anarch/baron.dm @@ -0,0 +1,62 @@ + +/datum/job/vamp/anarch/barkeeper + title = JOB_BARKEEPER + department_head = list("Justicar") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = "the Anarchs and the Traditions" + selection_color = "#434343" + + outfit = /datum/outfit/job/barkeeper + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_BARKEEPER + bounty_types = CIV_JOB_DRINK + +// minimal_generation = 11 //Uncomment when players get exp enough + + my_contact_is_important = TRUE + known_contacts = list( + "Prince", + "Dealer" + ) + + v_duty = "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." + minimal_masquerade = 3 + allowed_species = list("Vampire") + allowed_bloodlines = list("Daughters of Cacophony", "True Brujah", "Brujah", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Ventrue", "Lasombra", "Gargoyle", "Ministry") + experience_addition = 20 + + +AddTimelock(/datum/job/vamp/anarch/barkeeper, list( + JOB_ANARCH_ROLES = 15 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/barkeeper + name = "Baron" + jobtype = /datum/job/vamp/anarch/barkeeper + + id = /obj/item/card/id/anarch + glasses = /obj/item/clothing/glasses/vampire/sun + uniform = /obj/item/clothing/under/vampire/bar + suit = /obj/item/clothing/suit/vampire/jacket/better + shoes = /obj/item/clothing/shoes/vampire + gloves = /obj/item/clothing/gloves/vampire/work + l_pocket = /obj/item/vamp/phone/barkeeper + r_pocket = /obj/item/vamp/keys/bar + backpack_contents = list(/obj/item/passport=1, /obj/item/phone_book=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) + +/datum/outfit/job/barkeeper/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/vampire/bar/female + shoes = /obj/item/clothing/shoes/vampire/heels + +/obj/effect/landmark/start/barkeeper + name = "Baron" + icon_state = "Barkeeper" diff --git a/code/modules/vtmb/jobs/anarch/bouncer.dm b/code/modules/vtmb/jobs/anarch/bouncer.dm new file mode 100644 index 0000000000..97c9a5490b --- /dev/null +++ b/code/modules/vtmb/jobs/anarch/bouncer.dm @@ -0,0 +1,49 @@ + +/datum/job/vamp/anarch/bruiser + title = JOB_BRUISER + department_head = list("Baron") + faction = "Vampire" + total_positions = 7 + spawn_positions = 7 + supervisors = "the Baron" + selection_color = "#434343" + + outfit = /datum/outfit/job/bruiser + + access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) + minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + + mind_traits = list(TRAIT_DONUT_LOVER) + liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_BRUISER + known_contacts = list("Baron") + allowed_bloodlines = list("Daughters of Cacophony", "True Brujah", "Brujah", "Nosferatu", "Gangrel", "Toreador", "Tremere", "Malkavian", "Banu Haqim", "Tzimisce", "Caitiff", "Ventrue", "Lasombra", "Gargoyle", "Kiasyd", "Cappadocian", "Ministry") + + v_duty = "You are the enforcer of the Anarchs. The baron is always in need of muscle power. Enforce the Traditions - in the anarch way." + minimal_masquerade = 2 + experience_addition = 15 + +AddTimelock(/datum/job/vamp/anarch/bruiser, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/bruiser + name = "Bruiser" + jobtype = /datum/job/vamp/anarch/bruiser + + id = /obj/item/card/id/anarch + uniform = /obj/item/clothing/under/vampire/bouncer + suit = /obj/item/clothing/suit/vampire/jacket + shoes = /obj/item/clothing/shoes/vampire/jackboots + r_pocket = /obj/item/vamp/keys/anarch + l_pocket = /obj/item/vamp/phone/anarch + r_hand = /obj/item/melee/vampirearms/baseball + backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/vampire_stake=3, /obj/item/flashlight=1, /obj/item/vamp/keys/hack=1, /obj/item/vamp/creditcard=1) + + +/obj/effect/landmark/start/bruiser + name = "Bruiser" + icon_state = "Bouncer" diff --git a/code/modules/vtmb/jobs/anarch/emissary.dm b/code/modules/vtmb/jobs/anarch/emissary.dm new file mode 100644 index 0000000000..158c2677c0 --- /dev/null +++ b/code/modules/vtmb/jobs/anarch/emissary.dm @@ -0,0 +1,50 @@ + +/datum/job/vamp/anarch/emissary + title = JOB_EMISSARY + department_head = list("Baron") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = "the Baron" + selection_color = "#434343" + + outfit = /datum/outfit/job/emissary + + access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) + minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + + mind_traits = list(TRAIT_DONUT_LOVER) + liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_EMISSARY + known_contacts = list("Baron") + allowed_bloodlines = list("Daughters of Cacophony", "True Brujah", "Brujah", "Nosferatu", "Gangrel", "Tremere", "Toreador", "Malkavian", "Banu Haqim", "Tzimisce", "Caitiff", "Ventrue", "Lasombra", "Gargoyle", "Kiasyd", "Cappadocian", "Ministry") + + v_duty = "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." + minimal_masquerade = 2 + experience_addition = 15 + +AddTimelock(/datum/job/vamp/anarch/emissary, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/emissary + name = "emissary" + jobtype = /datum/job/vamp/anarch/emissary + + id = /obj/item/card/id/anarch + uniform = /obj/item/clothing/under/vampire/bouncer + suit = /obj/item/clothing/suit/vampire/jacket + shoes = /obj/item/clothing/shoes/vampire/jackboots + r_pocket = /obj/item/vamp/keys/anarch + l_pocket = /obj/item/vamp/phone/anarch + backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/keys/hack=1, /obj/item/vamp/creditcard/rich=1) + +/datum/outfit/job/emissary/pre_equip(mob/living/carbon/human/H) + ..() + +/obj/effect/landmark/start/emissary + name = "Emissary" + icon_state = "Bouncer" diff --git a/code/modules/vtmb/jobs/anarch/sweeper.dm b/code/modules/vtmb/jobs/anarch/sweeper.dm new file mode 100644 index 0000000000..850ece117e --- /dev/null +++ b/code/modules/vtmb/jobs/anarch/sweeper.dm @@ -0,0 +1,47 @@ + +/datum/job/vamp/anarch/sweeper + title = JOB_SWEEPER + department_head = list("Baron") + faction = "Vampire" + total_positions = 3 + spawn_positions = 3 + supervisors = "the Baron" + selection_color = "#434343" + + outfit = /datum/outfit/job/sweeper + + access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) + minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + + mind_traits = list(TRAIT_DONUT_LOVER) + liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_SWEEPER + known_contacts = list("Baron") + allowed_bloodlines = list("Daughters of Cacophony", "True Brujah", "Brujah", "Nosferatu", "Gangrel", "Tremere", "Toreador", "Malkavian", "Banu Haqim", "Tzimisce", "Caitiff", "Ventrue", "Lasombra", "Gargoyle", "Kiasyd", "Cappadocian", "Ministry") + + v_duty = "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." + minimal_masquerade = 2 + experience_addition = 15 + +AddTimelock(/datum/job/vamp/anarch/sweeper, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/sweeper + name = "Sweeper" + jobtype = /datum/job/vamp/anarch/sweeper + + id = /obj/item/card/id/anarch + uniform = /obj/item/clothing/under/vampire/bouncer + suit = /obj/item/clothing/suit/vampire/jacket + shoes = /obj/item/clothing/shoes/vampire/jackboots + r_pocket = /obj/item/vamp/keys/anarch + l_pocket = /obj/item/vamp/phone/anarch + backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/keys/hack=1, /obj/item/vamp/creditcard=1, /obj/item/binoculars = 1) + +/obj/effect/landmark/start/sweeper + name = "Sweeper" + icon_state = "Bouncer" diff --git a/code/modules/vtmb/jobs/antags/caitiff.dm b/code/modules/vtmb/jobs/antags/caitiff.dm new file mode 100644 index 0000000000..de0711d756 --- /dev/null +++ b/code/modules/vtmb/jobs/antags/caitiff.dm @@ -0,0 +1,70 @@ +/datum/outfit/job/caitiff + name = "Caitiff" + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/flashlight + id = /obj/item/cockclock + backpack_contents = list(/obj/item/passport=1, /obj/item/vampire_stake=1, /obj/item/vamp/keys/hack=1) + +/datum/outfit/job/caitiff/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == MALE) + shoes = /obj/item/clothing/shoes/vampire + if(H.clane) + if(H.clane.male_clothes) + uniform = H.clane.male_clothes + else + shoes = /obj/item/clothing/shoes/vampire/heels + if(H.clane) + if(H.clane.female_clothes) + uniform = H.clane.female_clothes + +/datum/outfit/job/caitiff/post_equip(mob/living/carbon/human/H) + ..() + if(H.mind) + H.mind.add_antag_datum(/datum/antagonist/caitiff) + + var/list/landmarkslist = list() + for(var/obj/effect/landmark/start/S in GLOB.start_landmarks_list) + if(S.name == name) + landmarkslist += S + var/obj/effect/landmark/start/D = pick(landmarkslist) + H.forceMove(D.loc) + + var/my_name = "Tyler" + if(H.gender == MALE) + my_name = pick(GLOB.first_names_male) + else + my_name = pick(GLOB.first_names_female) + var/my_surname = pick(GLOB.last_names) + H.fully_replace_character_name(null,"[my_name] [my_surname]") + +/obj/effect/landmark/start/caitiff + name = "Caitiff" + delete_after_roundstart = FALSE + +/datum/antagonist/caitiff + name = "Caitiff" + roundend_category = "caitiffs" + antagpanel_category = "Caitiff" + job_rank = ROLE_TRAITOR + antag_moodlet = /datum/mood_event/focused + antag_hud_type = ANTAG_HUD_TRAITOR + antag_hud_name = "traitor" + +/datum/antagonist/caitiff/on_gain() + owner.special_role = src + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = owner + kill_objective.find_target() + objectives += kill_objective + owner.current.playsound_local(get_turf(owner.current), 'code/modules/wod13/sounds/sad_start.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE) + return ..() + +/datum/antagonist/caitiff/on_removal() + ..() + to_chat(owner.current,"You are no longer the Caitiff!") + owner.special_role = null + +/datum/antagonist/caitiff/greet() + to_chat(owner.current, "You are the Caitiff.") + owner.announce_objectives() diff --git a/code/modules/vtmb/jobs/antags/hunter.dm b/code/modules/vtmb/jobs/antags/hunter.dm new file mode 100644 index 0000000000..d569b94c45 --- /dev/null +++ b/code/modules/vtmb/jobs/antags/hunter.dm @@ -0,0 +1,115 @@ +/datum/outfit/job/hunter + name = "Hunter" + uniform = /obj/item/clothing/under/vampire/graveyard + r_pocket = /obj/item/flashlight + id = /obj/item/card/id/hunter + shoes = /obj/item/clothing/shoes/vampire/jackboots + l_pocket = /obj/item/vamp/keys/church + backpack_contents = list( + /obj/item/storage/book/bible = 1, + /obj/item/vampire_stake = 3, + /obj/item/molotov = 1, + /obj/item/gas_can/full = 1, + /obj/item/vamp/keys/hack=1 + ) + +/datum/outfit/job/hunter/post_equip(mob/living/carbon/human/H) + ..() + if(H.clane) + qdel(H.clane) + H.set_species(/datum/species/human) + H.generation = 13 + H.maxHealth = round((initial(H.maxHealth)-initial(H.maxHealth)/4)+(initial(H.maxHealth)/4)*(H.physique+13-H.generation)) + H.health = round((initial(H.health)-initial(H.health)/4)+(initial(H.health)/4)*(H.physique+13-H.generation)) + var/my_name = "Tyler" + if(H.gender == MALE) + my_name = pick(GLOB.first_names_male) + else + my_name = pick(GLOB.first_names_female) + var/my_surname = pick(GLOB.last_names) + H.fully_replace_character_name(null,"[my_name] [my_surname]") +// for(var/atom/movable/screen/blood/B in H.hud_used.infodisplay) +// B.icon_state = null +// for(var/atom/movable/screen/healths/HE in H.hud_used.infodisplay) +// HE.icon = 'code/modules/wod13/ghoul_health.dmi' +// for(var/atom/movable/screen/drinkblood/DB in H.hud_used.static_inventory) +// DB.icon_state = null +// for(var/atom/movable/screen/bloodheal/BH in H.hud_used.static_inventory) +// BH.icon_state = null +// for(var/atom/movable/screen/bloodpower/BP in H.hud_used.static_inventory) +// BP.icon_state = null +// for(var/atom/movable/screen/disciplines/DI in H.hud_used.static_inventory) +// DI.icon_state = null + for(var/datum/action/A in H.actions) + if(A.vampiric) + A.Remove(H) + H.thaumaturgy_knowledge = FALSE + QDEL_NULL(H.clane) + var/obj/item/organ/eyes/NV = new() + NV.Insert(H, TRUE, FALSE) + if(H.mind) + H.mind.add_antag_datum(/datum/antagonist/hunter) + + var/list/landmarkslist = list() + for(var/obj/effect/landmark/start/S in GLOB.start_landmarks_list) + if(S.name == name) + landmarkslist += S + var/obj/effect/landmark/start/D = pick(landmarkslist) + H.forceMove(D.loc) + + var/list/loadouts = list("Fire Fighter", "EOD Suit", "Holy Presence") + spawn() + var/loadout_type = input(H, "Choose the Lord's gift for you:", "Loadout") as anything in loadouts + switch(loadout_type) + if("Fire Master") + H.equip_to_slot_or_del(new /obj/item/clothing/head/vampire/helmet(H), ITEM_SLOT_HEAD) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/vampire/vest(H), ITEM_SLOT_OCLOTHING) + H.put_in_r_hand(new /obj/item/vampire_flamethrower(H)) + H.put_in_l_hand(new /obj/item/melee/vampirearms/fireaxe(H)) + if("EOD Suit") + H.equip_to_slot_or_del(new /obj/item/clothing/suit/vampire/eod(H), ITEM_SLOT_OCLOTHING) + H.equip_to_slot_or_del(new /obj/item/clothing/head/vampire/eod(H), ITEM_SLOT_HEAD) + H.put_in_r_hand(new /obj/item/gun/ballistic/shotgun/vampire(H)) + H.put_in_l_hand(new /obj/item/ammo_box/vampire/c12g(H)) + if("Holy Presence") + H.equip_to_slot_or_del(new /obj/item/clothing/suit/vampire/vest/army(H), ITEM_SLOT_OCLOTHING) + H.put_in_r_hand(new /obj/item/melee/vampirearms/chainsaw(H)) + H.resistant_to_disciplines = TRUE + to_chat(H, "You are no longer vulnerable to vampire blood powers...") + +/obj/effect/landmark/start/hunter + name = "Hunter" + delete_after_roundstart = FALSE + +/datum/antagonist/hunter + name = "Hunter" + roundend_category = "hunters" + antagpanel_category = "Hunter" + job_rank = ROLE_OPERATIVE + antag_hud_type = ANTAG_HUD_OPS + antag_hud_name = "synd" + antag_moodlet = /datum/mood_event/focused + show_to_ghosts = TRUE + +/datum/antagonist/hunter/on_gain() + owner.holy_role = HOLY_ROLE_PRIEST + add_antag_hud(ANTAG_HUD_OPS, "synd", owner.current) + owner.special_role = src + var/datum/objective/custom/custom_objective = new + custom_objective.owner = owner + custom_objective.explanation_text = "Exterminate all evil spirits in the city. Let the Hunt begin!" + objectives += custom_objective + var/datum/objective/martyr/die_objective = new + die_objective.owner = owner + objectives += die_objective + owner.current.playsound_local(get_turf(owner.current), 'code/modules/wod13/sounds/orthodox_start.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE) + return ..() + +/datum/antagonist/hunter/on_removal() + ..() + to_chat(owner.current,"You are no longer the Hunter!") + owner.special_role = null + +/datum/antagonist/hunter/greet() + to_chat(owner.current, "You are the Hunter.") + owner.announce_objectives() diff --git a/code/modules/vtmb/jobs/antags/sabbat.dm b/code/modules/vtmb/jobs/antags/sabbat.dm new file mode 100644 index 0000000000..a82a5abc0c --- /dev/null +++ b/code/modules/vtmb/jobs/antags/sabbat.dm @@ -0,0 +1,188 @@ +/datum/outfit/job/sabbatist + name = "Sabbatist" + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/flashlight + suit = /obj/item/clothing/suit/vampire/trench + id = /obj/item/cockclock + backpack_contents = list(/obj/item/passport=1, /obj/item/vampire_stake=3, /obj/item/gun/ballistic/vampire/revolver=1, /obj/item/melee/vampirearms/knife=1, /obj/item/vamp/keys/hack=1, /obj/item/melee/vampirearms/katana/kosa=1) + +/datum/outfit/job/sabbatist/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == MALE) + shoes = /obj/item/clothing/shoes/vampire + if(H.clane) + if(H.clane.male_clothes) + uniform = H.clane.male_clothes + else + shoes = /obj/item/clothing/shoes/vampire/heels + if(H.clane) + if(H.clane.female_clothes) + uniform = H.clane.female_clothes + +/datum/outfit/job/sabbatist/post_equip(mob/living/carbon/human/H) + ..() + if(H.mind) + H.mind.add_antag_datum(/datum/antagonist/sabbatist) + GLOB.sabbatites += H + + var/my_name = "Tyler" + if(H.gender == MALE) + my_name = pick(GLOB.first_names_male) + else + my_name = pick(GLOB.first_names_female) + var/my_surname = pick(GLOB.last_names) + H.fully_replace_character_name(null,"[my_name] [my_surname]") +//Commented out code for future sabbat character setup +/* + H.generation = 13 + H.clane = null + + H.maxHealth = round((initial(H.maxHealth)-initial(H.maxHealth)/4)+(initial(H.maxHealth)/4)*(H.physique+13-H.generation)) + H.health = round((initial(H.health)-initial(H.health)/4)+(initial(H.health)/4)*(H.physique+13-H.generation)) + H.thaumaturgy_knowledge = FALSE + QDEL_NULL(H.clane) + var/obj/item/organ/eyes/NV = new() + NV.Insert(H, TRUE, FALSE) + add_verb(H, /datum/job/sabbatist/verb/setup_character) +*/ + + var/list/landmarkslist = list() + for(var/obj/effect/landmark/start/S in GLOB.start_landmarks_list) + if(S.name == name) + landmarkslist += S + var/obj/effect/landmark/start/D = pick(landmarkslist) + H.forceMove(D.loc) + +//Commented out code for future sabbat character setup +/* +/datum/job/sabbatist/verb/setup_character() + set category = FACTION_SABBAT + set name = "Set Up Character" + set desc = "Prepare your character." + var/list/clans = list("Tzimisce", "Lasombra", "Gangrel", "Brujah", "Toreador", "Ventrue") + var/list/generations = list(8, 9, 10, 11, 12, 13) + var/total_points = 10 + var/points_spent = 0 + + var/clan_choice = input("Choose your clan:", "Clan Selection") in clans + var/generation_choice = input("Choose your generation:", "Generation Selection") in generations + + var/discipline1 + var/discipline2 + var/discipline3 + switch(clan_choice) + if("Tzimisce") + discipline1 = "Animalism" + discipline2 = "Auspex" + discipline3 = "Vicissitude" + if("Lasombra") + discipline1 = "Dominate" + discipline2 = "Obtenebration" + discipline3 = "Potence" + if("Gangrel") + discipline1 = "Animalism" + discipline2 = "Fortitude" + discipline3 = "Protean" + if("Brujah") + discipline1 = "Celerity" + discipline2 = "Potence" + discipline3 = "Presence" + if("Toreador") + discipline1 = "Auspex" + discipline2 = "Celerity" + discipline3 = "Presence" + if("Ventrue") + discipline1 = "Dominate" + discipline2 = "Fortitude" + discipline3 = "Presence" + var/discipline1_level = 0 + var/discipline2_level = 0 + var/discipline3_level = 0 + + var/list/generation_costs = list(8 = 5, 9 = 4, 10 = 3, 11 = 2, 12 = 1, 13 = 0) + generation_choice = 13 + + while(points_spent < total_points) + var/list/choices = list("Discipline 1: [discipline1] (Level: [discipline1_level])", "Discipline 2: [discipline2] (Level: [discipline2_level])", "Discipline 3: [discipline3] (Level: [discipline3_level])", "Finish") + var/choice = input("Allocate your points. Points remaining: [total_points - points_spent]", "Discipline Allocation") in choices + + if(choice == "Finish") + break + + if(choice == "Discipline 1: [discipline1] (Level: [discipline1_level])") + if(points_spent < total_points) + discipline1_level += 1 + points_spent += 1 + if(choice == "Discipline 2: [discipline2] (Level: [discipline2_level])") + if(points_spent < total_points) + discipline2_level += 1 + points_spent += 1 + if(choice == "Discipline 3: [discipline3] (Level: [discipline3_level])") + if(points_spent < total_points) + discipline3_level += 1 + points_spent += 1 + if(choice == "Choose Generation (Current: [generation_choice])") + var/new_generation = input("Choose your generation:", "Generation Selection") in generation_costs + var/cost = generation_costs[new_generation] + if(points_spent + cost <= total_points) + points_spent += cost + generation_choice = new_generation + + H.skin_tone = get_vamp_skin_color(H.skin_tone) + H.update_body() + H.clane = new H.clane.type() + H.clane.on_gain(H) + if(H.clane.alt_sprite) + H.skin_tone = "albino" + H.update_body() + H.create_disciplines(FALSE, discipline1, discipline2, discipline3) + +// H.discipline1 = discipline1_level +// H.discipline2 = discipline2_level +// H.discipline3 = discipline3_level + + H.generation = generation_choice + H.maxbloodpool = 10+((13-min(13, H.generation))*3) + H.clane.enlightenment = H.clane.enlightenment + H.maxHealth = round((initial(H.maxHealth)-initial(H.maxHealth)/4)+(initial(H.maxHealth)/4)*(H.physique+13-H.generation)) + H.health = round((initial(H.maxHealth)-initial(H.maxHealth)/4)+(initial(H.maxHealth)/4)*(H.physique+13-H.generation)) + + to_chat(H, "You have chosen [clan_choice] with generation [generation_choice]. Your disciplines are [discipline1] (Level: [discipline1_level]), [discipline2] (Level: [discipline2_level]) and [discipline3] (Level: [discipline3_level]).") + remove_verb(H, /datum/job/sabbatist/verb/setup_character) + +*/ + +/obj/effect/landmark/start/sabbatist + name = "Sabbatist" + delete_after_roundstart = FALSE + +/datum/antagonist/sabbatist + name = "Sabbatist" + roundend_category = "sabbattites" + antagpanel_category = FACTION_SABBAT + job_rank = ROLE_REV + antag_moodlet = /datum/mood_event/revolution + antag_hud_type = ANTAG_HUD_REV + antag_hud_name = "rev" + +/datum/antagonist/sabbatist/on_gain() + add_antag_hud(ANTAG_HUD_REV, "rev", owner.current) + owner.special_role = src + var/datum/objective/custom/custom_objective = new + custom_objective.owner = owner + custom_objective.explanation_text = "Sow chaos, maim, butcher and kill. When you're done The Ivory Tower should be but a distant memory." + objectives += custom_objective + var/datum/objective/survive/survive_objective = new + survive_objective.owner = owner + objectives += survive_objective + owner.current.playsound_local(get_turf(owner.current), 'code/modules/wod13/sounds/evil_start.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE) + return ..() + +/datum/antagonist/sabbatist/on_removal() + ..() + to_chat(owner.current,"You are no longer the part of Sabbat!") + owner.special_role = null + +/datum/antagonist/sabbatist/greet() + to_chat(owner.current, "You are the part of Sabbat.") + owner.announce_objectives() diff --git a/code/modules/vtmb/jobs/camarilla/camarilla.dm b/code/modules/vtmb/jobs/camarilla/camarilla.dm new file mode 100644 index 0000000000..74db403b9f --- /dev/null +++ b/code/modules/vtmb/jobs/camarilla/camarilla.dm @@ -0,0 +1,28 @@ +/datum/job/vamp/camarilla + supervisors = "the Camarilla and the Traditions" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/camarilla_authorities + name = "Camarilla Authorities Roles" + +/datum/timelock/camarilla_authorities/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_CAMARILLA_AUTHORITIES_ROLES_LIST + +/datum/timelock/camarilla_council + name = "Camarilla Council Roles" + +/datum/timelock/camarilla_council/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_CAMARILLA_COUNCIL_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/camarilla/camarilla_authorities/hound.dm b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/hound.dm new file mode 100644 index 0000000000..9fba12018c --- /dev/null +++ b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/hound.dm @@ -0,0 +1,63 @@ + +/datum/job/vamp/camarilla/hound + title = JOB_HOUND + auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY + department_head = list("Prince") + faction = "Vampire" + total_positions = 7 + spawn_positions = 7 + supervisors = "the Sheriff" + selection_color = "#bd3327" + minimal_player_age = 7 + exp_requirements = 300 + exp_type = EXP_TYPE_CREW + + outfit = /datum/outfit/job/hound + + access = list(ACCESS_MAINT_TUNNELS, ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY, ACCESS_MINERAL_STOREROOM) // See /datum/job/officer/get_access() + paycheck = PAYCHECK_HARD + paycheck_department = ACCOUNT_SEC + + mind_traits = list(TRAIT_DONUT_LOVER) + liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_HOUND + bounty_types = CIV_JOB_SEC + known_contacts = list("Prince", "Sheriff") + + v_duty = "You are the Prince's enforcer. You report to the Sheriff and uphold the Traditions." + minimal_masquerade = 4 + experience_addition = 10 + allowed_bloodlines = list("True Brujah", "Daughters of Cacophony", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Lasombra", "Gargoyle", "Kiasyd", "Cappadocian") + +AddTimelock(/datum/job/vamp/camarilla/agent, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/hound + name = "Hound" + jobtype = /datum/job/vamp/camarilla/hound + + ears = /obj/item/p25radio + id = /obj/item/card/id/camarilla + uniform = /obj/item/clothing/under/vampire/hound + gloves = /obj/item/clothing/gloves/vampire/work + suit = /obj/item/clothing/suit/vampire/trench + shoes = /obj/item/clothing/shoes/vampire + r_pocket = /obj/item/vamp/keys/camarilla + l_pocket = /obj/item/vamp/phone/camarilla + backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/vampire_stake=3, /obj/item/flashlight=1, /obj/item/masquerade_contract=1, /obj/item/vamp/keys/hack=1, /obj/item/vamp/creditcard=1) + + backpack = /obj/item/storage/backpack + satchel = /obj/item/storage/backpack/satchel + duffelbag = /obj/item/storage/backpack/duffelbag + + implants = list(/obj/item/implant/mindshield) + +/datum/outfit/job/hound/pre_equip(mob/living/carbon/human/H) + ..() + +/obj/effect/landmark/start/hound + name = "Hound" + icon_state = "Hound" diff --git a/code/modules/vtmb/jobs/camarilla/camarilla_authorities/prince.dm b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/prince.dm new file mode 100644 index 0000000000..aad794a577 --- /dev/null +++ b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/prince.dm @@ -0,0 +1,87 @@ +/datum/job/vamp/camarilla/prince + title = JOB_PRINCE + auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY + department_head = list("Justicar") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = "the Camarilla and the Traditions" + selection_color = "#bd3327" + req_admin_notify = 1 + minimal_player_age = 14 + exp_requirements = 180 + exp_type = EXP_TYPE_CREW + exp_type_department = EXP_TYPE_CAMARILLIA + + outfit = /datum/outfit/job/prince + + access = list() //See get_access() + minimal_access = list() //See get_access() + paycheck = PAYCHECK_COMMAND + paycheck_department = ACCOUNT_SEC + + liver_traits = list(TRAIT_ROYAL_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_PRINCE + + minimal_generation = 10 //Uncomment when players get exp enough + minimal_masquerade = 5 + allowed_species = list("Vampire") + allowed_bloodlines = list("Tremere", "Ventrue", "Nosferatu", "Toreador", "Malkavian", "Brujah", "Lasombra", "Gangrel", "True Brujah") + + my_contact_is_important = TRUE + known_contacts = list( + "Sheriff", + "Seneschal", + "Dealer", + "Tremere Regent", + "Primogens", + "Baron" + ) + + v_duty = "You are the top dog of this city. You hold Praxis over San Francisco, and your word is law. Make sure the Masquerade is upheld, and your status is respected." + experience_addition = 25 + + +AddTimelock(/datum/job/vamp/camarilla/prince, list( + JOB_CAMARILLA_AUTHORITIES_ROLES = 15 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/job/vamp/prince/announce(mob/living/carbon/human/H) + ..() + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, PROC_REF(minor_announce), "Prince [H.real_name] is in the city!")) + +/datum/outfit/job/prince + name = "Prince" + jobtype = /datum/job/vamp/camarilla/prince + + ears = /obj/item/p25radio + id = /obj/item/card/id/prince + glasses = /obj/item/clothing/glasses/vampire/sun + gloves = /obj/item/clothing/gloves/vampire/latex + uniform = /obj/item/clothing/under/vampire/prince + suit = /obj/item/clothing/suit/vampire/trench/alt + shoes = /obj/item/clothing/shoes/vampire + l_pocket = /obj/item/vamp/phone/prince + r_pocket = /obj/item/vamp/keys/prince + backpack_contents = list(/obj/item/gun/ballistic/automatic/vampire/deagle=1, /obj/item/phone_book=1, /obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/masquerade_contract=1, /obj/item/vamp/creditcard/prince=1) + + + backpack = /obj/item/storage/backpack + satchel = /obj/item/storage/backpack/satchel + duffelbag = /obj/item/storage/backpack/duffelbag + + implants = list(/obj/item/implant/mindshield) +// accessory = /obj/item/clothing/accessory/medal/gold/captain + +/datum/outfit/job/prince/pre_equip(mob/living/carbon/human/H) + ..() + H.ignores_warrant = TRUE + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/vampire/prince/female + shoes = /obj/item/clothing/shoes/vampire/heels + +/obj/effect/landmark/start/prince + name = "Prince" + icon_state = "Prince" diff --git a/code/modules/vtmb/jobs/camarilla/camarilla_authorities/seneschal.dm b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/seneschal.dm new file mode 100644 index 0000000000..5e48cdcd0f --- /dev/null +++ b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/seneschal.dm @@ -0,0 +1,79 @@ + +/datum/job/vamp/camarilla/clerk + title = JOB_CLERK + auto_deadmin_role_flags = DEADMIN_POSITION_HEAD + department_head = list("Prince") + head_announce = list(RADIO_CHANNEL_SUPPLY, RADIO_CHANNEL_SERVICE) + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = "the prince" + selection_color = "#bd3327" + req_admin_notify = 1 + minimal_player_age = 10 + exp_requirements = 180 + exp_type = EXP_TYPE_CREW + exp_type_department = EXP_TYPE_NEUTRALS + + outfit = /datum/outfit/job/clerk + + access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, + ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, + ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, + ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER, + ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, + ACCESS_MECH_MINING, ACCESS_MECH_ENGINE, ACCESS_MECH_SCIENCE, ACCESS_MECH_SECURITY, ACCESS_MECH_MEDICAL, + ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE, ACCESS_TELEPORTER) + minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, + ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, + ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, + ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER, + ACCESS_MECH_MINING, ACCESS_MECH_ENGINE, ACCESS_MECH_SCIENCE, ACCESS_MECH_SECURITY, ACCESS_MECH_MEDICAL, + ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, + ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE, ACCESS_TELEPORTER) + paycheck = PAYCHECK_COMMAND + paycheck_department = ACCOUNT_SRV + bounty_types = CIV_JOB_RANDOM + + liver_traits = list(TRAIT_ROYAL_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_CLERK + +// minimal_generation = 12 //Uncomment when players get exp enough + minimal_masquerade = 5 + + my_contact_is_important = TRUE + known_contacts = list("Prince","Sheriff","Tremere Regent","Dealer","Primogens") + + v_duty = "You are the right hand man or woman of the most powerful vampire in the city. The Camarilla trusts you to run the city, even in their stead." + duty = "You are the right hand man or woman of the most powerful vampire in the city. The Camarilla trusts you to run the city, even in their stead." + experience_addition = 15 + allowed_bloodlines = list("Daughters of Cacophony", "True Brujah", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Lasombra", "Gargoyle", "Kiasyd") + + +AddTimelock(/datum/job/vamp/camarilla/clerk, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/clerk + name = "Seneschal" + jobtype = /datum/job/vamp/camarilla/clerk + + ears = /obj/item/p25radio + id = /obj/item/card/id/clerk + uniform = /obj/item/clothing/under/vampire/clerk + shoes = /obj/item/clothing/shoes/vampire/brown +// head = /obj/item/clothing/head/hopcap + l_pocket = /obj/item/vamp/phone/clerk + r_pocket = /obj/item/vamp/keys/clerk + backpack_contents = list(/obj/item/passport=1, /obj/item/phone_book=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/seneschal=1) + +/datum/outfit/job/clerk/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/vampire/clerk/female + shoes = /obj/item/clothing/shoes/vampire/heels + +/obj/effect/landmark/start/clerk + name = "Seneschal" + icon_state = "Clerk" diff --git a/code/modules/vtmb/jobs/camarilla/camarilla_authorities/sheriff.dm b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/sheriff.dm new file mode 100644 index 0000000000..aacfb3d357 --- /dev/null +++ b/code/modules/vtmb/jobs/camarilla/camarilla_authorities/sheriff.dm @@ -0,0 +1,84 @@ +/datum/job/vamp/camarilla/sheriff + title = JOB_SHERIFF + auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY + department_head = list("Prince") + head_announce = list(RADIO_CHANNEL_SECURITY) + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = "the prince" + selection_color = "#bd3327" + req_admin_notify = 1 + minimal_player_age = 14 + exp_requirements = 300 + exp_type = EXP_TYPE_CREW + exp_type_department = EXP_TYPE_CAMARILLIA + + outfit = /datum/outfit/job/sheriff + + mind_traits = list(TRAIT_DONUT_LOVER) + liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM, TRAIT_ROYAL_METABOLISM) + + access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY, + ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_AUX_BASE, + ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, ACCESS_EVA, ACCESS_TELEPORTER, + ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY, + ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_AUX_BASE, + ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, ACCESS_EVA, + ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_COMMAND + paycheck_department = ACCOUNT_SEC + + display_order = JOB_DISPLAY_ORDER_SHERIFF + bounty_types = CIV_JOB_SEC + + minimal_generation = 12 //Uncomment when players get exp enough + minimal_masquerade = 5 + allowed_species = list("Vampire") + allowed_bloodlines = list("True Brujah", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Lasombra") + + my_contact_is_important = TRUE + known_contacts = list("Prince","Seneschal","Dealer") + + v_duty = "Protect the Prince and the Masquerade. You are their sword." + experience_addition = 20 + +AddTimelock(/datum/job/vamp/camarilla/sheriff, list( + JOB_CAMARILLA_AUTHORITIES_ROLES = 5 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + + +/datum/outfit/job/sheriff + name = "Sheriff" + jobtype = /datum/job/vamp/camarilla/sheriff + + ears = /obj/item/p25radio + id = /obj/item/card/id/sheriff + uniform = /obj/item/clothing/under/vampire/sheriff + belt = /obj/item/storage/belt/vampire/sheathe/rapier + shoes = /obj/item/clothing/shoes/vampire/jackboots + suit = /obj/item/clothing/suit/vampire/vest + gloves = /obj/item/clothing/gloves/vampire/leather +// head = /obj/item/clothing/head/hos/beret + glasses = /obj/item/clothing/glasses/vampire/sun + r_pocket = /obj/item/vamp/keys/sheriff + l_pocket = /obj/item/vamp/phone/sheriff + backpack_contents = list(/obj/item/gun/ballistic/automatic/vampire/deagle=1, /obj/item/vampire_stake=3, /obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/masquerade_contract=1, /obj/item/vamp/creditcard/elder=1) + + backpack = /obj/item/storage/backpack + satchel = /obj/item/storage/backpack/satchel + duffelbag = /obj/item/storage/backpack/duffelbag + + implants = list(/obj/item/implant/mindshield) + +/datum/outfit/job/sheriff/pre_equip(mob/living/carbon/human/H) + ..() + H.ignores_warrant = TRUE + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/vampire/sheriff/female + +/obj/effect/landmark/start/sheriff + name = "Sheriff" + icon_state = "Sheriff" diff --git a/code/modules/vtmb/jobs/camarilla/camarilla_primogen_council/primogen.dm b/code/modules/vtmb/jobs/camarilla/camarilla_primogen_council/primogen.dm new file mode 100644 index 0000000000..eb0bbf6467 --- /dev/null +++ b/code/modules/vtmb/jobs/camarilla/camarilla_primogen_council/primogen.dm @@ -0,0 +1,261 @@ +/datum/job/vamp/camarilla/primogen_malkavian + title = JOB_MALKAVIAN + department_head = list("Justicar") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = " the Traditions" + selection_color = "#4f0404" + + outfit = /datum/outfit/job/malkav + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_MALKAVIAN + exp_type_department = EXP_TYPE_COUNCIL + + allowed_species = list("Vampire") + allowed_bloodlines = list("Malkavian") + minimal_generation = 7 //Uncomment when players get exp enough + + v_duty = "Offer your infinite knowledge to Prince of the City." + experience_addition = 20 + minimal_masquerade = 5 + my_contact_is_important = TRUE + known_contacts = list("Prince") + +AddTimelock(/datum/job/vamp/camarilla/primogen_malkavian, list( + JOB_CAMARILLA_AUTHORITIES_ROLES = 5 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + + +/datum/outfit/job/malkav + name = "Primogen Malkavian" + jobtype = /datum/job/vamp/camarilla/primogen_malkavian + + ears = /obj/item/p25radio + id = /obj/item/card/id/primogen + glasses = /obj/item/clothing/glasses/vampire/sun + uniform = /obj/item/clothing/under/vampire/primogen_malkavian + suit = /obj/item/clothing/suit/vampire/trench/malkav + shoes = /obj/item/clothing/shoes/vampire/jackboots + head = /obj/item/clothing/head/vampire/malkav + l_pocket = /obj/item/vamp/phone/malkavian + r_pocket = /obj/item/cockclock + backpack_contents = list(/obj/item/vamp/keys/malkav/primogen=1, /obj/item/vamp/keys/clinic, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/elder=1, /obj/item/card/id/whip, /obj/item/card/id/steward, /obj/item/card/id/myrmidon) + +/datum/outfit/job/malkav/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + suit = null + head = null + uniform = /obj/item/clothing/under/vampire/primogen_malkavian/female + shoes = /obj/item/clothing/shoes/vampire/heels + +/datum/job/vamp/camarilla/primogen_nosferatu + title = JOB_NOSFERATU + department_head = list("Justicar") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = " the Traditions" + selection_color = "#4f0404" + + outfit = /datum/outfit/job/nosferatu + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_NOSFERATU + exp_type_department = EXP_TYPE_COUNCIL + + allowed_species = list("Vampire") + allowed_bloodlines = list("Nosferatu") + minimal_generation = 7 //Uncomment when players get exp enough + + v_duty = "Offer your infinite knowledge to Prince of the City." + experience_addition = 20 + minimal_masquerade = 5 + my_contact_is_important = TRUE + known_contacts = list("Prince") + +AddTimelock(/datum/job/vamp/camarilla/primogen_nosferatu, list( + JOB_CAMARILLA_AUTHORITIES_ROLES = 5 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/nosferatu + name = "Primogen Nosferatu" + jobtype = /datum/job/vamp/camarilla/primogen_nosferatu + + id = /obj/item/card/id/primogen + mask = /obj/item/clothing/mask/vampire/shemagh + glasses = /obj/item/clothing/glasses/vampire/sun + uniform = /obj/item/clothing/under/vampire/suit + suit = /obj/item/clothing/suit/vampire/trench + shoes = /obj/item/clothing/shoes/vampire + l_pocket = /obj/item/vamp/phone/nosferatu + r_pocket = /obj/item/cockclock + backpack_contents = list(/obj/item/vamp/keys/nosferatu/primogen=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/elder=1, /obj/item/card/id/whip, /obj/item/card/id/steward, /obj/item/card/id/myrmidon) + +/datum/outfit/job/nosferatu/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + shoes = /obj/item/clothing/shoes/vampire/heels + +/datum/job/vamp/camarilla/primogen_ventrue + title = JOB_VENTRUE + department_head = list("Justicar") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = " the Traditions" + selection_color = "#4f0404" + + outfit = /datum/outfit/job/ventrue + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_VENTRUE + exp_type_department = EXP_TYPE_COUNCIL + + allowed_species = list("Vampire") + allowed_bloodlines = list("Ventrue") + minimal_generation = 7 //Uncomment when players get exp enough + + v_duty = "Offer your infinite knowledge to Prince of the City." + experience_addition = 20 + minimal_masquerade = 5 + my_contact_is_important = TRUE + known_contacts = list("Prince") + +/datum/outfit/job/ventrue + name = "Primogen Ventrue" + jobtype = /datum/job/vamp/camarilla/primogen_ventrue + + id = /obj/item/card/id/primogen + glasses = /obj/item/clothing/glasses/vampire/sun + uniform = /obj/item/clothing/under/vampire/suit + suit = /obj/item/clothing/suit/vampire/trench + shoes = /obj/item/clothing/shoes/vampire + l_pocket = /obj/item/vamp/phone/ventrue + r_pocket = /obj/item/cockclock + backpack_contents = list(/obj/item/vamp/keys/ventrue/primogen=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/elder=1, /obj/item/card/id/whip, /obj/item/card/id/steward, /obj/item/card/id/myrmidon) + +/datum/outfit/job/ventrue/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + shoes = /obj/item/clothing/shoes/vampire/heels + + +AddTimelock(/datum/job/vamp/camarilla/primogen_ventrue, list( + JOB_CAMARILLA_AUTHORITIES_ROLES = 5 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/job/vamp/camarilla/primogen_toreador + title = JOB_TOREADOR + department_head = list("Justicar") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = " the Traditions" + selection_color = "#4f0404" + + outfit = /datum/outfit/job/toreador + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_TOREADOR + exp_type_department = EXP_TYPE_COUNCIL + + allowed_species = list("Vampire") + allowed_bloodlines = list("Toreador") + minimal_generation = 7 //Uncomment when players get exp enough + + v_duty = "Offer your infinite knowledge to Prince of the City." + experience_addition = 20 + minimal_masquerade = 5 + my_contact_is_important = TRUE + known_contacts = list("Prince") + +AddTimelock(/datum/job/vamp/camarilla/primogen_toreador, list( + JOB_CAMARILLA_AUTHORITIES_ROLES = 5 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/toreador + name = "Primogen Toreador" + jobtype = /datum/job/vamp/camarilla/primogen_toreador + + id = /obj/item/card/id/primogen + glasses = /obj/item/clothing/glasses/vampire/sun + uniform = /obj/item/clothing/under/vampire/primogen_toreador + suit = /obj/item/clothing/suit/vampire/trench/alt + shoes = /obj/item/clothing/shoes/vampire + l_pocket = /obj/item/vamp/phone/toreador + r_pocket = /obj/item/cockclock + backpack_contents = list(/obj/item/vamp/keys/toreador/primogen=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/elder=1, /obj/item/card/id/whip, /obj/item/card/id/steward, /obj/item/card/id/myrmidon) + +/datum/outfit/job/toreador/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/vampire/primogen_toreador/female + shoes = /obj/item/clothing/shoes/vampire/heels/red + + +/datum/job/vamp/camarilla/primogen_brujah + title = JOB_BRUJAH + department_head = list("Justicar") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = " the Traditions" + selection_color = "#4f0404" + + outfit = /datum/outfit/job/brujah + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_BRUJAH + exp_type_department = EXP_TYPE_COUNCIL + + allowed_species = list("Vampire") + allowed_bloodlines = list("Brujah") + minimal_generation = 7 //Uncomment when players get exp enough + + v_duty = "Offer your infinite knowledge to Prince of the City." + experience_addition = 20 + minimal_masquerade = 5 + my_contact_is_important = TRUE + known_contacts = list("Prince") + + +AddTimelock(/datum/job/vamp/camarilla/primogen_brujah, list( + JOB_CAMARILLA_AUTHORITIES_ROLES = 5 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/brujah + name = "Primogen Brujah" + jobtype = /datum/job/vamp/camarilla/primogen_brujah + + id = /obj/item/card/id/primogen + glasses = /obj/item/clothing/glasses/vampire/yellow + uniform = /obj/item/clothing/under/vampire/punk + suit = /obj/item/clothing/suit/vampire/jacket/punk + shoes = /obj/item/clothing/shoes/vampire/jackboots + l_pocket = /obj/item/vamp/phone/brujah + r_pocket = /obj/item/cockclock + backpack_contents = list(/obj/item/vamp/keys/brujah/primogen=1, /obj/item/melee/vampirearms/eguitar=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/elder=1, /obj/item/card/id/whip, /obj/item/card/id/steward, /obj/item/card/id/myrmidon) + diff --git a/code/modules/vtmb/jobs/church/church.dm b/code/modules/vtmb/jobs/church/church.dm new file mode 100644 index 0000000000..ab5cf754b5 --- /dev/null +++ b/code/modules/vtmb/jobs/church/church.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/church + supervisors = "God" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/church + name = "Church Roles" + +/datum/timelock/church/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_CHURCH_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/church/priest.dm b/code/modules/vtmb/jobs/church/priest.dm new file mode 100644 index 0000000000..f1c1430a73 --- /dev/null +++ b/code/modules/vtmb/jobs/church/priest.dm @@ -0,0 +1,74 @@ + +/datum/job/vamp/church/priest + title = JOB_PRIEST + department_head = list("Bishop") + faction = "Vampire" + total_positions = 2 + spawn_positions = 2 + supervisors = "God" + selection_color = "#fff700" + + outfit = /datum/outfit/job/priest + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_PRIEST + exp_type_department = EXP_TYPE_CHURCH + + allowed_species = list("Human") + minimal_generation = 13 + + duty = "Be the shepherd of the flock in San Francisco, lead them to salvation, piety and righteousness." + v_duty = "The mortals believe you to be their savior. The kindred look at you with suspicion. Yours is the charge of this church." + minimal_masquerade = 0 + my_contact_is_important = FALSE + +AddTimelock(/datum/job/vamp/church/priest, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + + +/datum/outfit/job/priest + name = "Priest" + jobtype = /datum/job/vamp/church/priest + + uniform = /obj/item/clothing/under/vampire/graveyard + shoes = /obj/item/clothing/shoes/vampire/jackboots + id = /obj/item/card/id/hunter + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/flashlight + l_hand = /obj/item/vamp/keys/church + back = /obj/item/storage/backpack/satchel + backpack_contents = list(/obj/item/passport=1, /obj/item/vamp/creditcard=1) + +/datum/outfit/job/priest/pre_equip(mob/living/carbon/human/H) + ..() + add_verb(H, /datum/job/vampire/priest/verb/choose_special) + +/datum/job/vampire/priest/verb/choose_special() + set category = "Priest" + set name = "Choose Special" + set desc = "Select Priest special ability." + var/list/loadouts = list("Numina", "True Faith") + spawn() + var/mob/living/carbon/human/H = src + if(is_species(H, /datum/species/human)) + if(H.client) + var/loadout_type = input(H, "Choose what makes you special:", "Loadout") as anything in loadouts + remove_verb(H, /datum/job/vampire/priest/verb/choose_special) + switch(loadout_type) + if("Numina") + to_chat(H, "You have been blessed with psychic powers. They make you extraordinary among mortals, yet you still fear the horrors lurking unknown.") + var/obj/effect/proc_holder/spell/targeted/numina_freeze/n_freeze = new(H) + var/obj/effect/proc_holder/spell/self/numina_heal/n_heal = new(H) + H.mind.AddSpell(n_freeze) + H.mind.AddSpell(n_heal) + if("True Faith") + H.mind.holy_role = HOLY_ROLE_PRIEST + H.resistant_to_disciplines = TRUE + to_chat(H, "Your faith in God is made of iron. None could shake it, and even in the darkest moments it holds you up.") + +/obj/effect/landmark/start/priest + name = "Priest" diff --git a/code/modules/vtmb/jobs/city_services/city_services.dm b/code/modules/vtmb/jobs/city_services/city_services.dm new file mode 100644 index 0000000000..466c6808e6 --- /dev/null +++ b/code/modules/vtmb/jobs/city_services/city_services.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/city_services + supervisors = "Your Boss" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/city_services + name = "City Services Roles" + +/datum/timelock/city_services/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_CITY_SERVICES_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/city_services/graveyard_keeper.dm b/code/modules/vtmb/jobs/city_services/graveyard_keeper.dm new file mode 100644 index 0000000000..fa7f08a16d --- /dev/null +++ b/code/modules/vtmb/jobs/city_services/graveyard_keeper.dm @@ -0,0 +1,55 @@ + +/datum/job/vamp/city_services/graveyard + title = JOB_GRAVEYARD + department_head = list("Seneschal") + faction = "Vampire" + total_positions = 6 + spawn_positions = 6 + supervisors = "the Camarilla or the Anarchs" + selection_color = "#e3e3e3" + exp_type_department = EXP_TYPE_SERVICES + + + outfit = /datum/outfit/job/graveyard + + access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) + minimal_access = list(ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_CAR + + display_order = JOB_DISPLAY_ORDER_GRAVEYARD + bounty_types = CIV_JOB_MINE + + v_duty = "A vile curse has gripped the dead of this city. You must keep the graveyard clean and the Masquerade intact." + minimal_masquerade = 0 + experience_addition = 15 + allowed_species = list("Vampire", "Ghoul", "Kuei-Jin") + allowed_bloodlines = list("True Brujah", "Daughters of Cacophony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff", "Cappadocian") + +AddTimelock(/datum/job/vamp/city_services/graveyard, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/graveyard + name = "Graveyard Keeper" + jobtype = /datum/job/vamp/city_services/graveyard + + id = /obj/item/card/id/graveyard + shoes = /obj/item/clothing/shoes/vampire/jackboots +// gloves = /obj/item/clothing/gloves/color/black + uniform = /obj/item/clothing/under/vampire/graveyard + suit = /obj/item/clothing/suit/vampire/trench + glasses = /obj/item/clothing/glasses/vampire/yellow + gloves = /obj/item/clothing/gloves/vampire/work + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/vamp/keys/graveyard + r_hand = /obj/item/melee/vampirearms/shovel + backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1, /obj/item/melee/vampirearms/katana/kosa=1) + + backpack = /obj/item/storage/backpack + satchel = /obj/item/storage/backpack/satchel + duffelbag = /obj/item/storage/backpack/duffelbag + +/obj/effect/landmark/start/graveyardkeeper + name = "Graveyard Keeper" + icon_state = "Graveyard Keeper" diff --git a/code/modules/vtmb/jobs/city_services/janitor.dm b/code/modules/vtmb/jobs/city_services/janitor.dm new file mode 100644 index 0000000000..2859894019 --- /dev/null +++ b/code/modules/vtmb/jobs/city_services/janitor.dm @@ -0,0 +1,42 @@ + +/datum/job/vamp/city_services/vjanitor + title = JOB_STREETJAN + department_head = list("Prince") + faction = "Vampire" + total_positions = 6 + spawn_positions = 6 + supervisors = "the Camarilla." + selection_color = "#e3e3e3" + + outfit = /datum/outfit/job/vjanitor + + access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + + allowed_species = list("Vampire", "Ghoul", "Human") + + display_order = JOB_DISPLAY_ORDER_STREETJAN + allowed_bloodlines = list("True Brujah", "Daughters of Cacophony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff") + + v_duty = "Clean up all traces of Masquerade violations as the Camarilla has instructed you to." + duty = "Keep the streets clean. You are paid to keep your mouth shut about the things you see." + minimal_masquerade = 0 + experience_addition = 15 + +/datum/outfit/job/vjanitor + name = "Street Janitor" + jobtype = /datum/job/vamp/city_services/vjanitor + + id = /obj/item/card/id/cleaning + uniform = /obj/item/clothing/under/vampire/janitor + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/vamp/keys/cleaning + shoes = /obj/item/clothing/shoes/vampire/jackboots/work + gloves = /obj/item/clothing/gloves/vampire/cleaning + backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/keys/hack=1, /obj/item/vamp/creditcard=1) + +/obj/effect/landmark/start/vjanitor + name = "Street Janitor" + icon_state = "Street Janitor" diff --git a/code/modules/vtmb/jobs/city_services/stripper.dm b/code/modules/vtmb/jobs/city_services/stripper.dm new file mode 100644 index 0000000000..41add37aaf --- /dev/null +++ b/code/modules/vtmb/jobs/city_services/stripper.dm @@ -0,0 +1,45 @@ + +/datum/job/vamp/city_services/strip + title = JOB_STRIP + faction = "Vampire" + total_positions = 4 + spawn_positions = 4 + supervisors = "the Camarilla or the Anarchs" + selection_color = "#e3e3e3" + access = list() + minimal_access = list() + outfit = /datum/outfit/job/strip + antag_rep = 7 + paycheck = PAYCHECK_ASSISTANT // Get a job. Job reassignment changes your paycheck now. Get over it. + exp_type_department = EXP_TYPE_SERVICES + + paycheck_department = ACCOUNT_CIV + display_order = JOB_DISPLAY_ORDER_STRIP + allowed_species = list("Vampire", "Ghoul", "Human", "Werewolf", "Kuei-Jin") + + v_duty = "Offer strip club services to humans or undead." + duty = "Offer strip club services." + minimal_masquerade = 3 + allowed_bloodlines = list("True Brujah", "Daughters of Cacophony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff", "Kiasyd") + experience_addition = 10 + +/datum/outfit/job/strip + name = "Stripper" + jobtype = /datum/job/vamp/city_services/strip + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/vamp/keys/strip + id = /obj/item/cockclock + backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) + +/datum/outfit/job/strip/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == MALE) + shoes = /obj/item/clothing/shoes/vampire/white + uniform = /obj/item/clothing/under/vampire/slickback + else + shoes = /obj/item/clothing/shoes/vampire/heels + uniform = /obj/item/clothing/under/vampire/burlesque + +/obj/effect/landmark/start/strip + name = "Strip" + icon_state = "Assistant" diff --git a/code/modules/vtmb/jobs/city_services/taxi.dm b/code/modules/vtmb/jobs/city_services/taxi.dm new file mode 100644 index 0000000000..af84bf09f9 --- /dev/null +++ b/code/modules/vtmb/jobs/city_services/taxi.dm @@ -0,0 +1,63 @@ +/datum/job/vamp/city_services/taxi + title = JOB_TAXI + department_head = list("Justicar") + faction = "Vampire" + total_positions = 3 + spawn_positions = 3 + supervisors = " the Traditions" + selection_color = "#e3e3e3" + + outfit = /datum/outfit/job/taxi + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_TAXI + exp_type_department = EXP_TYPE_SERVICES + + allowed_species = list("Vampire", "Ghoul", "Human", "Werewolf", "Kuei-Jin") + + v_duty = "Drive people in the city." + duty = "Drive people in the city." + minimal_masquerade = 0 + experience_addition = 10 + allowed_bloodlines = list("Daughters of Cacaphony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff", "Kiasyd", "Cappadocian") + +/datum/job/vamp/taxi/after_spawn(mob/living/H, mob/M, latejoin = FALSE) + ..() + H.taxist = TRUE + +/datum/outfit/job/taxi + name = "Taxi Driver" + jobtype = /datum/job/vamp/city_services/taxi + + id = /obj/item/cockclock + glasses = /obj/item/clothing/glasses/vampire/sun + uniform = /obj/item/clothing/under/vampire/suit + shoes = /obj/item/clothing/shoes/vampire + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/vamp/keys/taxi + backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1, /obj/item/melee/vampirearms/tire=1) + +/datum/outfit/job/taxi/pre_equip(mob/living/carbon/human/H) + ..() + if(H.clane) + if(H.gender == MALE) + shoes = /obj/item/clothing/shoes/vampire + if(H.clane.male_clothes) + uniform = H.clane.male_clothes + else + shoes = /obj/item/clothing/shoes/vampire/heels + if(H.clane.female_clothes) + uniform = H.clane.female_clothes + else + if(H.gender == MALE) + shoes = /obj/item/clothing/shoes/vampire + uniform = /obj/item/clothing/under/vampire/sport + else + shoes = /obj/item/clothing/shoes/vampire/heels + uniform = /obj/item/clothing/under/vampire/red + +/obj/effect/landmark/start/taxi + name = "Taxi Driver" diff --git a/code/modules/vtmb/jobs/clinic/clinic.dm b/code/modules/vtmb/jobs/clinic/clinic.dm new file mode 100644 index 0000000000..f26aca18b7 --- /dev/null +++ b/code/modules/vtmb/jobs/clinic/clinic.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/clinic + supervisors = "Your Boss" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/clinic + name = "Clinic Roles" + +/datum/timelock/clinic/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_CLINIC_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/clinic/doctor.dm b/code/modules/vtmb/jobs/clinic/doctor.dm new file mode 100644 index 0000000000..ed3c9adc81 --- /dev/null +++ b/code/modules/vtmb/jobs/clinic/doctor.dm @@ -0,0 +1,117 @@ + +/datum/job/vamp/clinic/vdoctor + title = JOB_DOCTOR + department_head = list("Clinic Director") + faction = "Vampire" + total_positions = 4 + spawn_positions = 4 + supervisors = "the Camarilla or the Anarchs" + selection_color = "#80D0F4" + exp_type_department = EXP_TYPE_CLINIC + + + outfit = /datum/outfit/job/vdoctor + + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_PHARMACY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_PHARMACY) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_MED + + liver_traits = list(TRAIT_MEDICAL_METABOLISM) + + allowed_species = list("Vampire", "Ghoul", "Human", "Werewolf", "Kuei-Jin") + display_order = JOB_DISPLAY_ORDER_DOCTOR + bounty_types = CIV_JOB_MED + + v_duty = "Help your fellow kindred in all matters medicine related. Sell blood. Keep your human colleagues ignorant." + duty = "Collect blood by helping mortals at the Clinic." + experience_addition = 15 + allowed_bloodlines = list("Daughters of Cacophony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff", "Kiasyd") + known_contacts = list("Clinic Director") + +AddTimelock(/datum/job/vamp/clinic/vdoctor, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/vdoctor + name = "Doctor" + jobtype = /datum/job/vamp/clinic/vdoctor + + ears = /obj/item/p25radio + id = /obj/item/card/id/clinic + uniform = /obj/item/clothing/under/vampire/nurse + shoes = /obj/item/clothing/shoes/vampire/white + suit = /obj/item/clothing/suit/vampire/labcoat + gloves = /obj/item/clothing/gloves/vampire/latex + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/vamp/keys/clinic + backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1, /obj/item/storage/firstaid/medical=1) + + backpack = /obj/item/storage/backpack + satchel = /obj/item/storage/backpack/satchel + duffelbag = /obj/item/storage/backpack/duffelbag + + skillchips = list(/obj/item/skillchip/entrails_reader, /obj/item/skillchip/quickcarry) + +/obj/effect/landmark/start/vdoctor + name = "Doctor" + icon_state = "Doctor" + + +/datum/job/vamp/clinic/vdirector + title = "Clinic Director" + department_head = list("Seneschal") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = "the Camarilla or the Anarchs" + selection_color = "#80D0F4" + exp_type_department = EXP_TYPE_CLINIC + + + outfit = /datum/outfit/job/vdirector + + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_PHARMACY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_PHARMACY) + paycheck = PAYCHECK_COMMAND + paycheck_department = ACCOUNT_MED + + liver_traits = list(TRAIT_MEDICAL_METABOLISM) + + allowed_species = list("Vampire", "Ghoul", "Human", "Werewolf") + display_order = JOB_DISPLAY_ORDER_CLINICS_DIRECTOR + bounty_types = CIV_JOB_MED + + v_duty = "Keep Saint John's clinic up and running. Sell blood. Keep your human colleagues ignorant." + duty = "Keep Saint John's clinic up and running. Collect blood by helping mortals at the Clinic." + experience_addition = 15 + allowed_bloodlines = list("Daughters of Cacophony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff", "Kiasyd") + +AddTimelock(/datum/job/vamp/clinic/vdirector, list( + JOB_LIVING_ROLES = 2 HOURS, + JOB_CLINIC_ROLES = 10 HOURS, +)) + +/datum/outfit/job/vdirector + name = JOB_CLINIC_DIRECTOR + jobtype = /datum/job/vamp/clinic/vdirector + + ears = /obj/item/p25radio + id = /obj/item/card/id/clinic/director + uniform = /obj/item/clothing/under/vampire/nurse + shoes = /obj/item/clothing/shoes/vampire/white + suit = /obj/item/clothing/suit/vampire/labcoat/director + gloves = /obj/item/clothing/gloves/vampire/latex + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/vamp/keys/clinics_director + backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1, /obj/item/storage/firstaid/medical=1) + + backpack = /obj/item/storage/backpack + satchel = /obj/item/storage/backpack/satchel + duffelbag = /obj/item/storage/backpack/duffelbag + + skillchips = list(/obj/item/skillchip/entrails_reader, /obj/item/skillchip/quickcarry) + +/obj/effect/landmark/start/vdirector + name = "Director" + icon_state = "Doctor" diff --git a/code/modules/vtmb/jobs/gangs/gangs.dm b/code/modules/vtmb/jobs/gangs/gangs.dm new file mode 100644 index 0000000000..571a659491 --- /dev/null +++ b/code/modules/vtmb/jobs/gangs/gangs.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/gangs + supervisors = "Your Gang" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/gangs + name = "Gangs Roles" + +/datum/timelock/gangs/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_GANG_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/gangs/triad.dm b/code/modules/vtmb/jobs/gangs/triad.dm new file mode 100644 index 0000000000..6937e4a2b3 --- /dev/null +++ b/code/modules/vtmb/jobs/gangs/triad.dm @@ -0,0 +1,53 @@ + +/datum/job/vamp/gangs/triad_soldier + title = JOB_TRIAD_GANGSTER + department_head = list("Triad Leadership") + faction = "Vampire" + total_positions = 8 + spawn_positions = 8 + supervisors = " the Triads" + selection_color = "#bb9d3d" + + outfit = /datum/outfit/job/triad_soldier + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_TRIAD_GANGSTER + exp_type_department = EXP_TYPE_GANG + + allowed_species = list("Human", "Werewolf", "Kuei-Jin") + minimal_generation = 13 + + duty = "Make money, do drugs, fight law. Your hideout is the laundromat in Chinatown." + experience_addition = 10 + minimal_masquerade = 0 + my_contact_is_important = FALSE + +AddTimelock(/datum/job/vamp/gangs/triad_soldier, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/triad_soldier/pre_equip(mob/living/carbon/human/H) + ..() + H.grant_language(/datum/language/cantonese) + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/vampire/suit/female + shoes = /obj/item/clothing/shoes/vampire/heels + +/datum/outfit/job/triad_soldier + name = "Triad Soldier" + jobtype = /datum/job/vamp/gangs/triad_soldier + uniform = /obj/item/clothing/under/vampire/suit + shoes = /obj/item/clothing/shoes/vampire/jackboots +// suit = /obj/item/clothing/suit/vampire/vest +// belt = /obj/item/melee/classic_baton + id = /obj/item/cockclock +// gloves = /obj/item/cockclock +// id = /obj/item/card/id/police + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/flashlight + l_hand = /obj/item/vamp/keys/triads +// r_hand = /obj/item/police_radio + backpack_contents = list(/obj/item/passport=1, /obj/item/vamp/creditcard=1, /obj/item/clothing/mask/vampire/balaclava =1, /obj/item/gun/ballistic/automatic/vampire/glock19, /obj/item/melee/vampirearms/knife) diff --git a/code/modules/vtmb/jobs/giovanni_family/giovanni.dm b/code/modules/vtmb/jobs/giovanni_family/giovanni.dm new file mode 100644 index 0000000000..b916b288e4 --- /dev/null +++ b/code/modules/vtmb/jobs/giovanni_family/giovanni.dm @@ -0,0 +1,153 @@ +/datum/job/vamp/giovanni_family/giovannielder + title = JOB_GIOVANNI_CAPO + department_head = list("Uncle Augie") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = "the Family and the Traditions" + selection_color = "#cb4aad" + + outfit = /datum/outfit/job/giovannielder + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_GIOVANNI + exp_type_department = EXP_TYPE_GIOVANNI + + minimal_generation = 11 //Uncomment when players get exp enough + + v_duty = "Pure blood runs through your veins and, with it, old power. Throughout your long life you have learnt to hold onto two things and never let go: money, and family." + minimal_masquerade = 0 + experience_addition = 10 + allowed_species = list("Vampire") + allowed_bloodlines = list("Giovanni", "Cappadocian") + +AddTimelock(/datum/job/vamp/giovanni_family/giovannielder, list( + JOB_GIOVANNI_ROLES = 10 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/giovannielder + name = "Capo" + jobtype = /datum/job/vamp/giovanni_family/giovannielder + + id = /obj/item/cockclock + glasses = /obj/item/clothing/glasses/vampire/sun + uniform = /obj/item/clothing/under/vampire/suit + suit = /obj/item/clothing/suit/vampire/trench + shoes = /obj/item/clothing/shoes/vampire + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/vamp/keys/capo + backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/giovanniboss=1) + +/datum/outfit/job/giovannielder/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/vampire/suit/female + shoes = /obj/item/clothing/shoes/vampire/heels + +/obj/effect/landmark/start/giovannielder + name = "Capo" + +/datum/job/vamp/giovanni_family/giovanni + title = JOB_GIOVANNI_SQUADRA + department_head = list("Capo") + faction = "Vampire" + total_positions = 10 + spawn_positions = 10 + supervisors = "the Family and the Traditions" + selection_color = "#cb4aad" + + outfit = /datum/outfit/job/giovanni + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_GIOVANNI + exp_type_department = EXP_TYPE_GIOVANNI + + v_duty = "Whether born or Embraced into the family, you are one of the Giovanni. Be you a necromancer, financier or lowly fledgling, remember that so long as you stand with your family, they too will stand with you." + minimal_masquerade = 0 + experience_addition = 10 + allowed_species = list("Vampire") + allowed_bloodlines = list("Giovanni", "Cappadocian") + +AddTimelock(/datum/job/vamp/giovanni_family/giovanni, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/giovanni + name = "La Squadra" + jobtype = /datum/job/vamp/giovanni_family/giovanni + + id = /obj/item/cockclock + glasses = /obj/item/clothing/glasses/vampire/sun + uniform = /obj/item/clothing/under/vampire/suit + suit = /obj/item/clothing/suit/vampire/trench + shoes = /obj/item/clothing/shoes/vampire + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/vamp/keys/giovanni + backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/rich=1) + +/datum/outfit/job/giovanni/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/vampire/suit/female + shoes = /obj/item/clothing/shoes/vampire/heels + +/obj/effect/landmark/start/giovanni + name = "La Squadra" + +/datum/job/vamp/giovanni_family/giovannimafia + title = JOB_GIOVANNI_FAMIGLIA + department_head = list("Capo") + faction = "Vampire" + total_positions = 10 + spawn_positions = 10 + supervisors = "the Family" + selection_color = "#cb4aad" + + outfit = /datum/outfit/job/giovannimafia + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_GIOVANNI + exp_type_department = EXP_TYPE_GIOVANNI + +// minimal_generation = 11 //Uncomment when players get exp enough + + allowed_species = list("Ghoul", "Human") + duty = "Your family is a strange one. Maybe you are strange too, because sitting next to your great uncles as an equal is something you are greatly interested in." + minimal_masquerade = 0 + experience_addition = 10 + + +AddTimelock(/datum/job/vamp/giovanni_family/giovannimafia, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/giovannimafia + name = "La Famiglia" + jobtype = /datum/job/vamp/giovanni_family/giovannimafia + id = /obj/item/cockclock + glasses = /obj/item/clothing/glasses/vampire/sun + uniform = /obj/item/clothing/under/vampire/suit + suit = /obj/item/clothing/suit/vampire/trench + shoes = /obj/item/clothing/shoes/vampire + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/vamp/keys/giovanni + backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) + +/datum/outfit/job/giovannimafia/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/vampire/suit/female + shoes = /obj/item/clothing/shoes/vampire/heels + +/obj/effect/landmark/start/giovannimafia + name = "La Famiglia" diff --git a/code/modules/vtmb/jobs/giovanni_family/giovanni_family.dm b/code/modules/vtmb/jobs/giovanni_family/giovanni_family.dm new file mode 100644 index 0000000000..9c214f4ac9 --- /dev/null +++ b/code/modules/vtmb/jobs/giovanni_family/giovanni_family.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/giovanni_family + supervisors = "the Family and the Traditions" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/giovanni_family + name = "Giovanni Family Roles" + +/datum/timelock/giovanni_family/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_GIOVANNI_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/jobs.dm b/code/modules/vtmb/jobs/jobs.dm new file mode 100644 index 0000000000..ec74264f33 --- /dev/null +++ b/code/modules/vtmb/jobs/jobs.dm @@ -0,0 +1,427 @@ +/datum/job + var/experience_addition = 5 + +/datum/outfit/job/post_equip(mob/living/carbon/human/H) + . = ..() + if(H.clane) + if(H.clane.name == "Ventrue") + var/obj/item/stack/dollar/hundred/HUN = new(H.loc) + for(var/obj/item/storage/backpack/B in H) + if(B) + HUN.forceMove(B) + + var/obj/item/storage/backpack/b = locate() in H + if(b) + var/obj/item/vamp/creditcard/card = locate() in b.contents + if(card && card.has_checked == FALSE) + for(var/obj/item/vamp/creditcard/caard in b.contents) + if(caard) + H.bank_id = caard.account.bank_id + caard.account.account_owner = H.true_real_name + caard.has_checked = TRUE + +//ID + +/obj/item/card/id/prince/AltClick(mob/user) + return + +/obj/item/card/id/sheriff/AltClick(mob/user) + return + +/obj/item/card/id/camarilla/AltClick(mob/user) + return + +/obj/item/card/id/clerk/AltClick(mob/user) + return + +/obj/item/card/id/anarch/AltClick(mob/user) + return + +/obj/item/card/id/clinic/AltClick(mob/user) + return + +/obj/item/card/id/archive/AltClick(mob/user) + return + +/obj/item/card/id/cleaning/AltClick(mob/user) + return + +/obj/item/card/id/dealer/AltClick(mob/user) + return + +/obj/item/card/id/supplytech/AltClick(mob/user) + return + +/obj/item/card/id/hunter/AltClick(mob/user) + return + +/obj/item/card/id/primogen/AltClick(mob/user) + return + +/obj/item/card/id/police/AltClick(mob/user) + return + +/obj/item/card/id/hunter + var/last_detonated = 0 + +/obj/item/card/id/hunter/attack_self(mob/user) + . = ..() + if(last_detonated+300 > world.time) + return + if(!user.mind) + return + if(user.mind.holy_role != HOLY_ROLE_PRIEST) + return + last_detonated = world.time + do_sparks(rand(5, 9), FALSE, user) + playsound(user.loc, 'code/modules/wod13/sounds/cross.ogg', 100, FALSE, 8, 0.9) + for(var/mob/living/M in get_hearers_in_view(4, user.loc)) + bang(get_turf(M), M, user) + +/obj/item/card/id/hunter/proc/bang(turf/T, mob/living/M, var/mob/living/user) + if(M.stat == DEAD) //They're dead! + return + var/mob/living/carbon/human/H + if(ishuman(M)) + H = M + if(H) + for(var/obj/item/card/id/hunter/HUNT in H.contents) + if(HUNT) + if(H.mind) + if(H.mind.holy_role == HOLY_ROLE_PRIEST) + return + if(iskindred(H)) + if(H.clane) + if(H.clane.name == "Baali") + H.emote("scream") + H.pointed(user) + M.show_message("GOD SEES YOU!", MSG_AUDIBLE) + var/distance = max(0,get_dist(get_turf(src),T)) + + if(M.flash_act(affect_silicon = 1)) + M.Immobilize(max(10/max(1,distance), 5)) + +/obj/item/card/id/hunter/attack(mob/living/target, mob/living/user) + . = ..() + if(HAS_TRAIT(user, TRAIT_PACIFISM)) + return + if(last_detonated+300 > world.time) + return + if(iskindred(target)) + var/mob/living/carbon/human/H = target + if(H.clane) + if(H.clane.name == "Baali") + last_detonated = world.time + var/turf/lightning_source = get_step(get_step(H, NORTH), NORTH) + lightning_source.Beam(H, icon_state="lightning[rand(1,12)]", time = 5) + H.adjustFireLoss(100) + H.electrocution_animation(50) + to_chat(H, "The God has punished you for your sins!", confidential = TRUE) + +/obj/item/card/id/prince + name = "leader badge" + id_type_name = "leader badge" + desc = "King in the castle!" + icon = 'code/modules/wod13/items.dmi' + icon_state = "id6" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id6" + +/obj/item/card/id/sheriff + name = "head security badge" + id_type_name = "head security badge" + desc = "A badge which shows honour and dedication." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id4" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id4" + +/obj/item/card/id/camarilla + name = "security badge" + id_type_name = "security badge" + desc = "A badge which shows honour and dedication." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id3" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id3" + +/obj/item/card/id/clerk + name = "clerk badge" + id_type_name = "clerk badge" + desc = "A badge which shows buerocracy qualification." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id1" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id1" + +/obj/item/card/id/anarch + name = "biker badge" + id_type_name = "biker badge" + desc = "A badge which shows protest and anarchy." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id5" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id5" + +/obj/item/card/id/clinic + name = "medical badge" + id_type_name = "medical badge" + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY) + desc = "A badge which shows medical qualification." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id2" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id2" + +/obj/item/card/id/clinic/director + name = "clinic director's badge" + desc = "A badge which shows not only medical qualification, but also an authority over the clinic." + +/obj/item/card/id/archive + name = "scholar badge" + id_type_name = "scholar badge" + desc = "A badge which shows a love of culture." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id7" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id7" + +/obj/item/card/id/regent + name = "erudite scholar badge" + id_type_name = "erudite scholar badge" + desc = "A badge which shows a deep understanding of culture." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id7_regent" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id7_regent" + +/obj/item/card/id/cleaning + name = "janitor badge" + id_type_name = "janitor badge" + desc = "A badge which shows cleaning employment." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id8" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id8" + +/obj/item/card/id/graveyard + name = "keeper badge" + id_type_name = "keeper badge" + desc = "A badge which shows graveyard employment." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id8" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id8" + +/obj/item/card/id/dealer + name = "business badge" + id_type_name = "business badge" + desc = "A badge which shows business." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id9" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id9" + +/obj/item/card/id/supplytech + name = "technician badge" + id_type_name = "technician badge" + desc = "A badge which shows supply employment." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id10" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id10" + +/obj/item/card/id/hunter + name = "cross" + id_type_name = "cross" + desc = "When you come into the land that the Lord your God is giving you, you must not learn to imitate the abhorrent practices of those nations. No one shall be found among you who makes a son or daughter pass through fire, or who practices divination, or is a soothsayer, or an augur, or a sorcerer, or one who casts spells, or who consults ghosts or spirits, or who seeks oracles from the dead. For whoever does these things is abhorrent to the Lord; it is because of such abhorrent practices that the Lord your God is driving them out before you (Deuteronomy 18:9-12)." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id11" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id11" + +/obj/item/card/id/primogen + name = "mysterious primogen badge" + id_type_name = "mysterious primogen badge" + desc = "Sponsored by the Shadow Government." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id12" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id12" + +/obj/item/card/id/police + name = "police officer badge" + id_type_name = "police officer badge" + desc = "Sponsored by the Government." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id13" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id13" + +/obj/item/card/id/police/sergeant + name = "police sergeant badge" + desc = "Sponsored by the Government. This one seems slightly more worn down than all the others." + +/obj/item/card/id/police/chief + name = "police chief badge" + desc = "Sponsored by the Government. This one has a chrome plated finish." + +/obj/item/card/id/police/fbi + name = "fbi special agent badge" + desc = "Sponsored by the Government. This one has all the bells and whistles." + +/obj/item/card/id/voivode + name = "ancient badge" + id_type_name ="ancient badge" + desc = "You have to wear this filthy thing to be recognized." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id12" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id12" + +/obj/item/card/id/bogatyr + name = "dusty badge" + id_type_name ="dusty badge" + desc = "You have to wear this because the Voivode wants you to." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id12" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id12" + + +/obj/item/card/id/bahari + name = "cultist badge" + id_type_name = "cultist badge" + desc = "This shows your devotion to the dark mother." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id14" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id14" + +/obj/item/card/id/noddist + name = "cultist badge" + id_type_name = "cultist badge" + desc = "This shows your devotion to the dark father." + icon = 'code/modules/wod13/items.dmi' + icon_state = "id15" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "id15" + +//TZIMISCE ROLES + +// PRIMOGEN STAFF (Distributed in game by Primogen) + +/obj/item/card/id/whip + name = "primogen's whip badge" + id_type_name = "whip badge" + desc = "This badge shows your servitude to an important person." + icon = 'code/modules/wod13/items.dmi' + icon_state = "onyxBadge" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "onyxBadge" + +/obj/item/card/id/steward + name = "primogen's steward badge" + id_type_name = "steward badge" + desc = "This badge shows you're very good at taking care of someone else's property." + icon = 'code/modules/wod13/items.dmi' + icon_state = "emeraldBadge" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "emeraldBadge" + +/obj/item/card/id/myrmidon + name = "primogen's myrmidon badge" + id_type_name = "myrmidon badge" + desc = "A badge which shows you're responsible enough to protect someone important but not responsible enough to protect the most important." + icon = 'code/modules/wod13/items.dmi' + icon_state = "rubyBadge" + inhand_icon_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + onflooricon = 'code/modules/wod13/onfloor.dmi' + worn_icon = 'code/modules/wod13/worn.dmi' + worn_icon_state = "rubyBadge" diff --git a/code/modules/vtmb/jobs/national_security/fbi.dm b/code/modules/vtmb/jobs/national_security/fbi.dm new file mode 100644 index 0000000000..ef498b5822 --- /dev/null +++ b/code/modules/vtmb/jobs/national_security/fbi.dm @@ -0,0 +1,52 @@ + +/datum/job/vamp/national_security/fbi + title = JOB_FBI + department_head = list("Federal Bureau of Investigation") + faction = "Vampire" + total_positions = 2 + spawn_positions = 2 + supervisors = " the FBI" + selection_color = "#1a1d8a" + + outfit = /datum/outfit/job/fbi + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_ARMORY, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_FBI + exp_type_department = EXP_TYPE_NATIONAL_SECURITY + + allowed_species = list("Human") + minimal_generation = 13 + + duty = "Enforce the Law." + minimal_masquerade = 0 + my_contact_is_important = FALSE + known_contacts = list("Police Chief") + +AddTimelock(/datum/job/vamp/national_security/fbi, list( + JOB_POLICE_ROLES = 15 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/fbi + name = "Federal Investigator" + jobtype = /datum/job/vamp/national_security/fbi + + ears = /obj/item/p25radio/police/government + uniform = /obj/item/clothing/under/vampire/office + shoes = /obj/item/clothing/shoes/vampire + suit = /obj/item/clothing/suit/vampire/jacket/fbi + belt = /obj/item/storage/belt/holster/detective/vampire/fbi + id = /obj/item/card/id/police/fbi + gloves = /obj/item/clothing/gloves/vampire/investigator + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/radio/cop + l_hand = /obj/item/vamp/keys/police + r_hand = /obj/item/police_radio + backpack_contents = list(/obj/item/card/id/police/sergeant=1, /obj/item/passport=1, /obj/item/implant/radio=1, /obj/item/camera/detective=1, /obj/item/camera_film=1, /obj/item/taperecorder=1, /obj/item/tape=1, /obj/item/vamp/creditcard=1, /obj/item/ammo_box/vampire/c45acp=1, /obj/item/storage/firstaid/ifak=1) + +/datum/outfit/job/fbi/post_equip(mob/living/carbon/human/agent) + ..() + agent.ignores_warrant = TRUE diff --git a/code/modules/vtmb/jobs/national_security/national_guard.dm b/code/modules/vtmb/jobs/national_security/national_guard.dm new file mode 100644 index 0000000000..44af9764f3 --- /dev/null +++ b/code/modules/vtmb/jobs/national_security/national_guard.dm @@ -0,0 +1,398 @@ +/datum/outfit/job/national_guard + name = "National Guard Soldier" + ears = /obj/item/p25radio/police/government + uniform = /obj/item/clothing/under/vampire/military_fatigues + mask = /obj/item/clothing/mask/vampire/balaclava + r_pocket = /obj/item/flashlight + l_pocket = /obj/item/ammo_box/magazine/vampaug + shoes = /obj/item/clothing/shoes/vampire/jackboots + belt = /obj/item/gun/ballistic/automatic/vampire/aug + suit = /obj/item/clothing/suit/vampire/vest/army + head = /obj/item/clothing/head/vampire/army + backpack_contents = list( + /obj/item/ammo_box/magazine/vampaug = 3, + /obj/item/radio/military = 1 + ) + +/datum/antagonist/national_guard/proc/equip_national_guard() + var/mob/living/carbon/human/H = owner.current + if(!ishuman(owner.current)) + return + H.equipOutfit(national_guard_outfit) + if(H.clane) + H.remove_overlay(H.clane.accessories_layers[H.clane.current_accessory]) + qdel(H.clane) + H.set_species(/datum/species/human) + H.generation = 13 + H.ignores_warrant = TRUE + H.maxHealth = round((initial(H.maxHealth)-initial(H.maxHealth)/4)+(initial(H.maxHealth)/4)*(H.physique+13-H.generation)) + H.health = round((initial(H.health)-initial(H.health)/4)+(initial(H.health)/4)*(H.physique+13-H.generation)) +/* var/my_name = "Tyler" + if(H.gender == MALE) + my_name = pick(GLOB.first_names_male) + else + my_name = pick(GLOB.first_names_female) + var/my_surname = pick(GLOB.last_names) + H.fully_replace_character_name(null,"[my_name] [my_surname]")*/ + for(var/datum/action/A in H.actions) + if(A.vampiric) + A.Remove(H) + H.thaumaturgy_knowledge = FALSE + QDEL_NULL(H.clane) + var/obj/item/organ/eyes/NV = new() + NV.Insert(H, TRUE, FALSE) + + var/list/landmarkslist = list() + for(var/obj/effect/landmark/start/S in GLOB.start_landmarks_list) + if(S.name == name) + landmarkslist += S + var/obj/effect/landmark/start/D = pick(landmarkslist) + H.forceMove(D.loc) + +/datum/antagonist/national_guard/proc/offer_loadout() + var/list/loadouts = list( + "Flamethrower", + "EOD", + "Medic", + "Sniper", + "Ammo Carrier" + ) + var/loadout_type = input(owner.current, "Choose your loadout:", "Loadout Selection") in loadouts + switch(loadout_type) + if("Flamethrower") + owner.current.put_in_r_hand(new /obj/item/vampire_flamethrower(owner.current)) + owner.current.put_in_l_hand(new /obj/item/gas_can/full(owner.current)) + if("EOD") + owner.current.put_in_r_hand(new /obj/item/clothing/suit/vampire/eod(owner.current)) + owner.current.put_in_l_hand(new /obj/item/clothing/head/vampire/eod(owner.current)) + if("Medic") + owner.current.put_in_r_hand(new /obj/item/storage/firstaid/tactical(owner.current)) + if("Sniper") + owner.current.put_in_r_hand(new /obj/item/gun/ballistic/automatic/vampire/sniper(owner.current)) + owner.current.put_in_l_hand(new /obj/item/ammo_box/vampire/c556(owner.current)) + if("Ammo Carrier") + owner.current.put_in_r_hand(new /obj/item/ammo_box/vampire/c556/incendiary(owner.current)) + owner.current.put_in_l_hand(new /obj/item/ammo_box/vampire/c556/incendiary(owner.current)) + +/obj/effect/landmark/start/national_guard + name = "National Guard" + delete_after_roundstart = FALSE + +/datum/antagonist/national_guard + name = "National Guard" + roundend_category = "national guard" + antagpanel_category = "National Guard" + job_rank = ROLE_NATIONAL_GUARD + antag_hud_type = ANTAG_HUD_OPS + antag_hud_name = "synd" + antag_moodlet = /datum/mood_event/focused + show_to_ghosts = TRUE + var/always_new_team = FALSE + var/datum/team/national_guard/national_guard_team + var/national_guard_outfit = /datum/outfit/job/national_guard + var/custom_objective + +/datum/antagonist/national_guard/sergeant + name = "National Guard Sergeant" + always_new_team = TRUE + var/title + +/datum/antagonist/national_guard/on_gain() + randomize_appearance() + forge_objectives() + add_antag_hud(ANTAG_HUD_OPS, "synd", owner.current) + owner.special_role = src + equip_national_guard() + give_alias() + offer_loadout() + return ..() + +/datum/antagonist/national_guard/on_removal() + ..() + to_chat(owner.current,"You are no longer in the National Guard!") + owner.special_role = null + +/datum/antagonist/national_guard/greet() + to_chat(owner.current, "You're in the national guard.") + to_chat(owner, "You are a [national_guard_team ? national_guard_team.national_guard_name : "national guard"] soldier!") + owner.announce_objectives() + + +/datum/antagonist/national_guard/proc/give_alias() + var/my_name = "Tyler" + var/list/military_ranks = list("Private", "Private First Class", "Specialist", "Corporal") + var/selected_rank = pick(military_ranks) + if(owner.current.gender == MALE) + my_name = pick(GLOB.first_names_male) + else + my_name = pick(GLOB.first_names_female) + var/my_surname = pick(GLOB.last_names) + owner.current.fully_replace_character_name(null,"[selected_rank] [my_name] [my_surname]") + +/datum/antagonist/national_guard/proc/forge_objectives() + if(national_guard_team) + objectives |= national_guard_team.objectives + +/datum/antagonist/national_guard/sergeant/give_alias() + var/my_name = "Tyler" + if(owner.current.gender == MALE) + my_name = pick(GLOB.first_names_male) + else + my_name = pick(GLOB.first_names_female) + var/my_surname = pick(GLOB.last_names) + owner.current.fully_replace_character_name(null,"Sergeant [my_name] [my_surname]") + +/datum/team/national_guard/antag_listing_name() + if(national_guard_name) + return "[national_guard_name] Soldiers" + else + return "Soldiers" + + +/datum/antagonist/national_guard/sergeant/greet() + to_chat(owner, "You are the leading sergeant for this mission. You are responsible for guiding your team's operation.") + to_chat(owner, "If you feel you are not up to this task, give your command to another soldier.") + owner.announce_objectives() + addtimer(CALLBACK(src, PROC_REF(national_guardteam_name_assign)), 1) + +/datum/antagonist/national_guard/sergeant/proc/national_guardteam_name_assign() + if(!national_guard_team) + return + national_guard_team.rename_team(ask_name()) + +/datum/antagonist/national_guard/sergeant/proc/ask_name() + var/randomname = pick(GLOB.last_names) + var/newname = stripped_input(owner.current,"You are the sergeant. Please choose a name for your team.", "Name change",randomname) + if (!newname) + newname = randomname + else + newname = reject_bad_name(newname) + if(!newname) + newname = randomname + +/datum/antagonist/national_guard/create_team(datum/team/national_guard/new_team) + if(!new_team) + if(!always_new_team) + for(var/datum/antagonist/national_guard/N in GLOB.antagonists) + if(!N.owner) + stack_trace("Antagonist datum without owner in GLOB.antagonists: [N]") + continue + national_guard_team = new /datum/team/national_guard + national_guard_team.update_objectives() + return + if(!istype(national_guard_team)) + stack_trace("Wrong team type passed to [type] initialization.") + national_guard_team = new_team + +/datum/antagonist/national_guard/admin_add(datum/mind/new_owner,mob/admin) + new_owner.assigned_role = ROLE_NATIONAL_GUARD + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has national guard'd [key_name_admin(new_owner)].") + log_admin("[key_name(admin)] has national guard'd [key_name(new_owner)].") + +/datum/random_gen/national_guard + var/hair_colors = list("040404", //Black + "120b05", //Dark Brown + "342414", //Brown + "554433", //Light Brown + "695c3b", //Dark Blond + "ad924e", //Blond + "dac07f", //Light Blond + "802400", //Ginger + "a5380e", //Ginger alt + "ffeace", //Albino + "650b0b", //Punk Red + "14350e", //Punk Green + "080918") //Punk Blue + + var/male_hair = list("Balding Hair", + "Bedhead", + "Bedhead 2", + "Bedhead 3", + "Boddicker", + "Business Hair", + "Business Hair 2", + "Business Hair 3", + "Business Hair 4", + "Coffee House", + "Combover", + "Crewcut", + "Father", + "Flat Top", + "Gelled Back", + "Joestar", + "Keanu Hair", + "Oxton", + "Volaju") + + var/male_facial = list("Beard (Abraham Lincoln)", + "Beard (Chinstrap)", + "Beard (Full)", + "Beard (Cropped Fullbeard)", + "Beard (Hipster)", + "Beard (Neckbeard)", + "Beard (Three o Clock Shadow)", + "Beard (Five o Clock Shadow)", + "Beard (Seven o Clock Shadow)", + "Moustache (Hulk Hogan)", + "Moustache (Watson)", + "Sideburns (Elvis)", + "Sideburns") + + var/female_hair = list("Ahoge", + "Long Bedhead", + "Beehive", + "Beehive 2", + "Bob Hair", + "Bob Hair 2", + "Bob Hair 3", + "Bob Hair 4", + "Bobcurl", + "Braided", + "Braided Front", + "Braid (Short)", + "Braid (Low)", + "Bun Head", + "Bun Head 2", + "Bun Head 3", + "Bun (Large)", + "Bun (Tight)", + "Double Bun", + "Emo", + "Emo Fringe", + "Feather", + "Gentle", + "Long Hair 1", + "Long Hair 2", + "Long Hair 3", + "Long Over Eye", + "Long Emo", + "Long Fringe", + "Ponytail", + "Ponytail 2", + "Ponytail 3", + "Ponytail 4", + "Ponytail 5", + "Ponytail 6", + "Ponytail 7", + "Ponytail (High)", + "Ponytail (Short)", + "Ponytail (Long)", + "Ponytail (Country)", + "Ponytail (Fringe)", + "Poofy", + "Short Hair Rosa", + "Shoulder-length Hair", + "Volaju") + +/datum/antagonist/national_guard/proc/randomize_appearance() + var/datum/random_gen/national_guard/h_gen = new + var/mob/living/carbon/human/H = owner.current + H.gender = pick(MALE, FEMALE) + H.body_type = H.gender + H.age = rand(18, 36) +// if(age >= 55) +// hair_color = "a2a2a2" +// facial_hair_color = hair_color +// else + H.hair_color = pick(h_gen.hair_colors) + H.facial_hair_color = H.hair_color + if(H.gender == MALE) + H.hairstyle = pick(h_gen.male_hair) + if(prob(25) || H.age >= 25) + H.facial_hairstyle = pick(h_gen.male_facial) + else + H.facial_hairstyle = "Shaved" + else + H.hairstyle = pick(h_gen.female_hair) + H.facial_hairstyle = "Shaved" + H.name = H.real_name + H.dna.real_name = H.real_name + var/obj/item/organ/eyes/organ_eyes = H.getorgan(/obj/item/organ/eyes) + if(organ_eyes) + organ_eyes.eye_color = random_eye_color() + H.underwear = random_underwear(H.gender) + if(prob(50)) + H.underwear_color = organ_eyes.eye_color + if(prob(50) || H.gender == FEMALE) + H.undershirt = random_undershirt(H.gender) + if(prob(25)) + H.socks = random_socks() + H.update_body() + H.update_hair() + H.update_body_parts() + +/datum/team/national_guard/proc/rename_team(new_name) + national_guard_name = new_name + name = "[national_guard_name] Team" + +/datum/team/national_guard + var/national_guard_name + var/core_objective = /datum/objective/national_guard + member_name = "National Guard Operative" + var/memorized_code + var/list/team_discounts + var/obj/item/nuclear_challenge/war_button + +/datum/team/national_guard/New() + ..() + national_guard_name = national_guard_name() + +/datum/team/national_guard/proc/update_objectives() + if(core_objective) + var/datum/objective/O = new core_objective + O.team = src + objectives += O + + +/datum/team/national_guard/roundend_report() + var/list/parts = list() + parts += "[national_guard_name] Operatives:" + + var/text = "
The national guard were:" + text += printplayerlist(members) + parts += text + + return "
[parts.Join("
")]
" + + + + +////////////////////////////////////////////// +// // +// NATIONAL GUARD SQUAD (MIDROUND) // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/midround/from_ghosts/national_guard + name = "National Guard Squad" + antag_flag = ROLE_NATIONAL_GUARD + antag_datum = /datum/antagonist/national_guard + required_candidates = 1 + weight = 5 + cost = 35 + requirements = list(90,90,90,80,60,40,30,20,10,10) + var/list/operative_cap = list(2,2,3,3,4,5,5,5,5,5) + var/datum/team/national_guard/national_guard_team + flags = HIGHLANDER_RULESET + +/datum/dynamic_ruleset/midround/from_ghosts/national_guard/acceptable(population=0, threat=0) + indice_pop = min(operative_cap.len, round(living_players.len/5)+1) + required_candidates = max(5, operative_cap[indice_pop]) + return ..() + +/datum/dynamic_ruleset/midround/from_ghosts/national_guard/ready(forced = FALSE) + if (required_candidates > (dead_players.len + list_observers.len)) + return FALSE + return ..() + +/datum/dynamic_ruleset/midround/from_ghosts/national_guard/finish_setup(mob/new_character, index) + new_character.mind.special_role = "National Guard" + new_character.mind.assigned_role = "National Guard" + if (index == 1) // Our first guy is the leader + var/datum/antagonist/national_guard/sergeant/new_role = new + national_guard_team = new_role.national_guard_team + new_character.mind.add_antag_datum(new_role) + else + return ..() + diff --git a/code/modules/vtmb/jobs/national_security/national_security.dm b/code/modules/vtmb/jobs/national_security/national_security.dm new file mode 100644 index 0000000000..ce0dbaf6b7 --- /dev/null +++ b/code/modules/vtmb/jobs/national_security/national_security.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/national_security + supervisors = "Your Country and respective supervisors" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/national_security + name = "National Security Roles" + +/datum/timelock/national_security/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_NATIONAL_SECURITY_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/national_security/swat.dm b/code/modules/vtmb/jobs/national_security/swat.dm new file mode 100644 index 0000000000..039a58031e --- /dev/null +++ b/code/modules/vtmb/jobs/national_security/swat.dm @@ -0,0 +1,379 @@ +/datum/outfit/job/swat + name = "Swat Officer" + ears = /obj/item/p25radio/police/tactical + uniform = /obj/item/clothing/under/vampire/police + mask = /obj/item/clothing/mask/vampire/balaclava + r_pocket = /obj/item/flashlight + l_pocket = /obj/item/ammo_box/magazine/vamp556 + shoes = /obj/item/clothing/shoes/vampire/jackboots + belt = /obj/item/gun/ballistic/automatic/vampire/ar15 + suit = /obj/item/clothing/suit/vampire/vest/police + head = /obj/item/clothing/head/vampire/helmet + id = /obj/item/card/id/police + backpack_contents = list( + /obj/item/ammo_box/magazine/vamp556 = 3, + /obj/item/radio/cop = 1, + /obj/item/vamp/keys/hack=2 + ) + +/datum/antagonist/swat/proc/equip_swat() + var/mob/living/carbon/human/H = owner.current + if(!ishuman(owner.current)) + return + H.equipOutfit(swat_outfit) + if(H.clane) + H.remove_overlay(H.clane.accessories_layers[H.clane.current_accessory]) + qdel(H.clane) + H.set_species(/datum/species/human) + H.generation = 13 + H.lockpicking = 5 + H.physique = 4 + H.ignores_warrant = TRUE + H.maxHealth = round((initial(H.maxHealth)-initial(H.maxHealth)/4)+(initial(H.maxHealth)/4)*(H.physique+13-H.generation)) + H.health = round((initial(H.health)-initial(H.health)/4)+(initial(H.health)/4)*(H.physique+13-H.generation)) +/* var/my_name = "Tyler" + if(H.gender == MALE) + my_name = pick(GLOB.first_names_male) + else + my_name = pick(GLOB.first_names_female) + var/my_surname = pick(GLOB.last_names) + H.fully_replace_character_name(null,"[my_name] [my_surname]")*/ + for(var/datum/action/A in H.actions) + if(A.vampiric) + A.Remove(H) + H.thaumaturgy_knowledge = FALSE + QDEL_NULL(H.clane) + var/obj/item/organ/eyes/NV = new() + NV.Insert(H, TRUE, FALSE) + + var/list/landmarkslist = list() + for(var/obj/effect/landmark/start/S in GLOB.start_landmarks_list) + if(S.name == name) + landmarkslist += S + var/obj/effect/landmark/start/D = pick(landmarkslist) + H.forceMove(D.loc) + +/obj/effect/landmark/start/swat + name = "Swat Officer" + delete_after_roundstart = FALSE + +/datum/antagonist/swat + name = "Swat Officer" + roundend_category = "Swat" + antagpanel_category = "Swat" + job_rank = ROLE_SWAT + antag_hud_type = ANTAG_HUD_OPS + antag_hud_name = "synd" + antag_moodlet = /datum/mood_event/focused + show_to_ghosts = TRUE + var/always_new_team = FALSE + var/datum/team/swat/swat_team + var/swat_outfit = /datum/outfit/job/swat + var/custom_objective + +/datum/antagonist/swat/team_leader + name = "Swat Team Leader" + always_new_team = TRUE + var/title + +/datum/antagonist/swat/on_gain() + randomize_appearance() + forge_objectives() + add_antag_hud(ANTAG_HUD_OPS, "synd", owner.current) + owner.special_role = src + equip_swat() + give_alias() + return ..() + +/datum/antagonist/swat/on_removal() + ..() + to_chat(owner.current,"You are no longer in the Special Weapons and Tactics squad!") + owner.special_role = null + +/datum/antagonist/swat/greet() + to_chat(owner.current, "You're in the Special Weapons and Tactics squad.") + to_chat(owner, "You are a [swat_team ? swat_team.swat_name : "swat"] officer!") + spawn(3 SECONDS) + owner.announce_objectives() + + +/datum/antagonist/swat/proc/give_alias() + var/my_name = "Tyler" + var/list/swat_ranks = list("Private", "Private First Class", "Lance Corporal", "Corporal") + var/selected_rank = pick(swat_ranks) + if(owner.current.gender == MALE) + my_name = pick(GLOB.first_names_male) + else + my_name = pick(GLOB.first_names_female) + var/my_surname = pick(GLOB.last_names) + owner.current.fully_replace_character_name(null,"[selected_rank] [my_name] [my_surname]") + +/datum/antagonist/swat/proc/forge_objectives() + spawn(2 SECONDS) + if(swat_team) + objectives |= swat_team.objectives + +/datum/antagonist/swat/leader/give_alias() + var/my_name = "Tyler" + if(owner.current.gender == MALE) + my_name = pick(GLOB.first_names_male) + else + my_name = pick(GLOB.first_names_female) + var/my_surname = pick(GLOB.last_names) + owner.current.fully_replace_character_name(null,"Squad Leader [my_name] [my_surname]") + +/datum/team/swat/antag_listing_name() + if(swat_name) + return "[swat_name] Officers" + else + return "Officers" + + +/datum/antagonist/swat/leader/greet() + to_chat(owner, "You are the SWAT Officer in charge of this mission. You are responsible for guiding your team's operation.") + to_chat(owner, "If you feel you are not up to this task, give your command to another officer.") + spawn(3 SECONDS) + owner.announce_objectives() + addtimer(CALLBACK(src, PROC_REF(swatteam_name_assign)), 1) + +/datum/antagonist/swat/leader/proc/swatteam_name_assign() + if(!swat_team) + return + swat_team.rename_team(ask_name()) + +/datum/antagonist/swat/leader/proc/ask_name() + var/randomname = pick(GLOB.last_names) + var/newname = stripped_input(owner.current,"You are the squa leader. Please choose a name for your team.", "Name change",randomname) + if (!newname) + newname = randomname + else + newname = reject_bad_name(newname) + if(!newname) + newname = randomname + +/datum/antagonist/swat/create_team(datum/team/swat/new_team) + if(!new_team) + if(!always_new_team) + for(var/datum/antagonist/swat/N in GLOB.antagonists) + if(!N.owner) + stack_trace("Antagonist datum without owner in GLOB.antagonists: [N]") + continue + swat_team = new /datum/team/swat + swat_team.update_objectives() + return + if(!istype(swat_team)) + stack_trace("Wrong team type passed to [type] initialization.") + swat_team = new_team + +/datum/antagonist/swat/admin_add(datum/mind/new_owner,mob/admin) + new_owner.assigned_role = ROLE_SWAT + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has swat'd [key_name_admin(new_owner)].") + log_admin("[key_name(admin)] has swat'd [key_name(new_owner)].") + +/datum/random_gen/swat + var/hair_colors = list("040404", //Black + "120b05", //Dark Brown + "342414", //Brown + "554433", //Light Brown + "695c3b", //Dark Blond + "ad924e", //Blond + "dac07f", //Light Blond + "802400", //Ginger + "a5380e", //Ginger alt + "ffeace", //Albino + "650b0b", //Punk Red + "14350e", //Punk Green + "080918") //Punk Blue + + var/male_hair = list("Balding Hair", + "Bedhead", + "Bedhead 2", + "Bedhead 3", + "Boddicker", + "Business Hair", + "Business Hair 2", + "Business Hair 3", + "Business Hair 4", + "Coffee House", + "Combover", + "Crewcut", + "Father", + "Flat Top", + "Gelled Back", + "Joestar", + "Keanu Hair", + "Oxton", + "Volaju") + + var/male_facial = list("Beard (Abraham Lincoln)", + "Beard (Chinstrap)", + "Beard (Full)", + "Beard (Cropped Fullbeard)", + "Beard (Hipster)", + "Beard (Neckbeard)", + "Beard (Three o Clock Shadow)", + "Beard (Five o Clock Shadow)", + "Beard (Seven o Clock Shadow)", + "Moustache (Hulk Hogan)", + "Moustache (Watson)", + "Sideburns (Elvis)", + "Sideburns") + + var/female_hair = list("Ahoge", + "Long Bedhead", + "Beehive", + "Beehive 2", + "Bob Hair", + "Bob Hair 2", + "Bob Hair 3", + "Bob Hair 4", + "Bobcurl", + "Braided", + "Braided Front", + "Braid (Short)", + "Braid (Low)", + "Bun Head", + "Bun Head 2", + "Bun Head 3", + "Bun (Large)", + "Bun (Tight)", + "Double Bun", + "Emo", + "Emo Fringe", + "Feather", + "Gentle", + "Long Hair 1", + "Long Hair 2", + "Long Hair 3", + "Long Over Eye", + "Long Emo", + "Long Fringe", + "Ponytail", + "Ponytail 2", + "Ponytail 3", + "Ponytail 4", + "Ponytail 5", + "Ponytail 6", + "Ponytail 7", + "Ponytail (High)", + "Ponytail (Short)", + "Ponytail (Long)", + "Ponytail (Country)", + "Ponytail (Fringe)", + "Poofy", + "Short Hair Rosa", + "Shoulder-length Hair", + "Volaju") + +/datum/antagonist/swat/proc/randomize_appearance() + var/datum/random_gen/swat/h_gen = new + var/mob/living/carbon/human/H = owner.current + H.gender = pick(MALE, FEMALE) + H.body_type = H.gender + H.age = rand(18, 36) +// if(age >= 55) +// hair_color = "a2a2a2" +// facial_hair_color = hair_color +// else + H.hair_color = pick(h_gen.hair_colors) + H.facial_hair_color = H.hair_color + if(H.gender == MALE) + H.hairstyle = pick(h_gen.male_hair) + if(prob(25) || H.age >= 25) + H.facial_hairstyle = pick(h_gen.male_facial) + else + H.facial_hairstyle = "Shaved" + else + H.hairstyle = pick(h_gen.female_hair) + H.facial_hairstyle = "Shaved" + H.name = H.real_name + H.dna.real_name = H.real_name + var/obj/item/organ/eyes/organ_eyes = H.getorgan(/obj/item/organ/eyes) + if(organ_eyes) + organ_eyes.eye_color = random_eye_color() + H.underwear = random_underwear(H.gender) + if(prob(50)) + H.underwear_color = organ_eyes.eye_color + if(prob(50) || H.gender == FEMALE) + H.undershirt = random_undershirt(H.gender) + if(prob(25)) + H.socks = random_socks() + H.update_body() + H.update_hair() + H.update_body_parts() + +/datum/team/swat/proc/rename_team(new_name) + swat_name = new_name + name = "[swat_name] Team" + +/datum/team/swat + var/swat_name + var/core_objective = /datum/objective/swat + member_name = "Swat Officer" + var/memorized_code + var/list/team_discounts + var/obj/item/nuclear_challenge/war_button + +/datum/team/swat/New() + ..() + swat_name = swat_name() + +/datum/team/swat/proc/update_objectives() + if(core_objective) + var/datum/objective/O = new core_objective + O.team = src + objectives += O + + +/datum/team/swat/roundend_report() + var/list/parts = list() + parts += "[swat_name] Operatives:" + + var/text = "
The SWAT were:" + text += printplayerlist(members) + parts += text + + return "
[parts.Join("
")]
" + + + + +////////////////////////////////////////////// +// // +// SWAT (MIDROUND) // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/midround/from_ghosts/swat + name = "Swat Officer" + antag_flag = ROLE_SWAT + antag_datum = /datum/antagonist/swat + required_candidates = 1 + weight = 5 + cost = 35 + requirements = list(90,90,90,80,60,40,30,20,10,10) + var/list/operative_cap = list(2,2,3,3,4,5,5,5,5,5) + var/datum/team/swat/swat_team + flags = HIGHLANDER_RULESET + +/datum/dynamic_ruleset/midround/from_ghosts/swat/acceptable(population=0, threat=0) + indice_pop = min(operative_cap.len, round(living_players.len/5)+1) + required_candidates = max(5, operative_cap[indice_pop]) + return ..() + +/datum/dynamic_ruleset/midround/from_ghosts/swat/ready(forced = FALSE) + if (required_candidates > (dead_players.len + list_observers.len)) + return FALSE + return ..() + +/datum/dynamic_ruleset/midround/from_ghosts/swat/finish_setup(mob/new_character, index) + new_character.mind.special_role = "Swat Officer" + new_character.mind.assigned_role = "Swat Officer" + if (index == 1) // Our first guy is the leader + var/datum/antagonist/swat/leader/new_role = new + swat_team = new_role.swat_team + new_character.mind.add_antag_datum(new_role) + else + return ..() + diff --git a/code/modules/vtmb/jobs/police_force/police.dm b/code/modules/vtmb/jobs/police_force/police.dm new file mode 100644 index 0000000000..58e9ef6fe9 --- /dev/null +++ b/code/modules/vtmb/jobs/police_force/police.dm @@ -0,0 +1,149 @@ + +/datum/job/vamp/police_force/police_officer + title = JOB_POLICE + department_head = list("Police Department") + faction = "Vampire" + total_positions = 5 + spawn_positions = 5 + supervisors = " the SFPD Chief and your Sergeant." + selection_color = "#7e7e7e" + + outfit = /datum/outfit/job/police_officer + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_ARMORY, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_POLICE + exp_type_department = EXP_TYPE_POLICE + + allowed_species = list("Ghoul", "Human") + species_slots = list("Ghoul" = 1) + + duty = "Enforce the Law." + minimal_masquerade = 0 + my_contact_is_important = FALSE + known_contacts = list("Police Chief") + +AddTimelock(/datum/job/vamp/police_force/police_officer, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/police_officer + name = "Police Officer" + jobtype = /datum/job/vamp/police_force/police_officer + + ears = /obj/item/p25radio/police + uniform = /obj/item/clothing/under/vampire/police + shoes = /obj/item/clothing/shoes/vampire/jackboots + suit = /obj/item/clothing/suit/vampire/vest/police + belt = /obj/item/storage/belt/holster/detective/vampire/police + gloves = /obj/item/cockclock + id = /obj/item/card/id/police + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/vamp/keys/police + backpack_contents = list(/obj/item/passport=1, /obj/item/implant/radio=1, /obj/item/vamp/creditcard=1, /obj/item/ammo_box/vampire/c9mm = 1, /obj/item/restraints/handcuffs = 1,/obj/item/melee/classic_baton/vampire = 1, /obj/item/storage/firstaid/ifak = 1) + +/datum/job/vamp/police_force/police_sergeant + title = JOB_POLICE_SERGEANT + department_head = list("Police Department") + faction = "Vampire" + total_positions = 2 + spawn_positions = 2 + supervisors = " the SFPD Chief" + selection_color = "#7e7e7e" + + outfit = /datum/outfit/job/police_sergeant + + access = list(ACCESS_HYDROPONICS, ACCESS_ARMORY, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_HARD + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_POLICE_SERGEANT + exp_type_department = EXP_TYPE_POLICE + + allowed_species = list("Human") + + duty = "Enforce the law. Keep the officers in line. Follow what the Chief says." + minimal_masquerade = 0 + my_contact_is_important = FALSE + known_contacts = list("Police Chief") + +AddTimelock(/datum/job/vamp/police_force/police_sergeant, list( + JOB_POLICE_ROLES = 5 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/police_sergeant + name = "Police Sergeant" + jobtype = /datum/job/vamp/police_force/police_sergeant + + ears = /obj/item/p25radio/police/supervisor + uniform = /obj/item/clothing/under/vampire/police + shoes = /obj/item/clothing/shoes/vampire/jackboots + suit = /obj/item/clothing/suit/vampire/vest/police/sergeant + belt = /obj/item/storage/belt/holster/detective/vampire/officer + gloves = /obj/item/cockclock + id = /obj/item/card/id/police/sergeant + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/vamp/keys/police/secure + backpack_contents = list(/obj/item/passport=1, /obj/item/implant/radio=1, /obj/item/vamp/creditcard=1, /obj/item/ammo_box/vampire/c9mm = 1, /obj/item/restraints/handcuffs = 1,/obj/item/melee/classic_baton/vampire = 1, /obj/item/storage/firstaid/ifak = 1) + +/datum/job/vamp/police_force/police_chief + title = JOB_POLICE_CHIEF + department_head = list("Police Department") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = " the SFPD" + selection_color = "#7e7e7e" + + outfit = /datum/outfit/job/police_chief + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_ARMORY, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_COMMAND + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_POLICE_CHIEF + exp_type_department = EXP_TYPE_POLICE + + allowed_species = list("Human") + + duty = "Underpaid, overworked, and understrength. Do your best to keep the order in San Francisco. Keep the officers in line." + minimal_masquerade = 0 + my_contact_is_important = FALSE +// known_contacts = list("Investigator") + +AddTimelock(/datum/job/vamp/police_force/police_chief, list( + JOB_POLICE_ROLES = 10 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/police_chief + name = "Police Chief" + jobtype = /datum/job/vamp/police_force/police_chief + + ears = /obj/item/p25radio/police/command + uniform = /obj/item/clothing/under/vampire/police + shoes = /obj/item/clothing/shoes/vampire/jackboots + suit = /obj/item/clothing/suit/vampire/vest/police/chief + belt = /obj/item/storage/belt/holster/detective/vampire/officer + gloves = /obj/item/cockclock + id = /obj/item/card/id/police/chief + l_pocket = /obj/item/vamp/phone + r_pocket = /obj/item/vamp/keys/police/secure/chief + backpack_contents = list(/obj/item/passport=1, /obj/item/implant/radio=1, /obj/item/vamp/creditcard=1, /obj/item/ammo_box/vampire/c9mm = 1, /obj/item/restraints/handcuffs = 1,/obj/item/melee/classic_baton/vampire = 1, /obj/item/storage/firstaid/ifak = 1) + +/datum/outfit/job/police_officer/post_equip(mob/living/carbon/human/H) + ..() + H.ignores_warrant = TRUE + +/datum/outfit/job/police_chief/post_equip(mob/living/carbon/human/H) + ..() + var/datum/martial_art/martial_art = new /datum/martial_art/cqc + H.ignores_warrant = TRUE + martial_art.teach(H) + +/datum/outfit/job/police_sergeant/post_equip(mob/living/carbon/human/H) + ..() + H.ignores_warrant = TRUE diff --git a/code/modules/vtmb/jobs/police_force/police_force.dm b/code/modules/vtmb/jobs/police_force/police_force.dm new file mode 100644 index 0000000000..c8a5826f6f --- /dev/null +++ b/code/modules/vtmb/jobs/police_force/police_force.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/police_force + supervisors = "the SFPD" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/police_force + name = "Police Force Roles" + +/datum/timelock/police_force/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_POLICE_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/tremere/archivist.dm b/code/modules/vtmb/jobs/tremere/archivist.dm new file mode 100644 index 0000000000..c6ed5d6b57 --- /dev/null +++ b/code/modules/vtmb/jobs/tremere/archivist.dm @@ -0,0 +1,54 @@ + +/datum/job/vamp/tremere/archivist + title = JOB_ARCHIVIST + department_head = list("Prince") + faction = "Vampire" + total_positions = 4 + spawn_positions = 4 + supervisors = "the Traditions and the Regent" + selection_color = "#ab2508" + + outfit = /datum/outfit/job/archivist + + access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION) + minimal_access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + exp_type_department = EXP_TYPE_TREMERE + + display_order = JOB_DISPLAY_ORDER_ARCHIVIST + + v_duty = "Keep a census of events and provide information to neonates. Listen to the Regent Carefully. Study blood magic and protect the chantry." + minimal_masquerade = 3 + allowed_species = list("Vampire") + allowed_bloodlines = list("Tremere", "Gargoyle") + known_contacts = list("Tremere Regent") + experience_addition = 15 + +AddTimelock(/datum/job/vamp/tremere/archivist, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/archivist + name = "Archivist" + jobtype = /datum/job/vamp/tremere/archivist + + id = /obj/item/card/id/archive + glasses = /obj/item/clothing/glasses/vampire/perception + shoes = /obj/item/clothing/shoes/vampire + gloves = /obj/item/clothing/gloves/vampire/latex + uniform = /obj/item/clothing/under/vampire/archivist + r_pocket = /obj/item/vamp/keys/archive + l_pocket = /obj/item/vamp/phone/archivist + accessory = /obj/item/clothing/accessory/pocketprotector/full + backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/arcane_tome=1, /obj/item/vamp/creditcard=1, /obj/item/melee/vampirearms/katana/kosa=1) + +/datum/outfit/job/archivist/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/vampire/archivist/female + shoes = /obj/item/clothing/shoes/vampire/heels + +/obj/effect/landmark/start/archivist + name = "Archivist" + icon_state = "Archivist" diff --git a/code/modules/vtmb/jobs/tremere/regent.dm b/code/modules/vtmb/jobs/tremere/regent.dm new file mode 100644 index 0000000000..9b1b3209e7 --- /dev/null +++ b/code/modules/vtmb/jobs/tremere/regent.dm @@ -0,0 +1,57 @@ + +/datum/job/vamp/tremere/regent + title = JOB_REGENT + department_head = list("Prince") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = "the Pyramid" + selection_color = "#ab2508" + + outfit = /datum/outfit/job/regent + + access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION) + minimal_access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + exp_type_department = EXP_TYPE_TREMERE + + my_contact_is_important = TRUE + display_order = JOB_DISPLAY_ORDER_REGENT + v_duty = "Lead the Chantry. You serve as both the Regent and Tremere Primogen. You report to the Tremere Lord of this region first, Prince second." + minimal_masquerade = 4 + minimal_generation = 7 + allowed_species = list("Vampire") + allowed_bloodlines = list("Tremere") + experience_addition = 20 + known_contacts = list("Prince") + +AddTimelock(/datum/job/vamp/tremere/regent, list( + JOB_TREMERE_ROLES = 10 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/regent + name = "Chantry Regent" + jobtype = /datum/job/vamp/tremere/regent + + id = /obj/item/card/id/regent + glasses = /obj/item/clothing/glasses/vampire/perception + suit = /obj/item/clothing/suit/vampire/trench/archive + shoes = /obj/item/clothing/shoes/vampire + gloves = /obj/item/clothing/gloves/vampire/latex + uniform = /obj/item/clothing/under/vampire/archivist + r_pocket = /obj/item/vamp/keys/regent + l_pocket = /obj/item/vamp/phone/tremere + accessory = /obj/item/clothing/accessory/pocketprotector/full + backpack_contents = list(/obj/item/passport=1, /obj/item/phone_book=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/arcane_tome=1, /obj/item/vamp/creditcard/elder=1, /obj/item/melee/vampirearms/katana/kosa=1) + +/datum/outfit/job/regent/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/vampire/archivist/female + shoes = /obj/item/clothing/shoes/vampire/heels + +/obj/effect/landmark/start/regent + name = "Chantry Regent" + icon_state = "Archivist" diff --git a/code/modules/vtmb/jobs/tremere/tremere.dm b/code/modules/vtmb/jobs/tremere/tremere.dm new file mode 100644 index 0000000000..5feca1b936 --- /dev/null +++ b/code/modules/vtmb/jobs/tremere/tremere.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/tremere + supervisors = "the Pyramid" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/tremere + name = "Tremere Roles" + +/datum/timelock/tremere/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_TREMERE_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/tzimisce_mansion/bogatyr.dm b/code/modules/vtmb/jobs/tzimisce_mansion/bogatyr.dm new file mode 100644 index 0000000000..cb1be8e47c --- /dev/null +++ b/code/modules/vtmb/jobs/tzimisce_mansion/bogatyr.dm @@ -0,0 +1,57 @@ + +/datum/job/vamp/tzimisce_mansion_v/bogatyr + title = JOB_BOGATYR + department_head = list("Voivode") + faction = "Vampire" + total_positions = 4 + spawn_positions = 4 + supervisors = " the Laws of Hospitality" + selection_color = "#953d2d" + + outfit = /datum/outfit/job/bogatyr + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_BOGATYR + exp_type_department = EXP_TYPE_TZIMISCE + + allowed_species = list("Vampire") + allowed_bloodlines = list("Old Clan Tzimisce") + minimal_generation = 13 //Uncomment when players get exp enough + + v_duty = "Whether you are of Voivode-in-Waiting's blood or if you've been honored, you are one of the Kin of the Voivode. Protect your Family, as your Family would protect you." + experience_addition = 15 + minimal_masquerade = 2 + my_contact_is_important = TRUE + known_contacts = list("Prince", "Baron", "Sheriff") + +AddTimelock(/datum/job/vamp/tzimisce_mansion_v/bogatyr, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/bogatyr/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/vampire/bogatyr/female + shoes = /obj/item/clothing/shoes/vampire/heels + + +/datum/outfit/job/bogatyr + name = "Bogatyr" + jobtype = /datum/job/vamp/tzimisce_mansion_v/bogatyr + id = /obj/item/card/id/bogatyr + //glasses = /obj/item/clothing/glasses/vampire/yellow + uniform = /obj/item/clothing/under/vampire/bogatyr + //suit = /obj/item/clothing/suit/vampire/jacket/punk + shoes = /obj/item/clothing/shoes/vampire/jackboots + head = /obj/item/clothing/head/vampire/bogatyr + suit = /obj/item/clothing/suit/vampire/bogatyr + belt = /obj/item/storage/belt/vampire/sheathe/longsword + l_pocket = /obj/item/vamp/phone + //r_pocket = /obj/item/cockclock + backpack_contents = list(/obj/item/vamp/keys/old_clan_tzimisce=1, /obj/item/melee/vampirearms/fireaxe=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) + +/obj/effect/landmark/start/bogatyr + name = "Bogatyr" diff --git a/code/modules/vtmb/jobs/tzimisce_mansion/tzimisce_mansion_v.dm b/code/modules/vtmb/jobs/tzimisce_mansion/tzimisce_mansion_v.dm new file mode 100644 index 0000000000..daa9e39c51 --- /dev/null +++ b/code/modules/vtmb/jobs/tzimisce_mansion/tzimisce_mansion_v.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/tzimisce_mansion_v + supervisors = "the Laws of Hospitality" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/tzimisce_mansion_v + name = "Tzismice Mansion Roles" + +/datum/timelock/tzimisce_mansion_v/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_TZIMISCE_MANSION_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/tzimisce_mansion/voivode.dm b/code/modules/vtmb/jobs/tzimisce_mansion/voivode.dm new file mode 100644 index 0000000000..3a6899aab4 --- /dev/null +++ b/code/modules/vtmb/jobs/tzimisce_mansion/voivode.dm @@ -0,0 +1,48 @@ +/datum/job/vamp/tzimisce_mansion_v/voivode + title = JOB_VOIVODE + department_head = list("Eldest") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = " the Laws of Hospitality" + selection_color = "#953d2d" + + outfit = /datum/outfit/job/voivode + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_VOIVODE + exp_type_department = EXP_TYPE_TZIMISCE + + allowed_species = list("Vampire") + allowed_bloodlines = list("Old Clan Tzimisce") + minimal_generation = 7 + + v_duty = "You are a Childe of the Voivode-in-Waiting, the ancient Tzimisce Elder who has rested beneath the Earth for an age longer than the city that now rests on their bones. Honor them in all your actions, and remember that you walk with their favor." + experience_addition = 20 + minimal_masquerade = 2 + my_contact_is_important = TRUE + known_contacts = list("Prince", "Baron", "Sheriff") + +AddTimelock(/datum/job/vamp/tzimisce_mansion_v/voivode, list( + JOB_TZIMISCE_MANSION_ROLES = 10 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/voivode + name = "Voivode" + jobtype = /datum/job/vamp/tzimisce_mansion_v/voivode + id = /obj/item/card/id/voivode + //glasses = /obj/item/clothing/glasses/vampire/yellow + uniform = /obj/item/clothing/under/vampire/voivode + suit = /obj/item/clothing/suit/vampire/trench/voivode + shoes = /obj/item/clothing/shoes/vampire/jackboots + belt = /obj/item/storage/belt/vampire/sheathe/longsword + l_pocket = /obj/item/vamp/phone + //r_pocket = + backpack_contents = list(/obj/item/vamp/keys/old_clan_tzimisce=1, /obj/item/melee/vampirearms/eguitar=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/elder=1) + +/obj/effect/landmark/start/voivode + name = "Voivode" diff --git a/code/modules/vtmb/jobs/tzimisce_mansion/zadruga.dm b/code/modules/vtmb/jobs/tzimisce_mansion/zadruga.dm new file mode 100644 index 0000000000..82066abf9c --- /dev/null +++ b/code/modules/vtmb/jobs/tzimisce_mansion/zadruga.dm @@ -0,0 +1,48 @@ +/datum/job/vamp/tzimisce_mansion_v/zadruga + title = JOB_ZADRUGA + department_head = list("Voivode") + faction = "Ghoul" //[Lucifernix] - Change this to vampire when I actually fix this. + total_positions = 2 + spawn_positions = 2 + supervisors = " the Laws of Hospitality" + selection_color = "#953d2d" + + outfit = /datum/outfit/job/zadruga + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SRV + display_order = JOB_DISPLAY_ORDER_ZADRUGA + exp_type_department = EXP_TYPE_TZIMISCE + + //ghoul_only = TRUE + //allowed_bloodlines = list("Old Clan Tzimisce", "Tzimisce") + //minimal_generation = 7 //Uncomment when players get exp enough + + duty = "You were born in servitude to the Master of the Manor: your father served the Voivode, as did his father. Now, you carry their blood, and with it their responsibilities." + experience_addition = 20 + minimal_masquerade = 2 + my_contact_is_important = FALSE + known_contacts = list("Prince", "Baron", "Sheriff") + +AddTimelock(/datum/job/vamp/tzimisce_mansion_v/zadruga, list( + JOB_TZIMISCE_MANSION_ROLES = 5 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + + +/datum/outfit/job/zadruga + name = "zadruga" + jobtype = /datum/job/vamp/tzimisce_mansion_v/zadruga + id = /obj/item/card/id/bogatyr + //glasses = /obj/item/clothing/glasses/vampire/yellow + uniform = /obj/item/clothing/under/vampire/bogatyr + //suit = /obj/item/clothing/suit/vampire/jacket/punk + shoes = /obj/item/clothing/shoes/vampire/jackboots + l_pocket = /obj/item/vamp/phone + //r_pocket = /obj/item/cockclock + backpack_contents = list(/obj/item/vamp/keys/old_clan_tzimisce=1, /obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) + +/obj/effect/landmark/start/zadruga + name = "Zadruga" diff --git a/code/modules/vtmb/jobs/unaligned/citizen.dm b/code/modules/vtmb/jobs/unaligned/citizen.dm new file mode 100644 index 0000000000..83b659762a --- /dev/null +++ b/code/modules/vtmb/jobs/unaligned/citizen.dm @@ -0,0 +1,61 @@ + +/datum/job/vamp/unaligned/citizen + title = JOB_CIVILIAN + faction = "Vampire" + total_positions = -1 + spawn_positions = -1 + supervisors = "the Traditions" + selection_color = "#df7058" + access = list() //See /datum/job/assistant/get_access() + minimal_access = list() //See /datum/job/assistant/get_access() + outfit = /datum/outfit/job/citizen + antag_rep = 7 + paycheck = PAYCHECK_ASSISTANT // Get a job. Job reassignment changes your paycheck now. Get over it. + + access = list(ACCESS_MAINT_TUNNELS) + liver_traits = list(TRAIT_GREYTIDE_METABOLISM) + + paycheck_department = ACCOUNT_CIV + display_order = JOB_DISPLAY_ORDER_CITIZEN + + allowed_species = list("Vampire", "Ghoul", "Human", "Werewolf", "Kuei-Jin") + + v_duty = "Follow the traditions of the Camarilla. Obey the Prince and their authority. The city belongs to him. Aligning yourself with your clan members would be of benefit." + duty = "Obey the authorities... Or don't. You are up late tonight for one reason or another." + minimal_masquerade = 0 + allowed_bloodlines = list("True Brujah", "Daughters of Cacophony", "Salubri", "Baali", "Brujah", "Tremere", "Ventrue", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Giovanni", "Ministry", "Tzimisce", "Lasombra", "Caitiff", "Old Clan Tzimisce", "Kiasyd", "Cappadocian") + +/datum/outfit/job/citizen + name = "Citizen" + jobtype = /datum/job/vamp/unaligned/citizen + l_pocket = /obj/item/vamp/phone + id = /obj/item/cockclock + +/datum/outfit/job/citizen/pre_equip(mob/living/carbon/human/H) + ..() + if(H.clane) + if(H.gender == MALE) + shoes = /obj/item/clothing/shoes/vampire + if(H.clane.male_clothes) + uniform = H.clane.male_clothes + else + shoes = /obj/item/clothing/shoes/vampire/heels + if(H.clane.female_clothes) + uniform = H.clane.female_clothes + else + uniform = /obj/item/clothing/under/vampire/emo + if(H.gender == MALE) + shoes = /obj/item/clothing/shoes/vampire + else + shoes = /obj/item/clothing/shoes/vampire/heels + if(H.clane) + if(H.clane.name == "Lasombra") + backpack_contents = list(/obj/item/passport =1, /obj/item/vamp/creditcard=1) + if(!H.clane) + backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) + if(H.clane && H.clane.name != "Lasombra") + backpack_contents = list(/obj/item/passport=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) + +/obj/effect/landmark/start/citizen + name = "Citizen" + icon_state = "Assistant" diff --git a/code/modules/vtmb/jobs/unaligned/unaligned.dm b/code/modules/vtmb/jobs/unaligned/unaligned.dm new file mode 100644 index 0000000000..9bcd79fb87 --- /dev/null +++ b/code/modules/vtmb/jobs/unaligned/unaligned.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/unaligned + supervisors = "Yourself" + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/unaligned + name = "Unaligned Roles" + +/datum/timelock/unaligned/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_UNALIGNED_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() diff --git a/code/modules/vtmb/jobs/warehouse/dealer.dm b/code/modules/vtmb/jobs/warehouse/dealer.dm new file mode 100644 index 0000000000..5e5c135654 --- /dev/null +++ b/code/modules/vtmb/jobs/warehouse/dealer.dm @@ -0,0 +1,61 @@ + +/datum/job/vamp/warehouse/dealer + title = JOB_DEALER + department_head = list("Yourself") + faction = "Vampire" + total_positions = 1 + spawn_positions = 1 + supervisors = "None. You are beholden only to yourself." + selection_color = "#edc009" + exp_type_department = EXP_TYPE_WAREHOUSE // This is so the jobs menu can work properly + + outfit = /datum/outfit/job/dealer + + access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT, ACCESS_AUX_BASE) + minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT, ACCESS_AUX_BASE) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_CAR + + liver_traits = list(TRAIT_PRETENDER_ROYAL_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_DEALER + bounty_types = CIV_JOB_RANDOM + +// minimal_generation = 12 //Uncomment when players get exp enough + + my_contact_is_important = TRUE + known_contacts = list("Prince","Seneschal", "Sheriff", "Baron") + allowed_bloodlines = list("True Brujah", "Brujah", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Tzimisce", "Caitiff", "Ventrue", "Ministry", "Kiasyd", "Cappadocian") + + v_duty = "You provide both legal and illegal supplies to those that get busy during the night. You are your own man yet you know people are out for you. Time to buckle in..." + minimal_masquerade = 3 + allowed_species = list("Vampire", "Werewolf", "Kuei-Jin") + experience_addition = 20 + +AddTimelock(/datum/job/vamp/warehouse/dealer, list( + JOB_WAREHOUSE_ROLES = 5 HOURS, + JOB_LIVING_ROLES = 2 HOURS, +)) + + +/datum/outfit/job/dealer + name = "Dealer" + jobtype = /datum/job/vamp/warehouse/dealer + + id = /obj/item/card/id/dealer + uniform = /obj/item/clothing/under/vampire/suit + shoes = /obj/item/clothing/shoes/vampire/brown + glasses = /obj/item/clothing/glasses/vampire/sun + l_pocket = /obj/item/vamp/phone/dealer + r_pocket = /obj/item/vamp/keys/supply + backpack_contents = list(/obj/item/passport=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard/rich=1) + +/datum/outfit/job/dealer/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/vampire/suit/female + shoes = /obj/item/clothing/shoes/vampire/heels/red + +/obj/effect/landmark/start/dealer + name = "Dealer" + icon_state = "Dealer" diff --git a/code/modules/vtmb/jobs/warehouse/supply_assistant.dm b/code/modules/vtmb/jobs/warehouse/supply_assistant.dm new file mode 100644 index 0000000000..f9dac220b6 --- /dev/null +++ b/code/modules/vtmb/jobs/warehouse/supply_assistant.dm @@ -0,0 +1,50 @@ + +/datum/job/vamp/warehouse/supply + title = JOB_SUPPLY + department_head = list("Dealer") + faction = "Vampire" + total_positions = 4 + spawn_positions = 4 + supervisors = "the Dealer" + selection_color = "#edc009" + exp_type_department = EXP_TYPE_WAREHOUSE + + outfit = /datum/outfit/job/supply + + access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM, ACCESS_MECH_MINING) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_CAR + display_order = JOB_DISPLAY_ORDER_SUPPLY + bounty_types = CIV_JOB_RANDOM + allowed_species = list("Vampire", "Ghoul", "Human", "Kuei-Jin") + known_contacts = list("Dealer") + allowed_bloodlines = list("True Brujah", "Daughters of Cacophony", "Brujah", "Nosferatu", "Gangrel", "Toreador", "Malkavian", "Banu Haqim", "Tzimisce", "Caitiff", "Lasombra", "Gargoyle", "Kiasyd", "Cappadocian") + + v_duty = "You work for the Dealer, or are a part of their coterie. They pay well and the job is easy. Don't disappoint them." + duty = "Though your boss is odd and only works late night hours, they pay you well enough that you avoid questioning it." + minimal_masquerade = 2 + experience_addition = 15 + +AddTimelock(/datum/job/vamp/warehouse/supply, list( + JOB_LIVING_ROLES = 2 HOURS, +)) + +/datum/outfit/job/supply + name = "Supply Technician" + jobtype = /datum/job/vamp/warehouse/supply + + id = /obj/item/card/id/supplytech + uniform = /obj/item/clothing/under/vampire/supply + gloves = /obj/item/clothing/gloves/vampire/work + l_pocket = /obj/item/vamp/phone/supply_tech + r_pocket = /obj/item/vamp/keys/supply + shoes = /obj/item/clothing/shoes/vampire/jackboots + backpack_contents = list(/obj/item/passport=1, /obj/item/phone_book=1, /obj/item/cockclock=1, /obj/item/flashlight=1, /obj/item/vamp/creditcard=1) + +/datum/outfit/job/supply/pre_equip(mob/living/carbon/human/H) + ..() + +/obj/effect/landmark/start/supplytechnician + name = "Supply Technician" + icon_state = "Supply Technician" diff --git a/code/modules/vtmb/jobs/warehouse/warehouse.dm b/code/modules/vtmb/jobs/warehouse/warehouse.dm new file mode 100644 index 0000000000..9cec8b4574 --- /dev/null +++ b/code/modules/vtmb/jobs/warehouse/warehouse.dm @@ -0,0 +1,21 @@ +/datum/job/vamp/warehouse + supervisors = "None. You are beholden only to yourself." + total_positions = 1 + spawn_positions = 1 + +/datum/timelock/warehouse + name = "Warehouse Roles" + +/datum/timelock/warehouse/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_WAREHOUSE_ROLES_LIST + + +/datum/timelock/living + name = "Living Roles" + +/datum/timelock/living/can_play(client/C) + return C.get_time_living() >= time_required + +/datum/timelock/living/get_role_requirement(client/C) + return time_required - C.get_time_living() From f531ae162ae29438c5b73579f64ff9e13e39969b Mon Sep 17 00:00:00 2001 From: Washington <47699733+wgtjunior743@users.noreply.github.com> Date: Thu, 6 Feb 2025 18:56:01 -0300 Subject: [PATCH 4/6] leftover from testing new_player.dm --- code/modules/mob/dead/new_player/new_player.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index c6a10dcc42..23903fccda 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -307,7 +307,7 @@ /mob/dead/new_player/proc/IsJobUnavailable(rank, latejoin = FALSE) var/bypass = FALSE if (check_rights_for(client, R_ADMIN)) - bypass = FALSE + bypass = TRUE var/datum/job/job = SSjob.GetJob(rank) if(!job) return JOB_UNAVAILABLE_GENERIC From 4476307090d4bb0dbf3b0ce3f1dc4d23dc3efb10 Mon Sep 17 00:00:00 2001 From: Washington <47699733+wgtjunior743@users.noreply.github.com> Date: Thu, 6 Feb 2025 18:56:34 -0300 Subject: [PATCH 5/6] leftover from testing preferences.dm --- code/modules/client/preferences.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index c9c0053ada..3df349a8fb 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1328,7 +1328,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/bypass = FALSE if (check_rights_for(user.client, R_ADMIN)) - bypass = FALSE + bypass = TRUE for(var/datum/job/job in sortList(SSjob.occupations, GLOBAL_PROC_REF(cmp_job_display_asc))) From 0f751cd9113cedfcd3e4696fb2d8c0ef8d952025 Mon Sep 17 00:00:00 2001 From: Washington <47699733+wgtjunior743@users.noreply.github.com> Date: Thu, 6 Feb 2025 20:03:02 -0300 Subject: [PATCH 6/6] fix order jobs.dm --- code/__DEFINES/jobs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 8d86418a64..6f0db9b242 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -49,8 +49,8 @@ #define JOB_DISPLAY_ORDER_ARCHIVIST 26 #define JOB_DISPLAY_ORDER_GIOVANNI 27 #define JOB_DISPLAY_ORDER_POLICE_CHIEF 28 -#define JOB_DISPLAY_ORDER_POLICE 29 -#define JOB_DISPLAY_ORDER_POLICE_SERGEANT 30 +#define JOB_DISPLAY_ORDER_POLICE_SERGEANT 29 +#define JOB_DISPLAY_ORDER_POLICE 30 #define JOB_DISPLAY_ORDER_FBI 31 #define JOB_DISPLAY_ORDER_VOIVODE 32 #define JOB_DISPLAY_ORDER_BOGATYR 33