Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

йохохо и бутылка молока #857

Open
wants to merge 36 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
182ccf1
Merge branch 'master' of https://github.com/AdventureTimeSS14/space_s…
Ratyyy Nov 9, 2024
07a98b4
Merge branch 'master' of https://github.com/AdventureTimeSS14/space_s…
Ratyyy Nov 12, 2024
3cfa714
Merge branch 'master' of https://github.com/AdventureTimeSS14/space_s…
Ratyyy Nov 16, 2024
7e7ffc5
Merge branch 'master' of https://github.com/AdventureTimeSS14/space_s…
Ratyyy Nov 17, 2024
7b68e92
Merge branch 'master' of https://github.com/AdventureTimeSS14/space_s…
Ratyyy Nov 18, 2024
cbc2e87
пиратики
Ratyyy Nov 22, 2024
b94c4a2
Update uplink-catalog.ftl
Ratyyy Nov 29, 2024
0d1a84e
Update pirate_catalog.yml
Ratyyy Nov 29, 2024
5dc944c
Update misc_startinggear.yml
Ratyyy Nov 29, 2024
9433da6
Update pirate_catalog.yml
Ratyyy Nov 29, 2024
85f8e1e
Update events.yml
Ratyyy Nov 30, 2024
e4cc6e1
чиним всякое и добавляем пиратов к ниндзя
Ratyyy Nov 30, 2024
3c3dadc
Update uplink-catalog.ftl
Ratyyy Dec 1, 2024
eb89064
Update ghost-role-component.ftl
Ratyyy Dec 1, 2024
69f7b5b
Update pirate_catalog.yml
Ratyyy Dec 1, 2024
93f8f2f
mini locale grammar fix
jungarikjan Dec 1, 2024
6c8b000
mini locale grammar fix 2
jungarikjan Dec 1, 2024
77b9c48
Merge branch 'pirates' of https://github.com/AdventureTimeSS14/space_…
Ratyyy Dec 1, 2024
a7cd225
Update threats.yml
Ratyyy Dec 1, 2024
cfd2a87
mini locale fix 3
jungarikjan Dec 1, 2024
f7941e4
Update events.yml
Ratyyy Dec 1, 2024
f9f212e
фиксы, опять.
Ratyyy Dec 2, 2024
6d529ae
Merge branch 'master' into pirates
Ratyyy Dec 3, 2024
4289d1f
Update currency.ftl
Ratyyy Dec 3, 2024
3b0397a
Merge branch 'master' into pirates
Ratyyy Dec 3, 2024
14ac9a8
нет.
Ratyyy Dec 3, 2024
a5fc24c
и что ему не так
Ratyyy Dec 3, 2024
5d01d8b
Merge branch 'master' into pirates
KashRas2 Dec 5, 2024
b7157a6
а если так?
Ratyyy Dec 5, 2024
fb08887
а если так?
Ratyyy Dec 5, 2024
2b05dec
Merge branch 'master' into pirates
Ratyyy Dec 10, 2024
a2709df
Merge branch 'master' into pirates
Ratyyy Dec 16, 2024
3726c38
Update PostMapInitTest.cs
Ratyyy Dec 16, 2024
ba3670c
Merge branch 'master' into pirates
Ratyyy Dec 18, 2024
7c67efa
Merge branch 'master' into pirates
Ratyyy Dec 21, 2024
28c09f5
что если
Ratyyy Dec 21, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using Robust.Shared.Audio;

namespace Content.Server.GameTicking.Rules.Components;

[RegisterComponent, Access(typeof(PiratesRuleSystem))]
public sealed partial class PiratesRuleComponent : Component
{
[ViewVariables]
public List<EntityUid> Pirates = new();
[ViewVariables]
public EntityUid PirateShip = EntityUid.Invalid;
[ViewVariables]
public HashSet<EntityUid> InitialItems = new();
[ViewVariables]
public double InitialShipValue;

/// <summary>
/// Path to antagonist alert sound.
/// </summary>
[DataField("pirateAlertSound")]
public SoundSpecifier PirateAlertSound = new SoundPathSpecifier(
"/Audio/Ambience/Antag/pirate_start.ogg",
AudioParams.Default.WithVolume(4));

[DataField]
public string PiratesShuttlePath = "Maps/ADTMaps/Shuttles/pirate.yml";
Ratyyy marked this conversation as resolved.
Show resolved Hide resolved
}
128 changes: 128 additions & 0 deletions Content.Server/ADT/GameTicking/Rules/PiratesRuleSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
using System.Linq;
using System.Numerics;
using Content.Server.Administration.Commands;
using Content.Server.Cargo.Systems;
using Content.Server.Chat.Managers;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.Preferences.Managers;
using Content.Server.Spawners.Components;
using Content.Server.Station.Components;
using Content.Server.Station.Systems;
using Content.Shared.CCVar;
using Content.Shared.Humanoid;
using Content.Shared.Humanoid.Prototypes;
using Content.Shared.Mind;
using Content.Shared.NPC.Prototypes;
using Content.Shared.NPC.Systems;
using Content.Shared.Preferences;
using Content.Shared.Roles;
using Robust.Server.GameObjects;
using Robust.Server.Maps;
using Robust.Server.Player;
using Robust.Shared.Audio;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Configuration;
using Robust.Shared.Enums;
using Robust.Shared.Map;
using Robust.Shared.Map.Components;
using Content.Server.GameTicking.Rules;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Robust.Shared.Utility;
using Content.Shared.GameTicking.Components;
using Content.Server.StationEvents.Components;

namespace Content.Server.GameTicking.Rules;

/// <summary>
/// This handles the Pirates minor antag, which is designed to coincide with other modes on occasion.
/// </summary>
public sealed class PiratesRuleSystem : GameRuleSystem<PiratesRuleComponent>
{
[Dependency] private readonly IMapManager _mapManager = default!;
[Dependency] private readonly PricingSystem _pricingSystem = default!;
[Dependency] private readonly MapLoaderSystem _map = default!;


/// <inheritdoc/>
public override void Initialize()
{
base.Initialize();

}

protected override void Started(EntityUid uid, PiratesRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args)
{
base.Started(uid, component, gameRule, args);

var shuttleMap = _mapManager.CreateMap();
var options = new MapLoadOptions
{
LoadMap = true,
};

if (!_map.TryLoad(shuttleMap, component.PiratesShuttlePath, out var shuttle, options))
return;
component.PirateShip = shuttle[0];

component.InitialShipValue = _pricingSystem.AppraiseGrid(component.PirateShip, uid =>
{
component.InitialItems.Add(uid);
return true;
});

}
protected override void AppendRoundEndText(EntityUid uid, PiratesRuleComponent component, GameRuleComponent gameRule, ref RoundEndTextAppendEvent args)
{
if (Deleted(component.PirateShip))
{
// Major loss, the ship somehow got annihilated.
args.AddLine(Loc.GetString("pirates-no-ship"));
}
else
{
List<(double, EntityUid)> mostValuableThefts = new();
var comp1 = component;
var finalValue = _pricingSystem.AppraiseGrid(component.PirateShip, uid =>
{
foreach (var mindId in component.Pirates)
{
if (TryComp(mindId, out MindComponent? mind) && mind.CurrentEntity == uid)
return false; // Don't appraise the pirates twice, we count them in separately.
}

return true;
}, (uid, price) =>
{
if (comp1.InitialItems.Contains(uid))
return;
mostValuableThefts.Add((price, uid));
mostValuableThefts.Sort((i1, i2) => i2.Item1.CompareTo(i1.Item1));
if (mostValuableThefts.Count > 5)
mostValuableThefts.Pop();
});

foreach (var mindId in component.Pirates)
{
if (TryComp(mindId, out MindComponent? mind) && mind.CurrentEntity is not null)
finalValue += _pricingSystem.GetPrice(mind.CurrentEntity.Value);
}

var score = finalValue - component.InitialShipValue;

args.AddLine(Loc.GetString("pirates-final-score", ("score", $"{score:F2}")));
args.AddLine(Loc.GetString("pirates-final-score-2", ("finalPrice", $"{finalValue:F2}")));

args.AddLine("");
args.AddLine(Loc.GetString("pirates-most-valuable"));

foreach (var (price, obj) in mostValuableThefts)
{
args.AddLine(Loc.GetString("pirates-stolen-item-entry", ("entity", obj), ("credits", $"{price:F2}")));
}

if (mostValuableThefts.Count == 0)
args.AddLine(Loc.GetString("pirates-stole-nothing"));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,10 @@ ghost-role-information-carpcat-rules =
Вы [bold]должны слушаться и помогать[/bold] ядерным оперативникам в выполнении своей задачи и кусать наглых сотрудников станции.
ghost-role-information-mini-spider-name = Паучок
ghost-role-information-mini-spider-description = Маленький паучок, почему бы вам не отправиться на охоту за очередной мышкой?
ghost-role-information-pirate-rules = Вы [color=red]НЕ[/color] помните свою прошлую жизнь. Сделайте все, чтобы наполнить трюм золотом, начиная с торговли и заканчивая кровавой бойней. Слушайтесь своего капитана и делайте все, чтобы спасти ему жизнь.
ghost-role-information-captain-pirate-name = Капитан пиратов
ghost-role-information-captain-pirate-description = Вы - Капитан судна космических Пиратов! Предводите бандой головорезов, и заберите у космических крыс то, что они так не хотят вам отдавать! Ну или банально не сыграйте в ящик.
Ratyyy marked this conversation as resolved.
Show resolved Hide resolved
ghost-role-information-captain-pirate-rules = Вы [color=red]НЕ[/color] помните свою прошлую жизнь. Сделайте все, чтобы наполнить трюм золотом, начиная с торговли и заканчивая кровавой бойней. Веди свою команду, мой друг, ЙАРРР!
ghost-role-information-pirate-firstmate-name = Юнга
ghost-role-information-pirate-firstmate-description = Вы - Юнга на судне космических Пиратов. Ваша задача выполнять все отвратительные на ваш взгляд приказы Пиратов и Капитана, стараясь не сойти с ума на дне кружки Грога.
ghost-role-information-pirate-firstmate-rules = Вы [color=red]НЕ[/color] помните свою прошлую жизнь. Сделайте все, чтобы наполнить трюм золотом, начиная с торговли и заканчивая кровавой бойней. Слушайтесь своего капитана или [color=red]станьте[/color] новым.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
pirates-no-ship = При неизвестных обстоятельствах корабль пиратов был полностью уничтожен.
pirates-final-score = Пираты успешно украли товара на {$score} космобаксов.
pirates-final-score-2 = Безделушек, в общей сложности на {$finalPrice} космобаксов.
pirates-most-valuable = Самыми ценными украденными вещами были:
pirates-stolen-item-entry = {$entity} с ценой ({$credits} космобаксов)
pirates-stole-nothing = - Пираты украли абсолютно ничего.[color=red][bold] Стыд и позор.[/bold][/color]
roles-antag-pirate-objective = Украдите все ценное с этого одурманенного большого корабля... э-э... станции.
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,69 @@ uplink-blackmail-bundle-desc = Набор для относительно эфф

uplink-syndicate-helmet-name = шлем спецназа
uplink-syndicate-helmet-desc = Очень прочный шлем, широко используемый военизированными организациями. Его украшает ужасный узор из красных и чёрных полос. Да прибудет с вами робаст

uplink-pirate-cannonball-name = пушечное ядро
uplink-pirate-cannonball-desc = Обычное пушечное ядро.

uplink-pirate-grapeshot-name = картечь
uplink-pirate-grapeshot-desc = Картечьное ядро для пушки.
Ratyyy marked this conversation as resolved.
Show resolved Hide resolved

uplink-pirate-sawn-name = обрез
uplink-pirate-sawn-desc = Против всякой шелупони. Использует патроны калибра .50 ружейный.

uplink-pirate-revolver-name = пиратский револьвер
uplink-pirate-revolver-desc = Странный дульнозарядный револьвер, который использовали пираты. Использует патроны калибра .45 магнум.

uplink-pirate-hand-cannon-name = пиратская пушка
uplink-pirate-hand-cannon-desc = Кабум!

uplink-pirate-outer-armor-podwars-name = броня Броненосец II
uplink-pirate-outer-armor-podwars-desc = Переделанный бронескафандр Броненосец II, реликвия войн подов.

uplink-pirate-helmet-armor-podwars-name = шлем Броненосец II
uplink-pirate-helmet-armor-podwars-desc = Переделанный шлем Броненосец II, реликвия войн подов.

uplink-pirate-outer-armor-captain-name = куртка капитана
uplink-pirate-outer-armor-captain-desc = Капитанская торжественная куртка, инкрустированная золотом.

uplink-pirate-ion-rifle-name = ионная винтовка
uplink-pirate-ion-rifle-desc = Ионно-электрическая разрушительная винтовка, специально разработана против мехов и боргов.

uplink-pirate-svalinn-name = лазерный пистолет Свалинн
uplink-pirate-svalinn-desc = Дешёвый и широко распространённый лазерный пистолет.

uplink-pirate-laser-name = старомодный лазерный бластер
uplink-pirate-laser-desc = Оружие, использующее свет, усиленный излучением радиации.

uplink-pirate-cutter-name = улучшенный плазменный резак
uplink-pirate-cutter-desc = Инструмент шахтеров, предназначенный для расчистки горных пород. Обладает усовершенствованной батареей и усиленной концентрирующей линзой.

uplink-pirate-microreactor-name = микрореакторная батарея
uplink-pirate-microreactor-desc = Стандартизированный перезаряжаемый микрореактор. Имеет пониженную ёмкость, но медленно заряжается сама по себе.
Ratyyy marked this conversation as resolved.
Show resolved Hide resolved

uplink-pirate-pirate-name = костлявый пират
uplink-pirate-pirate-desc = Лучший помощник любого капитана - скелет без шкафа!

uplink-pirate-cannon-name = пушка пиратского корабля
uplink-pirate-cannon-desc = Кабум!

uplink-pirate-granade-name = разрывная граната
uplink-pirate-granade-desc = Граната, создающая небольшой но разрушительный взрыв.

uplink-pirate-emp-granade-name = ЭМИ граната
uplink-pirate-emp-granade-desc = Граната, предназначенная для поражения электрических систем.

uplink-pirate-milk-name = молоко
uplink-pirate-milk-desc = Пей молоко - кости будут крепче стали!

uplink-pirate-cow-name = корова
uplink-pirate-cow-desc = Бесконечный источник молока.

uplink-pirate-bullet-proof-name = пуленепробиваемый жилет
uplink-pirate-bullet-proof-desc = Тяжёлый бронежилет типа III, способный защитить владельца от традиционного метательного оружия и взрывчатки в незначительной степени.

uplink-pirate-bullet-magnum-name = спидлодер .44 магнум
uplink-pirate-bullet-magnum-desc = Идеален к твоему револьверу!

uplink-pirate-lethal-shot-name = раздатчик ружейных патронов
uplink-pirate-lethal-shot-desc = Полная коробка летальных ружейных патронов.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
ent-ADTPiratePiastr1 = пиастр
.desc = Самая ЯРРРР валюта!
.suffix = 1

ent-ADTPiratePiastr1000 = пиастр
.desc = Самая ЯРРРР валюта!
.suffix = 1000

ent-ADTBasePirateStore = магазин "Портовая крыса"
.desc = Лавка портовой крысы. Все необходимые для грабежа и налётов товары, высшего качества и свежести, украденные прямо из космических портов всех мегакорпораций!
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,6 @@ ent-ADTComputerShuttleSalvage = консоль управления утилиз

ent-ADTComputerSecShuttle = консоль управления шаттлом службы безопасности
.desc = Используется для пилотирования шаттлом службы безопасности.

ent-ADTComputerPalletConsolePirate = пиратская консоль продаж
.desc = Продаёт за пиастры.
4 changes: 2 additions & 2 deletions Resources/Locale/ru-RU/ghost/roles/ghost-role-component.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,8 @@ ghost-role-information-blackmarketeer-name = Торговец чёрного р
ghost-role-information-blackmarketeer-description = Заключайте сделки или беритесь за непосильную работу, чтобы к концу смены собрать самые интересные предметы.
ghost-role-information-cossack-name = Древний путешественник
ghost-role-information-cossack-description = Из истории, потерянной во времени, вы попадаете в наш век.
ghost-role-information-pirate-name = Космический пират
ghost-role-information-pirate-description = Агх, дружище! Собирайте крутые трофеи, но старайтесь избегать службы безопасности и утилизаторов!
ghost-role-information-pirate-name = Пират
Ratyyy marked this conversation as resolved.
Show resolved Hide resolved
ghost-role-information-pirate-description = Вы - Архаичный Пират. Постарайтесь собрать как можно больше блестящих побрякушек!
ghost-role-information-pirate-captain-name = Капитан космических пиратов
ghost-role-information-pirate-captain-description = Агх, дружище! Ты здесь главный, и тебе нужно разработать план, как заполучить эту сочную добычу с помощью крючка или мошенничества. Только постарайтесь избегать службы безопасности и утилизаторов!
Ratyyy marked this conversation as resolved.
Show resolved Hide resolved
ghost-role-information-disaster-victim-name = Жертва катастрофы
Expand Down
2 changes: 2 additions & 0 deletions Resources/Locale/ru-RU/store/currency.ftl
Filokini marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,5 @@ store-currency-display-stolen-essence = Украденная эссенция
store-currency-display-wizcoin = Маг₭øин™

store-currency-display-tradeunit = ЕТ
Ratyyy marked this conversation as resolved.
Show resolved Hide resolved

store-currency-display-piastr = Пиастр
Loading
Loading