diff --git a/Content.IntegrationTests/Tests/GameRules/AntagPreferenceTest.cs b/Content.IntegrationTests/Tests/GameRules/AntagPreferenceTest.cs index b215584c57..0425907386 100644 --- a/Content.IntegrationTests/Tests/GameRules/AntagPreferenceTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/AntagPreferenceTest.cs @@ -15,7 +15,7 @@ namespace Content.IntegrationTests.Tests.GameRules; // Lets not let that happen again. [TestFixture] public sealed class AntagPreferenceTest -{ +{/* CP14 disabled [Test] public async Task TestLobbyPlayersValid() { @@ -72,5 +72,5 @@ public sealed class AntagPreferenceTest await server.WaitPost(() => server.EntMan.DeleteEntity(uid)); await pair.CleanReturnAsync(); - } + }*/ } diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs index 28918e960e..860df342de 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs @@ -1,3 +1,4 @@ +using Content.Server._CP14.Roles; using Content.Server.Administration.Commands; using Content.Server.Antag; using Content.Server.GameTicking.Rules.Components; @@ -52,6 +53,23 @@ public sealed partial class AdminVerbSystem var targetPlayer = targetActor.PlayerSession; + + Verb CP14Bandit = new() + { + Text = Loc.GetString("cp14-admin-verb-text-make-bandit"), + Category = VerbCategory.Antag, + Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Clothing/Hands/Gloves/Color/black.rsi"), + "icon"), //TODO + Act = () => + { + //_antag.ForceMakeAntag(targetPlayer, "CP14Bandit"); //TODO + }, + Impact = LogImpact.High, + Message = Loc.GetString("cp14-admin-verb-make-bandit"), + }; + args.Verbs.Add(CP14Bandit); + + /* CP14 disable default antags Verb traitor = new() { Text = Loc.GetString("admin-verb-text-make-traitor"), @@ -151,5 +169,6 @@ public sealed partial class AdminVerbSystem Message = Loc.GetString("admin-verb-make-thief"), }; args.Verbs.Add(thief); + */ } } diff --git a/Content.Server/_CP14/Roles/CP14BanditRoleComponent.cs b/Content.Server/_CP14/Roles/CP14BanditRoleComponent.cs new file mode 100644 index 0000000000..fd5138a741 --- /dev/null +++ b/Content.Server/_CP14/Roles/CP14BanditRoleComponent.cs @@ -0,0 +1,11 @@ +using Content.Shared.Roles; + +namespace Content.Server._CP14.Roles; + +/// +/// Added to mind role entities to tag that they are a bandit. +/// +[RegisterComponent] +public sealed partial class CP14BanditRoleComponent : BaseMindRoleComponent +{ +} diff --git a/Resources/Audio/_CP14/Ambience/Antag/attributions.yml b/Resources/Audio/_CP14/Ambience/Antag/attributions.yml new file mode 100644 index 0000000000..bd0ddd399d --- /dev/null +++ b/Resources/Audio/_CP14/Ambience/Antag/attributions.yml @@ -0,0 +1,4 @@ +- files: ["bandit_start.ogg"] + license: "CC-BY-4.0" + copyright: 'by Victor_Natas of Freesound.org' + source: "https://freesound.org/people/Victor_Natas/sounds/612156/" \ No newline at end of file diff --git a/Resources/Audio/_CP14/Ambience/Antag/bandit_start.ogg b/Resources/Audio/_CP14/Ambience/Antag/bandit_start.ogg new file mode 100644 index 0000000000..1f6f0fed67 Binary files /dev/null and b/Resources/Audio/_CP14/Ambience/Antag/bandit_start.ogg differ diff --git a/Resources/Locale/en-US/_CP14/administration/antag.ftl b/Resources/Locale/en-US/_CP14/administration/antag.ftl new file mode 100644 index 0000000000..ebd3486e9d --- /dev/null +++ b/Resources/Locale/en-US/_CP14/administration/antag.ftl @@ -0,0 +1,2 @@ +cp14-admin-verb-text-make-bandit = Make bandit +cp14-admin-verb-make-bandit = Add to target antagonist role “Bandit” \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/antags/antags.ftl b/Resources/Locale/en-US/_CP14/antags/antags.ftl new file mode 100644 index 0000000000..090f9adda8 --- /dev/null +++ b/Resources/Locale/en-US/_CP14/antags/antags.ftl @@ -0,0 +1,3 @@ +cp14-roles-antag-bandit-name = Bandit +cp14-roles-antag-bandit-objective = Defy morality and the law. You need money. A lot of money, and you can earn it in any way you want, including robbery and murder. +cp14-roles-antag-bandit-briefing = The cruel past has opened your eyes: the creatures around you are weaklings trying to cling to so-called “morality”. That word is foreign to you. You know that murder or robbery is just one of the tools to achieve your goals. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/administration/antag.ftl b/Resources/Locale/ru-RU/_CP14/administration/antag.ftl new file mode 100644 index 0000000000..bbf8794b0e --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/administration/antag.ftl @@ -0,0 +1,2 @@ +cp14-admin-verb-text-make-bandit = Сделать бандитом +cp14-admin-verb-make-bandit = Добавить цели роль антагониста "Бандит" \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/antags/antags.ftl b/Resources/Locale/ru-RU/_CP14/antags/antags.ftl new file mode 100644 index 0000000000..f6f4f0956e --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/antags/antags.ftl @@ -0,0 +1,3 @@ +cp14-roles-antag-bandit-name = Бандит +cp14-roles-antag-bandit-objective = Отриньте моральные нормы и закон. Вам нужны деньги. Много денег, и вы можете зарабатывать их любыми способами, включая грабежи, разбой и убийства. +cp14-roles-antag-bandit-briefing = Жестокое прошлое открыло вам глаза: окружающие вас существа - слабаки, старающиеся держаться за так называемую "мораль". Вам это слово чуждо. Вы знаете, что убийство или грабежи - это просто один из инструментов достижения ваших целей. \ No newline at end of file diff --git a/Resources/Prototypes/Roles/Antags/nukeops.yml b/Resources/Prototypes/Roles/Antags/nukeops.yml index 8f1094802c..67e2ed122d 100644 --- a/Resources/Prototypes/Roles/Antags/nukeops.yml +++ b/Resources/Prototypes/Roles/Antags/nukeops.yml @@ -2,7 +2,7 @@ id: Nukeops name: roles-antag-nuclear-operative-name antagonist: true - setPreference: true + setPreference: false #CP14 objective: roles-antag-nuclear-operative-objective requirements: - !type:OverallPlaytimeRequirement @@ -13,7 +13,7 @@ id: NukeopsMedic name: roles-antag-nuclear-operative-agent-name antagonist: true - setPreference: true + setPreference: false #CP14 objective: roles-antag-nuclear-operative-agent-objective requirements: - !type:OverallPlaytimeRequirement @@ -27,7 +27,7 @@ id: NukeopsCommander name: roles-antag-nuclear-operative-commander-name antagonist: true - setPreference: true + setPreference: false #CP14 objective: roles-antag-nuclear-operative-commander-objective requirements: - !type:OverallPlaytimeRequirement diff --git a/Resources/Prototypes/Roles/Antags/revolutionary.yml b/Resources/Prototypes/Roles/Antags/revolutionary.yml index 502a68ea9e..b9f841828b 100644 --- a/Resources/Prototypes/Roles/Antags/revolutionary.yml +++ b/Resources/Prototypes/Roles/Antags/revolutionary.yml @@ -2,7 +2,7 @@ id: HeadRev name: roles-antag-rev-head-name antagonist: true - setPreference: true + setPreference: false #CP14 objective: roles-antag-rev-head-objective guides: [ Revolutionaries ] diff --git a/Resources/Prototypes/Roles/Antags/thief.yml b/Resources/Prototypes/Roles/Antags/thief.yml index 993b866023..1c972cf23b 100644 --- a/Resources/Prototypes/Roles/Antags/thief.yml +++ b/Resources/Prototypes/Roles/Antags/thief.yml @@ -2,7 +2,7 @@ id: Thief name: roles-antag-thief-name antagonist: true - setPreference: true + setPreference: false #CP14 objective: roles-antag-thief-objective guides: [ Thieves ] diff --git a/Resources/Prototypes/Roles/Antags/traitor.yml b/Resources/Prototypes/Roles/Antags/traitor.yml index 6fc5314629..8284526e00 100644 --- a/Resources/Prototypes/Roles/Antags/traitor.yml +++ b/Resources/Prototypes/Roles/Antags/traitor.yml @@ -2,7 +2,7 @@ id: Traitor name: roles-antag-syndicate-agent-name antagonist: true - setPreference: true + setPreference: false #CP14 objective: roles-antag-syndicate-agent-objective guides: [ Traitors ] @@ -10,7 +10,7 @@ id: TraitorSleeper name: roles-antag-syndicate-agent-sleeper-name antagonist: true - setPreference: true + setPreference: false #CP14 objective: roles-antag-syndicate-agent-sleeper-objective guides: [ Traitors ] diff --git a/Resources/Prototypes/Roles/Antags/zombie.yml b/Resources/Prototypes/Roles/Antags/zombie.yml index bc3c2d7f22..33e3dd3994 100644 --- a/Resources/Prototypes/Roles/Antags/zombie.yml +++ b/Resources/Prototypes/Roles/Antags/zombie.yml @@ -2,7 +2,7 @@ id: InitialInfected name: roles-antag-initial-infected-name antagonist: true - setPreference: true + setPreference: false #CP14 objective: roles-antag-initial-infected-objective guides: [ Zombies ] diff --git a/Resources/Prototypes/_CP14/Entities/keys.yml b/Resources/Prototypes/_CP14/Entities/keys.yml index 856315a921..de1e855004 100644 --- a/Resources/Prototypes/_CP14/Entities/keys.yml +++ b/Resources/Prototypes/_CP14/Entities/keys.yml @@ -28,6 +28,8 @@ description: A thief's tool that, with proper skill and skill, allows you to pick any lock. categories: [ ForkFiltered ] components: + - type: Item + storedRotation: -90 - type: Sprite sprite: _CP14/Objects/keys.rsi state: lockpick diff --git a/Resources/Prototypes/_CP14/GameRules/roundstart.yml b/Resources/Prototypes/_CP14/GameRules/roundstart.yml index 5de4f24ec8..6a61842c6d 100644 --- a/Resources/Prototypes/_CP14/GameRules/roundstart.yml +++ b/Resources/Prototypes/_CP14/GameRules/roundstart.yml @@ -10,7 +10,6 @@ - type: entity id: CP14RoundObjectivesRule parent: CP14BaseGameRule - categories: [ HideSpawnMenu ] components: - type: CP14CommonObjectivesRule departmentObjectives: @@ -20,4 +19,26 @@ departmentObjectives: CP14Mercenary: - CP14PersonalCurrencyCollectObjectiveGroup - \ No newline at end of file + +- type: entity + id: CP14BanditsRule + parent: CP14BaseGameRule + components: + - type: GameRule + minPlayers: 0 #Increase when bigger online + - type: AntagSelection + definitions: + - prefRoles: [ CP14Bandit ] + startingGear: CP14BanditGear + max: 8 + playerRatio: 10 + blacklist: + components: + - AntagImmune + lateJoinAdditional: true + mindRoles: + - CP14MindRoleBandit + briefing: + text: cp14-roles-antag-bandit-briefing + color: "#cc3010" + sound: "/Audio/_CP14/Ambience/Antag/bandit_start.ogg" \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Antags/Bandit.yml b/Resources/Prototypes/_CP14/Roles/Antags/Bandit.yml new file mode 100644 index 0000000000..a5c322ae4b --- /dev/null +++ b/Resources/Prototypes/_CP14/Roles/Antags/Bandit.yml @@ -0,0 +1,32 @@ +- type: antag + id: CP14Bandit + name: cp14-roles-antag-bandit-name + antagonist: true + setPreference: true + objective: cp14-roles-antag-bandit-objective + requirements: + - !type:OverallPlaytimeRequirement + time: 3600 # 1h + #guides: TODO + +- type: startingGear + id: CP14BanditGear + storage: + back: + - CP14BaseLockpick + - CP14BaseLockpick + - CP14BaseLockpick + +- type: entity + parent: BaseMindRoleAntag + id: CP14MindRoleBandit + categories: [ ForkFiltered ] + name: Bandit Role +# description: cp14-roles-antag-bandit-objective + components: + - type: MindRole + antagPrototype: CP14Bandit + exclusiveAntag: true + - type: CP14BanditRole + - type: RoleBriefing + briefing: cp14-roles-antag-bandit-briefing \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/game_presets.yml b/Resources/Prototypes/_CP14/game_presets.yml index e9e60bd491..a40bcb5b9e 100644 --- a/Resources/Prototypes/_CP14/game_presets.yml +++ b/Resources/Prototypes/_CP14/game_presets.yml @@ -10,14 +10,15 @@ rules: - Secret -#- type: gamePreset -# id: CP14ResourceHarvesting -# name: cp14-gamepreset-resource-harvest -# description: cp14-gamepreset-resource-harvest-desc -# showInVote: true -# cP14Allowed: true -# rules: -# - CP14ResourceHarvesting +- type: gamePreset + id: CP14Greenshift + name: greenshift-title + description: greenshift-description + showInVote: true + cP14Allowed: true + rules: + - CP14BanditsRule + - CP14RoundObjectivesRule - type: gamePreset id: CP14Sandbox @@ -26,6 +27,8 @@ name: sandbox-title description: sandbox-description showInVote: true # For playtest period only + cP14Allowed: true rules: - Sandbox + - CP14BanditsRule - CP14RoundObjectivesRule \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/secret_weights.yml b/Resources/Prototypes/_CP14/secret_weights.yml index 7b4a97863c..1ab1a74b9f 100644 --- a/Resources/Prototypes/_CP14/secret_weights.yml +++ b/Resources/Prototypes/_CP14/secret_weights.yml @@ -1,4 +1,5 @@ - type: weightedRandom id: Secret weights: - CP14Sandbox: 1 \ No newline at end of file + CP14Sandbox: 0.5 + CP14Greenshift: 0.5 \ No newline at end of file