Meaty-Ore Idea (#550)

* qwe

* yeah
This commit is contained in:
rhailrake
2023-11-10 16:01:59 +00:00
committed by Aviu00
parent be96831895
commit 913fc42816

View File

@@ -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<Verb> ev)
{
if(!EntityManager.TryGetComponent<ActorComponent>(ev.User, out var actorComponent))
if (!EntityManager.TryGetComponent<ActorComponent>(ev.User, out var actorComponent))
return;
if(!_sponsorsManager.TryGetInfo(actorComponent.PlayerSession.UserId, out _))
if (!_sponsorsManager.TryGetInfo(actorComponent.PlayerSession.UserId, out _))
return;
if(!HasComp<HumanoidAppearanceComponent>(ev.Target))
if (!HasComp<HumanoidAppearanceComponent>(ev.Target))
return;
if(!TryComp<MobStateComponent>(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<HumanoidAppearanceComponent>(playerEntity.Value))
return;
if(!TryGetStore(playerSession!, out var storeComponent))
return;
@@ -207,17 +199,40 @@ public sealed class MeatyOreStoreSystem : EntitySystem
{
if (!EntityManager.TryGetComponent<ActorComponent>(user, out var userActorComponent))
return;
if (!EntityManager.TryGetComponent<ActorComponent>(target, out var targetActorComponent))
return;
if (!TryComp<MindContainerComponent>(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<string, FixedPoint2> { { 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<bool> GrantAntagonist(string ckey, bool isFriend)
{
var result = false;