From 913fc42816837f4958568b3c9107526d5fcff9ef Mon Sep 17 00:00:00 2001 From: rhailrake <49613070+rhailrake@users.noreply.github.com> Date: Fri, 10 Nov 2023 16:01:59 +0000 Subject: [PATCH] Meaty-Ore Idea (#550) * qwe * yeah --- .../White/MeatyOre/MeatyOreStoreSystem.cs | 56 ++++++++++++------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/Content.Server/White/MeatyOre/MeatyOreStoreSystem.cs b/Content.Server/White/MeatyOre/MeatyOreStoreSystem.cs index e75015cf41..920bbe3df8 100644 --- a/Content.Server/White/MeatyOre/MeatyOreStoreSystem.cs +++ b/Content.Server/White/MeatyOre/MeatyOreStoreSystem.cs @@ -15,7 +15,8 @@ using Content.Server.White.Sponsors; using Content.Shared.FixedPoint; using Content.Shared.GameTicking; using Content.Shared.Humanoid; - using Content.Shared.Mind.Components; +using Content.Shared.Mind; +using Content.Shared.Mind.Components; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Roles.Jobs; @@ -80,27 +81,16 @@ public sealed class MeatyOreStoreSystem : EntitySystem private void MeatyOreVerbs(GetVerbsEvent ev) { - if(!EntityManager.TryGetComponent(ev.User, out var actorComponent)) + if (!EntityManager.TryGetComponent(ev.User, out var actorComponent)) return; - if(!_sponsorsManager.TryGetInfo(actorComponent.PlayerSession.UserId, out _)) + + if (!_sponsorsManager.TryGetInfo(actorComponent.PlayerSession.UserId, out _)) return; - if(!HasComp(ev.Target)) + + if (!HasComp(ev.Target)) return; - if(!TryComp(ev.Target, out var state) || state.CurrentState != MobState.Alive) - return; - if(!TryGetStore(actorComponent.PlayerSession, out var store)) - return; - if (!_mindSystem.TryGetMind(ev.Target, out var mindId, out var mind)) - return; - if (_roleSystem.MindIsAntagonist(mindId)) - return; - if (mind.Session == null) - return; - if (!_jobSystem.CanBeAntag(mind.Session)) - return; - if (!store.Balance.TryGetValue("MeatyOreCoin", out var currency)) - return; - if(currency - 10 < 0) + + if (!TryGetStore(actorComponent.PlayerSession, out var store)) return; var verb = new Verb() @@ -153,8 +143,10 @@ public sealed class MeatyOreStoreSystem : EntitySystem if(!playerEntity.HasValue) return; + if(!HasComp(playerEntity.Value)) return; + if(!TryGetStore(playerSession!, out var storeComponent)) return; @@ -207,17 +199,40 @@ public sealed class MeatyOreStoreSystem : EntitySystem { if (!EntityManager.TryGetComponent(user, out var userActorComponent)) return; + if (!EntityManager.TryGetComponent(target, out var targetActorComponent)) return; + if (!TryComp(target, out var targetMind) || + !TryComp(targetMind.Mind, out MindComponent? mindComponent) || mindComponent.Session == null) + { + return; + } + + + var fake = _roleSystem.MindIsAntagonist(targetMind.Mind.Value) || _jobSystem.CanBeAntag(mindComponent.Session); + var ckey = userActorComponent.PlayerSession.Name; var grant = user == target; var result = await GrantAntagonist(ckey, !grant); if (result) { - _traitorRuleSystem.MakeTraitor(targetActorComponent.PlayerSession); _storeSystem.TryAddCurrency(new Dictionary { { MeatyOreCurrencyPrototype, -10 } }, store.Owner, store); + + if (!fake) + { + _traitorRuleSystem.MakeTraitor(targetActorComponent.PlayerSession); + + var msg = $"Игрок с сикеем {ckey} выдал антажку {targetActorComponent.PlayerSession.Name}"; + _chatManager.SendAdminAnnouncement(msg); + } + else + { + var msg = $"Игрок с сикеем {ckey} попытался выдать антажку {targetActorComponent.PlayerSession.Name}. Но обосрался. Была выдана фейковая антажка."; + _chatManager.SendAdminAnnouncement(msg); + } + } else { @@ -229,7 +244,6 @@ public sealed class MeatyOreStoreSystem : EntitySystem } } - private async Task GrantAntagonist(string ckey, bool isFriend) { var result = false;