Files
Paradise/code/modules/events/bureaucratic_error.dm
Cocacolagua 25dd98b449 Lets the bureaucracy mishap event have a chance to roll rare jobs (#22218)
* damn bureaus

* nah nvm detective ur good

* it isnt 10% anymore

* rev1

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* rev2

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

---------

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
2023-09-13 21:02:08 +01:00

52 lines
1.8 KiB
Plaintext

/datum/event/bureaucratic_error
announceWhen = 1
/// Jobs that are not allowed to be picked for the bureaucratic error
var/list/blacklisted_jobs = list(
/datum/job/assistant,
/datum/job/ai,
/datum/job/cyborg,
/datum/job/blueshield,
/datum/job/chaplain,
/datum/job/officer,
/datum/job/warden
)
/// Jobs that pass an additional 40% chance per roll to be picked for the bureaucratic error
var/list/uncommon_jobs = list(
/datum/job/chief_engineer,
/datum/job/cmo,
/datum/job/rd,
/datum/job/hos,
/datum/job/captain,
/datum/job/hop,
/datum/job/nanotrasenrep,
/datum/job/judge,
/datum/job/qm
)
/datum/event/bureaucratic_error/announce()
GLOB.major_announcement.Announce("A recent bureaucratic error in the Human Resources Department may result in personnel shortages in some departments and redundant staffing in others. Contact your local HoP to solve this issue.", "Paperwork Mishap Alert")
/datum/event/bureaucratic_error/start()
var/list/affected_jobs = list() // For logging
var/list/jobs = SSjobs.occupations.Copy()
var/datum/job/overflow
var/overflow_amount = pick(1, 2)
var/errors = 0
while(errors < overflow_amount)
var/random_change = pick(-2, -1, 1, 2)
overflow = pick_n_take(jobs)
if((overflow.admin_only) || (overflow.type in blacklisted_jobs))
continue
if(overflow.type in uncommon_jobs)
if(prob(40))
random_change = clamp(random_change, 1, 2)
else
continue
overflow.total_positions = max(overflow.total_positions + random_change, 0)
affected_jobs += "[overflow.title] slot changed by [random_change]"
errors++
log_and_message_admins(affected_jobs.Join(".\n"))
for(var/mob/M as anything in GLOB.dead_mob_list)
to_chat(M, "<span class='deadsay'><b>Bureaucratic Error:</b> The following job slots have changed: \n[affected_jobs.Join(",\n ")].</span>")