// Station ranks #define RANK_HEADS "Heads" #define RANK_SECURITY "Security" #define RANK_ENGINEERING "Engineering" #define RANK_RESEARCH "Research" #define RANK_MEDICAL "Medical" #define RANK_CE_STATION_ENGINEER "CE_Station_Engineer" #define RANK_CE_ATMOSPHERIC_TECH "CE_Atmospheric_Tech" #define RANK_CE_SHAFT_MINER "CE_Shaft_Miner" #define RANK_CHEMIST_RD_CMO "Chemist_RD_CMO" #define RANK_GENETIST_RD_CMO "Geneticist_RD_CMO" #define RANK_MD_CMO "MD_CMO" #define RANK_SCIENTIST_RD "Scientist_RD" #define RANK_AI_CYBORG "AI_Cyborg" #define RANK_DETECTIVE_HOS "Detective_HoS" #define RANK_VIROLOGIST_RD_CMO "Virologist_RD_CMO" GLOBAL_DATUM(banlistjob, /savefile) /proc/_jobban_isbanned(var/client/clientvar, var/rank) if(!clientvar) return 1 ClearTempbansjob() var/id = clientvar.computer_id var/key = clientvar.ckey if (guest_jobbans(rank)) if(config.guest_jobban && IsGuestKey(key)) return 1 GLOB.banlistjob.cd = "/base" if (GLOB.banlistjob.dir.Find("[key][id][rank]")) return 1 GLOB.banlistjob.cd = "/base" for (var/A in GLOB.banlistjob.dir) GLOB.banlistjob.cd = "/base/[A]" if ((id == GLOB.banlistjob["id"] || key == GLOB.banlistjob["key"]) && rank == GLOB.banlistjob["rank"]) return 1 return 0 /proc/LoadBansjob() GLOB.banlistjob = new("data/job_fullnew.bdb") log_admin("Loading Banlistjob") if (!length(GLOB.banlistjob.dir)) log_admin("Banlistjob is empty.") if (!GLOB.banlistjob.dir.Find("base")) log_admin("Banlistjob missing base dir.") GLOB.banlistjob.dir.Add("base") GLOB.banlistjob.cd = "/base" else if (GLOB.banlistjob.dir.Find("base")) GLOB.banlistjob.cd = "/base" ClearTempbansjob() return 1 /proc/ClearTempbansjob() UpdateTime() GLOB.banlistjob.cd = "/base" for (var/A in GLOB.banlistjob.dir) GLOB.banlistjob.cd = "/base/[A]" //if (!GLOB.banlistjob["key"] || !GLOB.banlistjob["id"]) // RemoveBanjob(A, "full") // log_admin("Invalid Ban.") // message_admins("Invalid Ban.") // continue if (!GLOB.banlistjob["temp"]) continue if (CMinutes >= GLOB.banlistjob["minutes"]) RemoveBanjob(A) return 1 /proc/AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, rank) UpdateTime() var/bantimestamp if (temp) UpdateTime() bantimestamp = CMinutes + minutes if(rank == RANK_HEADS) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_HEAD_OF_PERSONNEL) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_SITE_MANAGER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_HEAD_OF_SECURITY) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHIEF_ENGINEER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_RESEARCH_DIRECTOR) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHIEF_MEDICAL_OFFICER) return 1 if(rank == RANK_SECURITY) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_HEAD_OF_SECURITY) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_WARDEN) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_DETECTIVE) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_SECURITY_OFFICER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CYBORG) return 1 if(rank == RANK_ENGINEERING) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_ENGINEER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_ATMOSPHERIC_TECHNICIAN) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHIEF_ENGINEER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CYBORG) return 1 if(rank == RANK_RESEARCH) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_SCIENTIST) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_GENETICIST) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHIEF_MEDICAL_OFFICER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_RESEARCH_DIRECTOR) return 1 if(rank == RANK_MEDICAL) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_GENETICIST) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_MEDICAL_DOCTOR) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHIEF_MEDICAL_OFFICER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHEMIST) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CYBORG) return 1 if(rank == RANK_CE_STATION_ENGINEER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_ENGINEER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHIEF_ENGINEER) return 1 if(rank == RANK_CE_ATMOSPHERIC_TECH) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_ATMOSPHERIC_TECHNICIAN) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHIEF_ENGINEER) return 1 if(rank == RANK_CE_SHAFT_MINER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_SHAFT_MINER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHIEF_ENGINEER) return 1 if(rank == RANK_CHEMIST_RD_CMO) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHIEF_MEDICAL_OFFICER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_RESEARCH_DIRECTOR) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHEMIST) return 1 if(rank == RANK_GENETIST_RD_CMO) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHIEF_MEDICAL_OFFICER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_RESEARCH_DIRECTOR) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_GENETICIST) return 1 if(rank == RANK_MD_CMO) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHIEF_MEDICAL_OFFICER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_MEDICAL_DOCTOR) return 1 if(rank == RANK_SCIENTIST_RD) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_RESEARCH_DIRECTOR) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_SCIENTIST) return 1 if(rank == RANK_AI_CYBORG) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CYBORG) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_AI) return 1 if(rank == RANK_DETECTIVE_HOS) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_DETECTIVE) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_HEAD_OF_SECURITY) return 1 if(rank == RANK_VIROLOGIST_RD_CMO) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_CHIEF_MEDICAL_OFFICER) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_RESEARCH_DIRECTOR) AddBanjob(ckey, computerid, reason, bannedby, temp, minutes, JOB_ALT_VIROLOGIST) return 1 GLOB.banlistjob.cd = "/base" if ( GLOB.banlistjob.dir.Find("[ckey][computerid][rank]") ) to_chat(usr, span_red("Banjob already exists.")) return 0 else GLOB.banlistjob.dir.Add("[ckey][computerid][rank]") GLOB.banlistjob.cd = "/base/[ckey][computerid][rank]" GLOB.banlistjob["key"] << ckey GLOB.banlistjob["id"] << computerid GLOB.banlistjob["rank"] << rank GLOB.banlistjob["reason"] << reason GLOB.banlistjob["bannedby"] << bannedby GLOB.banlistjob["temp"] << temp if (temp) GLOB.banlistjob["minutes"] << bantimestamp admin_action_message(bannedby, ckey, "jobbanned-"+rank, reason, temp ? minutes : -1) //VOREStation Add return 1 /proc/RemoveBanjob(foldername) var/key var/id var/rank GLOB.banlistjob.cd = "/base/[foldername]" GLOB.banlistjob["key"] >> key GLOB.banlistjob["id"] >> id GLOB.banlistjob["rank"] >> rank GLOB.banlistjob.cd = "/base" if (!GLOB.banlistjob.dir.Remove(foldername)) return 0 if(!usr) log_admin("Banjob Expired: [key]") message_admins("Banjob Expired: [key]") else log_admin("[key_name_admin(usr)] unjobbanned [key] from [rank]") message_admins("[key_name_admin(usr)] unjobbanned:[key] from [rank]") ban_unban_log_save("[key_name_admin(usr)] unjobbanned [key] from [rank]") feedback_inc("ban_job_unban",1) feedback_add_details("ban_job_unban","- [rank]") for (var/A in GLOB.banlistjob.dir) GLOB.banlistjob.cd = "/base/[A]" if ((key == GLOB.banlistjob["key"] || id == GLOB.banlistjob["id"]) && (rank == GLOB.banlistjob["rank"])) GLOB.banlistjob.cd = "/base" GLOB.banlistjob.dir.Remove(A) continue admin_action_message(usr.key, key, "unjobbanned-"+rank, "\[Unban\]", 0) //VOREStation Add return 1 /proc/GetBanExpjob(minutes as num) UpdateTime() var/exp = minutes - CMinutes if (exp <= 0) return 0 else var/timeleftstring if (exp >= 1440) //1440 = 1 day in minutes timeleftstring = "[round(exp / 1440, 0.1)] Days" else if (exp >= 60) //60 = 1 hour in minutes timeleftstring = "[round(exp / 60, 0.1)] Hours" else timeleftstring = "[exp] Minutes" return timeleftstring /datum/admins/proc/unjobbanpanel() var/count = 0 var/dat //var/dat = "
| (U) Key: [GLOB.banlistjob["key"]] Rank: [GLOB.banlistjob["rank"]] | ([GLOB.banlistjob["temp"] ? "[GetBanExpjob(GLOB.banlistjob["minutes"]) ? GetBanExpjob(GLOB.banlistjob["minutes"]) : "Removal pending" ]" : "Permaban"]) | (By: [GLOB.banlistjob["bannedby"]]) | (Reason: [GLOB.banlistjob["reason"]]) |