diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 3ce2ab60991..3bf5fa341d7 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -53,6 +53,8 @@ #define COMSIG_ALARM_FIRE(alarm_type) "!alarm_fire [alarm_type]" /// An alarm of some form was cleared (datum/alarm_handler/source, alarm_type, area/source_area) #define COMSIG_ALARM_CLEAR(alarm_type) "!alarm_clear [alarm_type]" +///global mob logged in signal! (/mob/added_player) +#define COMSIG_GLOB_MOB_LOGGED_IN "!mob_logged_in" /// signals from globally accessible objects diff --git a/code/modules/events/rpgtitles.dm b/code/modules/events/rpgtitles.dm new file mode 100644 index 00000000000..edde7b87bc0 --- /dev/null +++ b/code/modules/events/rpgtitles.dm @@ -0,0 +1,116 @@ +/datum/round_event_control/wizard/rpgtitles //its time to adventure on boys + name = "RPG Titles" + weight = 3 + typepath = /datum/round_event/wizard/rpgtitles + max_occurrences = 1 + earliest_start = 0 MINUTES + +/datum/round_event/wizard/rpgtitles/start() + GLOB.rpgtitle_controller = new /datum/rpgtitle_controller + +///Holds the global datum for rpgtitle, so anywhere may check for its existence (it signals into whatever it needs to modify, so it shouldn't require fetching) +GLOBAL_DATUM(rpgtitle_controller, /datum/rpgtitle_controller) + +/datum/rpgtitle_controller + +/datum/rpgtitle_controller/New() + . = ..() + RegisterSignal(SSdcs, COMSIG_GLOB_CREWMEMBER_JOINED, .proc/on_crewmember_join) + RegisterSignal(SSdcs, COMSIG_GLOB_MOB_LOGGED_IN, .proc/on_mob_login) + handle_current_jobs() + +/datum/rpgtitle_controller/Destroy(force) + UnregisterSignal(SSdcs, list(COMSIG_GLOB_CREWMEMBER_JOINED, COMSIG_GLOB_MOB_LOGGED_IN)) + . = ..() + +///signal sent by a player list expanding +/datum/rpgtitle_controller/proc/on_mob_login(datum/source, mob/new_login) + SIGNAL_HANDLER + if(isliving(new_login)) + var/mob/living/living_login = new_login + if(living_login.stat != DEAD && !living_login.maptext) + on_crewmember_join(source, living_login, living_login.mind.assigned_role.title) + +///signal sent by a crewmember joining +/datum/rpgtitle_controller/proc/on_crewmember_join(datum/source, mob/living/new_crewmember, rank) + SIGNAL_HANDLER + + var/datum/job/job = SSjob.GetJob(rank) + + //we must prepare for the mother of all strings + new_crewmember.maptext_height = 32 + new_crewmember.maptext_width = 80 + new_crewmember.maptext_x = -24 + new_crewmember.maptext_y = 32 + + //list of lists involving strings related to a biotype flag, their position in the list equal to the position they were defined as bitflags. + //the first list entry is an adjective, the second is a noun. if null, we don't want to describe this biotype, and so even if the mob + //has that biotype, the null is skipped + var/list/biotype_titles = list( + null, //organic is too common to be a descriptor + null, //mineral is only used with carbons + list("Mechanical", "Robot"), + list("Reanimated", "Undead"), + list("Bipedal", "Humanoid"), + list("Insectile", "Bug"), + list("Beastly", "Beast"), + list("Monstrous", "Megafauna"), + list("Reptilian", "Lizard"), + list("Paranormal", "Spirit"), + list("Flowering", "Plant"), + ) + + var/maptext_title = "" + + if(!(isanimal(new_crewmember) || isbasicmob(new_crewmember))) + maptext_title = job.rpg_title || job.title + else + //this following code can only be described as bitflag black magic. ye be warned. i tried to comment excessively to explain what the fuck is happening + var/list/applicable_biotypes = list() + for(var/biotype_flag_position in 0 to 10) + var/biotype_flag = (1 << biotype_flag_position) + if(new_crewmember.mob_biotypes & biotype_flag)//they have this flag + if(biotype_titles[biotype_flag_position+1]) //if there is a fitting verbage for this biotype... + applicable_biotypes += list(biotype_titles[biotype_flag_position+1])//...add it to the list of applicable biotypes + if(!applicable_biotypes.len) //there will never be an adjective anomaly because anomaly is only added when there are no choices + applicable_biotypes += list(null, "Anomaly") + + //shuffle it to allow for some cool combinations of adjectives and nouns + applicable_biotypes = shuffle(applicable_biotypes) + + //okay, out of the black magic area we now have a list of things to describe our mob, yay!!! + for(var/iteration in 1 to applicable_biotypes.len) + if(iteration == applicable_biotypes.len) //last descriptor to add, make it the noun + maptext_title += applicable_biotypes[iteration][2] + break + //there are more descriptors, make it an adjective + maptext_title += "[applicable_biotypes[iteration][1]] " + + //mother of all strings... + new_crewmember.maptext = "Level [rand(1, 100)] [maptext_title]" + + if(!(job.job_flags & JOB_CREW_MEMBER)) + return + + var/obj/item/card/id/card = new_crewmember.get_idcard() + if(!card)//since this is called on current crew, some may not have IDs. shame on them for missing out! + return + card.name = "adventuring license" + card.desc = "A written license from the adventuring guild. You're good to go!" + card.icon_state = "card_rpg" + card.assignment = job.rpg_title + if(istype(card, /obj/item/card/id/advanced)) + var/obj/item/card/id/advanced/advanced_card = card + advanced_card.assigned_icon_state = "rpg_assigned" + card.update_label() + card.update_icon() + +/** + * ### handle_current_jobs + * + * Calls on_crewmember_join on every crewmember + * If the item it is giving fantasy to is a storage item, there's a chance it'll drop in an item fortification scroll. neat! + */ +/datum/rpgtitle_controller/proc/handle_current_jobs() + for(var/mob/living/player as anything in GLOB.alive_player_list) + on_crewmember_join(SSdcs, player, player.mind?.assigned_role.title) diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index 34a65c52513..c1ddf2552fa 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -102,6 +102,9 @@ /// String. If set to a non-empty one, it will be the key for the policy text value to show this role on spawn. var/policy_index = "" + ///RPG job names, for the memes + var/rpg_title + /datum/job/New() . = ..() diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index 1e6757ec836..505f4f5b8e7 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -30,7 +30,7 @@ Assistant ) job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS - + rpg_title = "Lout" /datum/outfit/job/assistant name = "Assistant" diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm index 1f76660223a..483df58feb5 100644 --- a/code/modules/jobs/job_types/atmospheric_technician.dm +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -27,7 +27,7 @@ family_heirlooms = list(/obj/item/lighter, /obj/item/lighter/greyscale, /obj/item/storage/box/matches) job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS - + rpg_title = "Aeromancer" /datum/outfit/job/atmos name = "Atmospheric Technician" diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm index f2bda2fcf94..4f7bb96e051 100644 --- a/code/modules/jobs/job_types/bartender.dm +++ b/code/modules/jobs/job_types/bartender.dm @@ -29,7 +29,7 @@ ) job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS - + rpg_title = "Tavernkeeper" /datum/job/bartender/award_service(client/winner, award) winner.give_award(award, winner.mob) diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm index b36fef01d97..c7d4ff730a6 100644 --- a/code/modules/jobs/job_types/botanist.dm +++ b/code/modules/jobs/job_types/botanist.dm @@ -31,7 +31,7 @@ ) job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS - + rpg_title = "Gardener" /datum/outfit/job/botanist name = "Botanist" diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 5f0566d05fd..493940a7e34 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -36,6 +36,7 @@ ) job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS + rpg_title = "Star Duke" voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index a86c19c9b68..6c9233ffc7a 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -29,7 +29,7 @@ /obj/item/stack/sheet/mineral/diamond = 3, /obj/item/gun/ballistic/rifle/boltaction = 1 ) - + rpg_title = "Merchantman" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index ef4053654d0..9129b63102f 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -28,7 +28,7 @@ /obj/item/toy/plush/narplush = 2, /obj/item/toy/plush/ratplush = 1 ) - + rpg_title = "Paladin" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS voice_of_god_power = 2 //Chaplains are very good at speaking with the voice of god diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index 86faed53073..b697ed37812 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -32,7 +32,7 @@ /obj/item/reagent_containers/glass/bottle/leadacetate = 5, /obj/item/paper/secretrecipe = 1 ) - + rpg_title = "Alchemist" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index 6f9356caba1..1b984e50dfb 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -40,7 +40,7 @@ /obj/item/stack/sheet/mineral/gold = 15, /obj/effect/spawner/random/engineering/tool_advanced = 3 ) - + rpg_title = "Head Crystallomancer" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index 178b8be5116..32fcc2425f5 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -37,7 +37,7 @@ /obj/effect/spawner/random/medical/surgery_tool_alien = 1 ) family_heirlooms = list(/obj/item/storage/firstaid/ancient/heirloom) - + rpg_title = "High Cleric" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index 4a60c1e87c7..0999d4747e4 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -30,7 +30,7 @@ ) family_heirlooms = list(/obj/item/bikehorn/golden) - + rpg_title = "Jester" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS veteran_only = TRUE // SKYRAT EDIT ADDITION diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm index 19c0390a4ad..ed5d6df9341 100644 --- a/code/modules/jobs/job_types/cook.dm +++ b/code/modules/jobs/job_types/cook.dm @@ -26,7 +26,7 @@ ) family_heirlooms = list(/obj/item/reagent_containers/food/condiment/saltshaker, /obj/item/kitchen/rollingpin, /obj/item/clothing/head/chefhat) - + rpg_title = "Tavern Chef" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm index 518a0622ea8..9f0905040fe 100644 --- a/code/modules/jobs/job_types/curator.dm +++ b/code/modules/jobs/job_types/curator.dm @@ -24,7 +24,7 @@ job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS voice_of_god_silence_power = 3 - + rpg_title = "Veteran Adventurer" /datum/outfit/job/curator name = "Curator" diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index 33ca15237de..93041d0288c 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -38,7 +38,7 @@ ) family_heirlooms = list(/obj/item/reagent_containers/food/drinks/bottle/whiskey) - + rpg_title = "Thiefcatcher" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm index 0ba951a53c5..be34419a068 100644 --- a/code/modules/jobs/job_types/geneticist.dm +++ b/code/modules/jobs/job_types/geneticist.dm @@ -27,7 +27,7 @@ ) family_heirlooms = list(/obj/item/clothing/under/shorts/purple) - + rpg_title = "Genemancer" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index dcc50ffa200..63ca34c4e8e 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -37,7 +37,7 @@ ) family_heirlooms = list(/obj/item/reagent_containers/food/drinks/trophy/silver_cup) - + rpg_title = "Guild Questgiver" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index a0da8912a0f..c956f20eb1e 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -32,7 +32,7 @@ bounty_types = CIV_JOB_SEC family_heirlooms = list(/obj/item/book/manual/wiki/security_space_law) - + rpg_title = "Guard Leader" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm index 8873c8df79d..a6195b05316 100644 --- a/code/modules/jobs/job_types/janitor.dm +++ b/code/modules/jobs/job_types/janitor.dm @@ -26,7 +26,7 @@ /obj/item/storage/box/lights/mixed = 20, /obj/item/lightreplacer = 10 ) - + rpg_title = "Groundskeeper" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm index 5014773fa36..346908dfe68 100644 --- a/code/modules/jobs/job_types/lawyer.dm +++ b/code/modules/jobs/job_types/lawyer.dm @@ -21,7 +21,7 @@ departments_list = list( /datum/job_department/service, ) - + rpg_title = "Magistrate" family_heirlooms = list(/obj/item/gavelhammer, /obj/item/book/manual/wiki/security_space_law) job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index 02ccb063b6e..4a9048a7608 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -33,7 +33,7 @@ /obj/effect/spawner/random/medical/organs = 5, /obj/effect/spawner/random/medical/memeorgans = 1 ) - + rpg_title = "Cleric" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm index 3ead86904e9..d7cba73b8f3 100644 --- a/code/modules/jobs/job_types/mime.dm +++ b/code/modules/jobs/job_types/mime.dm @@ -27,7 +27,7 @@ /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing = 10, /obj/item/book/mimery = 1, ) - + rpg_title = "Fool" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS voice_of_god_power = 0.5 //Why are you speaking diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm index d57743e445f..3067b5a1fcf 100644 --- a/code/modules/jobs/job_types/paramedic.dm +++ b/code/modules/jobs/job_types/paramedic.dm @@ -32,7 +32,7 @@ /obj/item/reagent_containers/hypospray/medipen/penacid = 10, /obj/item/reagent_containers/hypospray/medipen/survival/luxury = 5 ) - + rpg_title = "Corpse Runner" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/prisoner.dm b/code/modules/jobs/job_types/prisoner.dm index a299f106307..1457647576d 100644 --- a/code/modules/jobs/job_types/prisoner.dm +++ b/code/modules/jobs/job_types/prisoner.dm @@ -20,7 +20,7 @@ ) family_heirlooms = list(/obj/item/pen/blue) - + rpg_title = "Defeated Miniboss" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/psychologist.dm b/code/modules/jobs/job_types/psychologist.dm index 6e1136c453a..ce198a83d23 100644 --- a/code/modules/jobs/job_types/psychologist.dm +++ b/code/modules/jobs/job_types/psychologist.dm @@ -28,7 +28,7 @@ /obj/item/storage/pill_bottle/happy = 5, /obj/item/gun/syringe = 1 ) - + rpg_title = "Snake Oil Salesman" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index f48069f0459..5cc83d416de 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -30,7 +30,7 @@ mail_goodies = list( /obj/item/circuitboard/machine/emitter = 3 ) - + rpg_title = "Steward" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index 89113076336..7a08bce1584 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -37,7 +37,7 @@ ) family_heirlooms = list(/obj/item/toy/plush/slimeplushie) - + rpg_title = "Archmagister" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm index 2d030e009bd..7007b6f4fcd 100644 --- a/code/modules/jobs/job_types/roboticist.dm +++ b/code/modules/jobs/job_types/roboticist.dm @@ -29,7 +29,7 @@ ) family_heirlooms = list(/obj/item/toy/plush/pkplush) - + rpg_title = "Necromancer" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm index b4437115d1b..a2841468730 100644 --- a/code/modules/jobs/job_types/scientist.dm +++ b/code/modules/jobs/job_types/scientist.dm @@ -29,7 +29,7 @@ /obj/item/disk/tech_disk/spaceloot = 2, /obj/item/camera_bug = 1 ) - + rpg_title = "Thaumaturgist" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index a252d7ab584..0bc23407eec 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -36,7 +36,7 @@ /obj/item/clothing/mask/whistle = 5, /obj/item/melee/baton/security/boomerang/loaded = 1 ) - + rpg_title = "Guard" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index ea3a056eea7..688aee46af6 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -21,7 +21,7 @@ ) family_heirlooms = list(/obj/item/pickaxe/mini, /obj/item/shovel) - + rpg_title = "Adventurer" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index 65e987e7bd7..95ff95acfcd 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -32,7 +32,7 @@ /obj/item/holosign_creator/engineering = 8, /obj/item/clothing/head/hardhat/red/upgraded = 1 ) - + rpg_title = "Crystallomancer" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/unassigned.dm b/code/modules/jobs/job_types/unassigned.dm index 58288770313..29d9a7bdc4f 100644 --- a/code/modules/jobs/job_types/unassigned.dm +++ b/code/modules/jobs/job_types/unassigned.dm @@ -6,3 +6,4 @@ /datum/job/unassigned title = "Unassigned Crewmember" + rpg_title = "Peasant" diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm index 047dbef89c2..72ab350c2e0 100644 --- a/code/modules/jobs/job_types/virologist.dm +++ b/code/modules/jobs/job_types/virologist.dm @@ -33,7 +33,7 @@ /obj/item/stack/sheet/mineral/plasma = 10, /obj/item/stack/sheet/mineral/uranium = 5 ) - + rpg_title = "Plague Doctor" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index a127f462b7b..80ac2546f33 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -37,7 +37,7 @@ /obj/item/storage/box/rubbershot = 10, /obj/item/storage/box/lethalshot = 5 ) - + rpg_title = "Jailor" job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index dc15ae7f6d7..422493cfdba 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -102,6 +102,8 @@ AddElement(/datum/element/weather_listener, /datum/weather/ash_storm, ZTRAIT_ASHSTORM, GLOB.ash_storm_sounds) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_MOB_LOGGED_IN, src) + return TRUE diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index ba72f1e8018..41a58680076 100644 Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 5fb357e2516..a7c90cce90b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2406,6 +2406,7 @@ #include "code\modules\events\prison_break.dm" #include "code\modules\events\processor_overload.dm" #include "code\modules\events\radiation_storm.dm" +#include "code\modules\events\rpgtitles.dm" #include "code\modules\events\sentience.dm" #include "code\modules\events\shuttle_catastrophe.dm" #include "code\modules\events\shuttle_insurance.dm"