From 2c8ecdab3fa7f672a99843ca999b941051a63261 Mon Sep 17 00:00:00 2001 From: iwishforducks <65363339+iwishforducks@users.noreply.github.com> Date: Wed, 3 May 2023 11:50:45 -0400 Subject: [PATCH] Stowaway Changelings (Latejoin Changelings) (#74670) ## About The Pull Request Adds a latejoin form of Changeling flavored as a stowaway. ## Why It's Good For The Game We don't have a latejoin form of Changelings. It ups the paranoia that anyone can be a Changeling, latejoin or not. They're also one of the few non-progression antagonists which would work perfectly as a late join. ## Changelog :cl: add: Stowaway Changelings will now appear as a late join form of Changeling. /:cl: --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> --- code/__DEFINES/role_preferences.dm | 2 ++ .../dynamic/dynamic_rulesets_latejoin.dm | 32 ++++++++++++++++++ ...eenshot_antag_icons_stowawaychangeling.png | Bin 0 -> 885 bytes config/dynamic.json | 4 +++ .../antagonists/stowawaychangeling.ts | 18 ++++++++++ 5 files changed, 56 insertions(+) create mode 100644 code/modules/unit_tests/screenshots/screenshot_antag_icons_stowawaychangeling.png create mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/stowawaychangeling.ts diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index 13dbbdf78e2..a57d9204549 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -42,6 +42,7 @@ #define ROLE_HERETIC_SMUGGLER "Heretic Smuggler" #define ROLE_PROVOCATEUR "Provocateur" #define ROLE_SYNDICATE_INFILTRATOR "Syndicate Infiltrator" +#define ROLE_STOWAWAY_CHANGELING "Stowaway Changeling" // Other roles #define ROLE_SYNDICATE "Syndicate" @@ -141,6 +142,7 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_HERETIC_SMUGGLER = 0, ROLE_PROVOCATEUR = 14, ROLE_SYNDICATE_INFILTRATOR = 0, + ROLE_STOWAWAY_CHANGELING = 0, // I'm not too sure why these are here, but they're not moving. ROLE_PAI = 0, diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index 6ceeb517d54..7b9374f4fe3 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -216,3 +216,35 @@ new_heretic.knowledge_points = min(new_heretic.knowledge_points, 5) return TRUE + +/// Ruleset for latejoin changelings +/datum/dynamic_ruleset/latejoin/stowaway_changeling + name = "Stowaway Changeling" + antag_datum = /datum/antagonist/changeling + antag_flag = ROLE_STOWAWAY_CHANGELING + antag_flag_override = ROLE_CHANGELING + protected_roles = list( + JOB_CAPTAIN, + JOB_DETECTIVE, + JOB_HEAD_OF_PERSONNEL, + JOB_HEAD_OF_SECURITY, + JOB_PRISONER, + JOB_SECURITY_OFFICER, + JOB_WARDEN, + ) + restricted_roles = list( + JOB_AI, + JOB_CYBORG, + ) + required_candidates = 1 + weight = 2 + cost = 12 + requirements = list(101,101,40,40,20,20,10,10,10,10) + repeatable = TRUE + +/datum/dynamic_ruleset/latejoin/stowaway_changeling/execute() + var/mob/picked_mob = pick(candidates) + assigned += picked_mob.mind + picked_mob.mind.special_role = antag_flag + picked_mob.mind.add_antag_datum(antag_datum) + return TRUE diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_stowawaychangeling.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_stowawaychangeling.png new file mode 100644 index 0000000000000000000000000000000000000000..712e7f1a0ecb6ede80015c95dab0eacc2d6af41b GIT binary patch literal 885 zcmV-*1B(2KP)jfi{j$q+Mbg6(Z&D( z0RQ08Y%ecWRaO7YGvTkMHa0fAdvPQrB$hG&9v&V)KR?h|0P4TA78Vw!Iu_Ae8~*?R z=963*85x0QLnGb6Lnnk#EjBM7VLT;fKPSwYGh16*Q#2xadU`-|HX#5200DGT zPE!Ct=GbNc003lqR9JLGWpiV4X>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5f zFwryM;w;ZhDainGEX}w$Gg33tGfE(w;*!LYR3KAHiHkEOv#1!zH00t;D@x2wg|L+s zT>V_YCISGS$rvAshC*oo00JFJL_t(&f$f-KbJ9={MO%s@C`zd@MpLaZT2WB)|Norl z&R(aE&Xgdr4t39$N2Z-UGr7Ed`#3pCk|Y_7(;HIoF9cK_!C8=kyB3^AbyXgZ#}6O{ zzwi(!F3)5#c?45P!CeVd+zm+kfPl$)JOdn$Aq77qHy-f>=JWYe7$S`n?Bp3N7K?LO zE|(YZ9EzfF)+zY=f)`Mhr34qjOJI|c^L&WCcH9CL*IHFo84@k8Am0DM0i<9b36APK zP`cBAKTHoj8jfG^8b(1GsH7crU0=dMojV0Pi@yPuvzYGQfSe7QBO|X;k$mK{!T!^DZvWd+^Rk!H|NsZE-Xbu<+C( z(4bueuC9PBxD5US0bg~!ZmP=TcI^zb4>Z}iM_6E2-*GqveFURuJ1Xui(FS@_q&Osq z8E@vcv`5G(xE)`+S@iU~KqaaC0XQo4KUWSLc2>U^0$=%9xF0V*0*PqxKJW#Esjeo9 zYj7{p!cz(k7f@9L90FZyKEZ0W((*ZQWkt#-3H0rcACY>U3CAz+t=JiSf%ST=WwY6Q zg*s3=cBfqPRY)@^-uRB6MW>fMikER;*puNzk)pr=ZvPXjGYA zq{Y*