Endscreen message + command objectives updadte (#533)
* add simple end screen common goals * finish common objectives endscreen * personal objectives endscreen * Update personal_objectives.yml * new empire objectives
This commit is contained in:
@@ -1,11 +1,15 @@
|
||||
using System.Text;
|
||||
using Content.Server._CP14.GameTicking.Rules.Components;
|
||||
using Content.Server._CP14.StationCommonObjectives;
|
||||
using Content.Server.GameTicking;
|
||||
using Content.Server.GameTicking.Rules;
|
||||
using Content.Server.Mind;
|
||||
using Content.Shared.GameTicking.Components;
|
||||
using Content.Shared.Mind;
|
||||
using Content.Shared.Objectives.Components;
|
||||
using Content.Shared.Objectives.Systems;
|
||||
using Content.Shared.Random.Helpers;
|
||||
using Content.Shared.Roles;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
@@ -16,6 +20,7 @@ public sealed class CP14CommonObjectivesRule : GameRuleSystem<CP14CommonObjectiv
|
||||
[Dependency] private readonly MindSystem _mind = default!;
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly SharedObjectivesSystem _objectives = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -34,6 +39,9 @@ public sealed class CP14CommonObjectivesRule : GameRuleSystem<CP14CommonObjectiv
|
||||
var query = EntityQueryEnumerator<CP14StationCommonObjectivesComponent>();
|
||||
while (query.MoveNext(out var stationUid, out var stationObj))
|
||||
{
|
||||
var mindComp = EnsureComp<MindComponent>(stationUid);
|
||||
component.StationMind = (stationUid, mindComp);
|
||||
|
||||
foreach (var jobObj in component.JobObjectives)
|
||||
{
|
||||
foreach (var weightGroupProto in jobObj.Value)
|
||||
@@ -43,7 +51,7 @@ public sealed class CP14CommonObjectivesRule : GameRuleSystem<CP14CommonObjectiv
|
||||
|
||||
var objectiveProto = weightGroup.Pick(_random);
|
||||
|
||||
if (!TryCreateCommonObjective(objectiveProto, out var objective) || objective is null)
|
||||
if (!_objectives.TryCreateObjective(component.StationMind.Value, objectiveProto, out var objective))
|
||||
continue;
|
||||
|
||||
stationObj.JobObjectives.Add(objective.Value, jobObj.Key);
|
||||
@@ -59,7 +67,7 @@ public sealed class CP14CommonObjectivesRule : GameRuleSystem<CP14CommonObjectiv
|
||||
|
||||
var objectiveProto = weightGroup.Pick(_random);
|
||||
|
||||
if (!TryCreateCommonObjective(objectiveProto, out var objective) || objective is null)
|
||||
if (!_objectives.TryCreateObjective(component.StationMind.Value, objectiveProto, out var objective))
|
||||
continue;
|
||||
|
||||
stationObj.DepartmentObjectives.Add(objective.Value, depObj.Key);
|
||||
@@ -68,31 +76,6 @@ public sealed class CP14CommonObjectivesRule : GameRuleSystem<CP14CommonObjectiv
|
||||
}
|
||||
}
|
||||
|
||||
private bool TryCreateCommonObjective(string objectiveProto, out EntityUid? objective)
|
||||
{
|
||||
objective = null;
|
||||
|
||||
if (!_proto.HasIndex<EntityPrototype>(objectiveProto))
|
||||
{
|
||||
Log.Error($"Invalid objective prototype {objectiveProto}, don't found entity prototype");
|
||||
return false;
|
||||
}
|
||||
|
||||
objective = Spawn(objectiveProto);
|
||||
|
||||
if (!TryComp<ObjectiveComponent>(objective, out var comp)) //TODO: мы не можем в ObjectiveSystem делать цели без привязки к разуму. Поэтому щиткодим создания тут.
|
||||
{
|
||||
Del(objective);
|
||||
Log.Error($"Invalid objective prototype {objectiveProto}, missing ObjectiveComponent");
|
||||
return false;
|
||||
}
|
||||
|
||||
var afterEv = new ObjectiveAfterAssignEvent(null, null, comp, MetaData(objective.Value));
|
||||
RaiseLocalEvent(objective.Value, ref afterEv);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void OnPlayerSpawning(PlayerSpawnCompleteEvent args)
|
||||
{
|
||||
//TODO: Multiply station support required
|
||||
@@ -125,4 +108,55 @@ public sealed class CP14CommonObjectivesRule : GameRuleSystem<CP14CommonObjectiv
|
||||
_mind.AddObjective(mindId, mind, depObj.Key);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void AppendRoundEndText(EntityUid uid,
|
||||
CP14CommonObjectivesRuleComponent component,
|
||||
GameRuleComponent gameRule,
|
||||
ref RoundEndTextAppendEvent args)
|
||||
{
|
||||
base.AppendRoundEndText(uid, component, gameRule, ref args);
|
||||
|
||||
var query = EntityQueryEnumerator<CP14StationCommonObjectivesComponent>();
|
||||
while (query.MoveNext(out var objectives))
|
||||
{
|
||||
var grouped = new Dictionary<DepartmentPrototype, List<EntityUid>>();
|
||||
foreach (var department in objectives.DepartmentObjectives)
|
||||
{
|
||||
var indexedDepartment = _proto.Index(department.Value);
|
||||
|
||||
if (!grouped.ContainsKey(indexedDepartment))
|
||||
grouped.Add(indexedDepartment, new List<EntityUid>());
|
||||
|
||||
grouped[indexedDepartment].Add(department.Key);
|
||||
}
|
||||
|
||||
foreach (var group in grouped)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
sb.Append($"[head=3][color={group.Key.Color.ToHex()}][bold]{Loc.GetString(group.Key.Name)}[/bold][/color][/head]\n");
|
||||
|
||||
foreach (var objEnt in group.Value)
|
||||
{
|
||||
if (!TryComp<ObjectiveComponent>(objEnt, out var objComp))
|
||||
continue;
|
||||
|
||||
if (component.StationMind is null)
|
||||
continue;
|
||||
|
||||
var progress = _objectives.GetProgress(objEnt, component.StationMind.Value) ?? 0;
|
||||
var status = "cp14-objective-endtext-status-failure";
|
||||
if (progress > 0.75f)
|
||||
status = "cp14-objective-endtext-status-success-a";
|
||||
if (progress > 0.99f)
|
||||
status = "cp14-objective-endtext-status-success";
|
||||
|
||||
var meta = MetaData(objEnt);
|
||||
sb.Append($"{Loc.GetString(objComp.LocIssuer)}: {meta.EntityName}\n");
|
||||
sb.Append($"{Loc.GetString("cp14-objective-endtext-progress", ("value", (int)(progress * 100)))} - {Loc.GetString(status)}\n");
|
||||
}
|
||||
|
||||
args.AddLine(sb.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
using System.Text;
|
||||
using Content.Server._CP14.GameTicking.Rules.Components;
|
||||
using Content.Server.GameTicking;
|
||||
using Content.Server.GameTicking.Rules;
|
||||
using Content.Server.Mind;
|
||||
using Content.Shared.GameTicking.Components;
|
||||
using Content.Shared.Objectives.Components;
|
||||
using Content.Shared.Objectives.Systems;
|
||||
using Content.Shared.Random.Helpers;
|
||||
using Content.Shared.Roles.Jobs;
|
||||
using Robust.Server.Player;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
@@ -13,6 +19,9 @@ public sealed class CP14PersonalObjectivesRule : GameRuleSystem<CP14PersonalObje
|
||||
[Dependency] private readonly MindSystem _mind = default!;
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly SharedJobSystem _jobs = default!;
|
||||
[Dependency] private readonly IPlayerManager _player = default!;
|
||||
[Dependency] private readonly SharedObjectivesSystem _objectives = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -42,7 +51,15 @@ public sealed class CP14PersonalObjectivesRule : GameRuleSystem<CP14PersonalObje
|
||||
if (!_proto.TryIndex(weightGroupProto, out var weightGroup))
|
||||
continue;
|
||||
|
||||
_mind.TryAddObjective(mindId.Value, mind, weightGroup.Pick(_random));
|
||||
_mind.TryAddObjective(mindId.Value, mind, weightGroup.Pick(_random), out var objective);
|
||||
|
||||
if (objective is not null)
|
||||
{
|
||||
if (!personalObj.PersonalObjectives.ContainsKey((mindId.Value, mind)))
|
||||
personalObj.PersonalObjectives.Add((mindId.Value, mind), new());
|
||||
|
||||
personalObj.PersonalObjectives[(mindId.Value, mind)].Add(objective.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,9 +79,62 @@ public sealed class CP14PersonalObjectivesRule : GameRuleSystem<CP14PersonalObje
|
||||
if (!_proto.TryIndex(weightGroupProto, out var weightGroup))
|
||||
continue;
|
||||
|
||||
_mind.TryAddObjective(mindId.Value, mind, weightGroup.Pick(_random));
|
||||
_mind.TryAddObjective(mindId.Value, mind, weightGroup.Pick(_random), out var objective);
|
||||
|
||||
if (objective is not null)
|
||||
{
|
||||
if (!personalObj.PersonalObjectives.ContainsKey((mindId.Value, mind)))
|
||||
personalObj.PersonalObjectives.Add((mindId.Value, mind), new());
|
||||
|
||||
personalObj.PersonalObjectives[(mindId.Value, mind)].Add(objective.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void AppendRoundEndText(EntityUid uid,
|
||||
CP14PersonalObjectivesRuleComponent component,
|
||||
GameRuleComponent gameRule,
|
||||
ref RoundEndTextAppendEvent args)
|
||||
{
|
||||
base.AppendRoundEndText(uid, component, gameRule, ref args);
|
||||
|
||||
var sb = new StringBuilder();
|
||||
sb.Append($"[head=2]{Loc.GetString("cp14-objective-issuer-personal")}[/head]\n");
|
||||
|
||||
foreach (var (mind, objectives) in component.PersonalObjectives)
|
||||
{
|
||||
var name = mind.Comp.CharacterName ?? Loc.GetString("cp14-objective-unknown");
|
||||
var role = Loc.GetString("cp14-objective-unknown");
|
||||
var ckey = Loc.GetString("cp14-objective-unknown");
|
||||
|
||||
if (_jobs.MindTryGetJob(mind, out var job))
|
||||
role = Loc.GetString(job.Name);
|
||||
|
||||
if (mind.Comp.UserId is not null)
|
||||
{
|
||||
ckey = _player.GetPlayerData(mind.Comp.UserId.Value).UserName;
|
||||
}
|
||||
|
||||
sb.Append($"[head=3]{name} - {role}[/head]\n");
|
||||
sb.Append($"[color=#949494]{ckey}[/color]\n");
|
||||
foreach (var objEnt in objectives)
|
||||
{
|
||||
if (!TryComp<ObjectiveComponent>(objEnt, out var objComp))
|
||||
continue;
|
||||
|
||||
var progress = _objectives.GetProgress(objEnt, mind) ?? 0;
|
||||
var status = "cp14-objective-endtext-status-failure";
|
||||
if (progress > 0.75f)
|
||||
status = "cp14-objective-endtext-status-success-a";
|
||||
if (progress > 0.99f)
|
||||
status = "cp14-objective-endtext-status-success";
|
||||
|
||||
var meta = MetaData(objEnt);
|
||||
sb.Append($"{meta.EntityName} - {Loc.GetString(status)} ({(int)(progress * 100)}%)\n");
|
||||
}
|
||||
}
|
||||
args.AddLine(sb.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Content.Shared.Mind;
|
||||
using Content.Shared.Random;
|
||||
using Content.Shared.Roles;
|
||||
using Robust.Shared.Prototypes;
|
||||
@@ -7,7 +8,7 @@ namespace Content.Server._CP14.GameTicking.Rules.Components;
|
||||
/// <summary>
|
||||
/// A rule that assigns common goals to different roles. Common objectives are generated once at the beginning of a round and are shared between players.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14PersonalObjectivesRule))]
|
||||
[RegisterComponent, Access(typeof(CP14CommonObjectivesRule))]
|
||||
public sealed partial class CP14CommonObjectivesRuleComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
@@ -15,4 +16,10 @@ public sealed partial class CP14CommonObjectivesRuleComponent : Component
|
||||
|
||||
[DataField]
|
||||
public Dictionary<ProtoId<DepartmentPrototype>, List<ProtoId<WeightedRandomPrototype>>> DepartmentObjectives = new();
|
||||
|
||||
/// <summary>
|
||||
/// all tasks must have a “mind”. This mind has all the common tasks for compatibility
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public Entity<MindComponent>? StationMind;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Content.Shared.Mind;
|
||||
using Content.Shared.Random;
|
||||
using Content.Shared.Roles;
|
||||
using Robust.Shared.Prototypes;
|
||||
@@ -15,4 +16,10 @@ public sealed partial class CP14PersonalObjectivesRuleComponent : Component
|
||||
|
||||
[DataField]
|
||||
public Dictionary<ProtoId<DepartmentPrototype>, List<ProtoId<WeightedRandomPrototype>>> DepartmentObjectives = new();
|
||||
|
||||
/// <summary>
|
||||
/// All of the objectives added by this rule. 1 mind -> many objectives
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public Dictionary<Entity<MindComponent>, List<EntityUid>> PersonalObjectives = new();
|
||||
}
|
||||
|
||||
@@ -39,7 +39,4 @@ public sealed partial class CP14TownSendConditionComponent : Component
|
||||
|
||||
[DataField(required: true)]
|
||||
public LocId DescriptionText;
|
||||
|
||||
[DataField(required: true)]
|
||||
public LocId DescriptionMultiplyText;
|
||||
}
|
||||
|
||||
@@ -38,14 +38,14 @@ public sealed class CP14CurrencyCollectConditionSystem : EntitySystem
|
||||
|
||||
private void OnCollectAfterAssign(Entity<CP14CurrencyCollectConditionComponent> condition, ref ObjectiveAfterAssignEvent args)
|
||||
{
|
||||
_metaData.SetEntityName(condition.Owner, Loc.GetString(condition.Comp.ObjectiveText), args.Meta);
|
||||
_metaData.SetEntityName(condition.Owner, Loc.GetString(condition.Comp.ObjectiveText, ("coins", _currency.GetCurrencyPrettyString(condition.Comp.Currency))), args.Meta);
|
||||
_metaData.SetEntityDescription(condition.Owner, Loc.GetString(condition.Comp.ObjectiveDescription, ("coins", _currency.GetCurrencyPrettyString(condition.Comp.Currency))), args.Meta);
|
||||
_objectives.SetIcon(condition.Owner, condition.Comp.ObjectiveSprite);
|
||||
}
|
||||
|
||||
private void OnStoredAfterAssign(Entity<CP14CurrencyStoredConditionComponent> condition, ref ObjectiveAfterAssignEvent args)
|
||||
{
|
||||
_metaData.SetEntityName(condition.Owner, Loc.GetString(condition.Comp.ObjectiveText), args.Meta);
|
||||
_metaData.SetEntityName(condition.Owner, Loc.GetString(condition.Comp.ObjectiveText, ("coins", _currency.GetCurrencyPrettyString(condition.Comp.Currency))), args.Meta);
|
||||
_metaData.SetEntityDescription(condition.Owner, Loc.GetString(condition.Comp.ObjectiveDescription, ("coins", _currency.GetCurrencyPrettyString(condition.Comp.Currency))), args.Meta);
|
||||
_objectives.SetIcon(condition.Owner, condition.Comp.ObjectiveSprite);
|
||||
}
|
||||
|
||||
@@ -85,11 +85,8 @@ public sealed class CP14TownSendConditionSystem : EntitySystem
|
||||
|
||||
var group = _proto.Index(condition.Comp.CollectGroup);
|
||||
|
||||
var title = Loc.GetString(condition.Comp.ObjectiveText, ("itemName", Loc.GetString(group.Name)));
|
||||
|
||||
var description = condition.Comp.CollectionSize > 1
|
||||
? Loc.GetString(condition.Comp.DescriptionMultiplyText, ("itemName", Loc.GetString(group.Name)), ("count", condition.Comp.CollectionSize))
|
||||
: Loc.GetString(condition.Comp.DescriptionText, ("itemName", Loc.GetString(group.Name)));
|
||||
var title = Loc.GetString(condition.Comp.ObjectiveText, ("itemName", Loc.GetString(group.Name)), ("count", condition.Comp.CollectionSize));
|
||||
var description = Loc.GetString(condition.Comp.DescriptionText, ("itemName", Loc.GetString(group.Name)), ("count", condition.Comp.CollectionSize));
|
||||
|
||||
_metaData.SetEntityName(condition.Owner, title, args.Meta);
|
||||
_metaData.SetEntityDescription(condition.Owner, description, args.Meta);
|
||||
|
||||
@@ -14,4 +14,7 @@ public sealed partial class CP14StealAreaAutoJobConnectComponent : Component
|
||||
|
||||
[DataField]
|
||||
public HashSet<ProtoId<DepartmentPrototype>> Departments = new();
|
||||
|
||||
[DataField]
|
||||
public bool Stations = true;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Content.Server._CP14.StationCommonObjectives;
|
||||
using Content.Server.GameTicking;
|
||||
using Content.Server.Mind;
|
||||
using Content.Server.Objectives.Components;
|
||||
@@ -27,6 +28,15 @@ public sealed class CP14StealAreaAutoJobConnectSystem : EntitySystem
|
||||
if (!TryComp<StealAreaComponent>(autoConnect, out var stealArea))
|
||||
return;
|
||||
|
||||
if (autoConnect.Comp.Stations)
|
||||
{
|
||||
var query = EntityQueryEnumerator<CP14StationCommonObjectivesComponent>();
|
||||
while (query.MoveNext(out var uid, out _))
|
||||
{
|
||||
stealArea.Owners.Add(uid);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var player in _playerManager.Sessions)
|
||||
{
|
||||
if (!_mind.TryGetMind(player.UserId, out var playerMind))
|
||||
|
||||
@@ -340,6 +340,20 @@ public abstract class SharedMindSystem : EntitySystem
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// CP14 Extension - Tries to create and add an objective from its prototype id, and return objective uid.
|
||||
/// </summary>
|
||||
/// <returns>Returns true if adding the objective succeeded.</returns>
|
||||
public bool TryAddObjective(EntityUid mindId, MindComponent mind, string proto, out EntityUid? objective)
|
||||
{
|
||||
objective = _objectives.TryCreateObjective(mindId, mind, proto);
|
||||
if (objective == null)
|
||||
return false;
|
||||
|
||||
AddObjective(mindId, mind, objective.Value);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds an objective that already exists, and is assumed to have had its requirements checked.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
cp14-currency-examine-title = Market price:
|
||||
cp14-currency-converter-examine-title = Cash:
|
||||
cp14-currency-examine-gp = [color=#ebad3b]{$coin}gp[/color]
|
||||
cp14-currency-examine-sp = [color=#bad1d6]{$coin}sp[/color]
|
||||
cp14-currency-examine-cp = [color=#824e27]{$coin}cp[/color]
|
||||
cp14-currency-examine-cp = [color=#824e27]{$coin}cp[/color]
|
||||
|
||||
cp14-currency-converter-insert = {$cash}cp ddeposited!
|
||||
cp14-verb-categories-currency-converter = Withdraw currency:
|
||||
cp14-currency-converter-get-cp = As cp (1cp)
|
||||
cp14-currency-converter-get-sp = As sp (10cp)
|
||||
cp14-currency-converter-get-gp = As gp (100cp)
|
||||
cp14-currency-converter-get-pp = As pp (1000cp)
|
||||
@@ -1,8 +1,7 @@
|
||||
cp14-objective-issuer-town = [color=#fcae38]Orders of the Empire[/color]
|
||||
|
||||
cp14-objective-town-send-title = Extract { $itemName }
|
||||
cp14-objective-town-send-desc = Your task is to mine and ship { $itemName } to the city on a merchant ship.
|
||||
cp14-objective-town-send-multiply-desc = Your task is to mine and ship { $count } { $itemName } to the city on a merchant ship.
|
||||
cp14-objective-town-send-title = Extract { $count } { $itemName }
|
||||
cp14-objective-town-send-desc = Your task is to mine and ship { $count } { $itemName } to the city on a merchant ship.
|
||||
|
||||
cp14-objective-bank-earning-title = Increase the bank's wealth
|
||||
cp14-objective-bank-earning-desc = There must be at least { $coins } in the bank vault. You can use any methods of earning money that do not violate the law.
|
||||
cp14-objective-bank-earning-title = Accumulate in the vault{ $coins }
|
||||
cp14-objective-bank-earning-desc = There must be at least{ $coins } in the bank vault. You can use any methods of earning money that do not violate the law.
|
||||
@@ -1,4 +1,4 @@
|
||||
cp14-objective-issuer-personal = [color="#95a6c2"]Personal objectives[/color]
|
||||
|
||||
cp14-objective-personal-currency-collect-title = Make money
|
||||
cp14-objective-personal-currency-collect-desc = I plan to earn at least {$coins} by working here.
|
||||
cp14-objective-personal-currency-collect-title = Earn{$coins}
|
||||
cp14-objective-personal-currency-collect-desc = I plan to earn at least{$coins} by working here.
|
||||
7
Resources/Locale/en-US/_CP14/objectives/end-text.ftl
Normal file
7
Resources/Locale/en-US/_CP14/objectives/end-text.ftl
Normal file
@@ -0,0 +1,7 @@
|
||||
cp14-objective-endtext-progress = Task completed by [bold]{$value}%[/bold]
|
||||
|
||||
cp14-objective-endtext-status-success = [color=#26f09c]DONe[/color]
|
||||
cp14-objective-endtext-status-success-a = [color=#f0a926]ALMOST DONE[/color]
|
||||
cp14-objective-endtext-status-failure = [color=#cc2727]FAILED[/color]
|
||||
|
||||
cp14-objective-unknown = Unknown
|
||||
@@ -1 +1,3 @@
|
||||
cp14-steal-target-gold-ore = gold ore
|
||||
cp14-steal-target-dino = yumkaraptors
|
||||
cp14-steal-target-mole = predatory moles
|
||||
cp14-steal-target-boar = boars or pigs
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
cp14-objective-issuer-town = [color=#fcae38]Приказ империи[/color]
|
||||
|
||||
cp14-objective-town-send-title = Добыть { $itemName }
|
||||
cp14-objective-town-send-desc = Ваша задача - добыть и отправить { $itemName } в город на торговом корабле.
|
||||
cp14-objective-town-send-multiply-desc = Ваша задача - добыть и отправить { $count } { $itemName } в город на торговом корабле.
|
||||
cp14-objective-town-send-title = Добыть { $count } { $itemName }
|
||||
cp14-objective-town-send-desc = Ваша задача - добыть и отправить { $count } { $itemName } в город на торговом корабле.
|
||||
|
||||
cp14-objective-bank-earning-title = Преумножить состояние
|
||||
cp14-objective-bank-earning-desc = В банковском хранилище должно находиться не меньше { $coins }. Вы можете использовать любые методы заработка, не нарушающие закон.
|
||||
cp14-objective-bank-earning-title = Накопить в хранилище{ $coins }
|
||||
cp14-objective-bank-earning-desc = В банковском хранилище должно находиться не меньше{ $coins }. Вы можете использовать любые методы заработка, не нарушающие закон.
|
||||
@@ -1,4 +1,4 @@
|
||||
cp14-objective-issuer-personal = [color="#95a6c2"]Личные цели[/color]
|
||||
|
||||
cp14-objective-personal-currency-collect-title = Заработать денег
|
||||
cp14-objective-personal-currency-collect-desc = Я планирую заработать как минимум {$coins}, работая здесь.
|
||||
cp14-objective-personal-currency-collect-title = Заработать{$coins}
|
||||
cp14-objective-personal-currency-collect-desc = Я планирую заработать как минимум{$coins}, работая здесь.
|
||||
7
Resources/Locale/ru-RU/_CP14/objectives/end-text.ftl
Normal file
7
Resources/Locale/ru-RU/_CP14/objectives/end-text.ftl
Normal file
@@ -0,0 +1,7 @@
|
||||
cp14-objective-endtext-progress = Задача выполнена на [bold]{$value}%[/bold]
|
||||
|
||||
cp14-objective-endtext-status-success = [color=#26f09c]ВЫПОЛНЕНО[/color]
|
||||
cp14-objective-endtext-status-success-a = [color=#f0a926]ПОЧТИ ВЫПОЛНЕНО[/color]
|
||||
cp14-objective-endtext-status-failure = [color=#cc2727]ПРОВАЛЕНО[/color]
|
||||
|
||||
cp14-objective-unknown = Неизвестный
|
||||
@@ -1 +1,3 @@
|
||||
cp14-steal-target-gold-ore = золотой руды
|
||||
cp14-steal-target-dino = юмкарапторов
|
||||
cp14-steal-target-mole = хищных кротов
|
||||
cp14-steal-target-boar = кабанов или свиней
|
||||
|
||||
@@ -152,6 +152,8 @@
|
||||
gender: epicene
|
||||
- type: ReplacementAccent
|
||||
accent: pig
|
||||
- type: StealTarget
|
||||
stealGroup: CP14Boar
|
||||
|
||||
- type: entity
|
||||
id: CP14MobBoar
|
||||
@@ -191,3 +193,5 @@
|
||||
- type: NPCRetaliation
|
||||
attackMemoryLength: 10
|
||||
- type: FactionException
|
||||
- type: StealTarget
|
||||
stealGroup: CP14Boar
|
||||
|
||||
@@ -106,6 +106,8 @@
|
||||
variation: 0.125
|
||||
- type: SoundWhileAlive
|
||||
- type: FloorOcclusion
|
||||
- type: StealTarget
|
||||
stealGroup: CP14Dino
|
||||
|
||||
- type: entity
|
||||
id: CP14MobDinoSmallHydra
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- FootstepSound
|
||||
- type: StealTarget
|
||||
stealGroup: CP14Mole
|
||||
|
||||
- type: entity
|
||||
id: CP14ActionMoleSpellSubterraneanLeap
|
||||
|
||||
@@ -47,6 +47,4 @@
|
||||
sprite: _CP14/Objects/Materials/gold_ore.rsi
|
||||
layers:
|
||||
- state: ore1
|
||||
map: ["random"]
|
||||
- type: StealTarget
|
||||
stealGroup: CP14Gold
|
||||
map: ["random"]
|
||||
@@ -19,23 +19,41 @@
|
||||
maxCollectionSize: 10
|
||||
objectiveText: cp14-objective-town-send-title
|
||||
descriptionText: cp14-objective-town-send-desc
|
||||
descriptionMultiplyText: cp14-objective-town-send-multiply-desc
|
||||
- type: Objective
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseTownSendObjective
|
||||
id: CP14TownSendGoldObjective
|
||||
id: CP14TownSendDinoObjective
|
||||
components:
|
||||
- type: CP14TownSendCondition
|
||||
collectGroup: CP14Gold
|
||||
minCollectionSize: 200
|
||||
maxCollectionSize: 250
|
||||
collectGroup: CP14Dino
|
||||
minCollectionSize: 10
|
||||
maxCollectionSize: 50
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseTownSendObjective
|
||||
id: CP14TownSendMoleObjective
|
||||
components:
|
||||
- type: CP14TownSendCondition
|
||||
collectGroup: CP14Mole
|
||||
minCollectionSize: 10
|
||||
maxCollectionSize: 50
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseTownSendObjective
|
||||
id: CP14TownSendBoarObjective
|
||||
components:
|
||||
- type: CP14TownSendCondition
|
||||
collectGroup: CP14Boar
|
||||
minCollectionSize: 10
|
||||
maxCollectionSize: 50
|
||||
|
||||
- type: weightedRandom
|
||||
id: CP14TownSendObjectiveGroup
|
||||
weights:
|
||||
CP14TownSendGoldObjective: 1
|
||||
|
||||
CP14TownSendDinoObjective: 1
|
||||
CP14TownSendMoleObjective: 1
|
||||
CP14TownSendBoarObjective: 1
|
||||
|
||||
#Bank money
|
||||
- type: entity
|
||||
@@ -51,13 +69,6 @@
|
||||
state: coin10
|
||||
- type: Objective
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseTownBankEarningObjective
|
||||
id: CP14TownBankEarningObjectiveSmall
|
||||
components:
|
||||
- type: CP14CurrencyStoredCondition
|
||||
currency: 10000
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseTownBankEarningObjective
|
||||
id: CP14TownBankEarningObjectiveMedium
|
||||
@@ -75,6 +86,5 @@
|
||||
- type: weightedRandom
|
||||
id: CP14BankEarningObjectiveGroup
|
||||
weights:
|
||||
CP14TownBankEarningObjectiveSmall: 1
|
||||
CP14TownBankEarningObjectiveMedium: 0.6
|
||||
CP14TownBankEarningObjectiveBig: 0.3
|
||||
@@ -24,28 +24,9 @@
|
||||
state: coin10
|
||||
|
||||
# Collect currency group
|
||||
|
||||
- type: entity
|
||||
parent: CP14BasePersonalCurrencyCollectObjective
|
||||
id: CP14PersonalCurrencyCollectObjectiveSmall
|
||||
components:
|
||||
- type: Objective
|
||||
difficulty: 0.25
|
||||
- type: CP14CurrencyCollectCondition
|
||||
currency: 500
|
||||
|
||||
- type: entity
|
||||
parent: CP14BasePersonalCurrencyCollectObjective
|
||||
id: CP14PersonalCurrencyCollectObjectiveMedium
|
||||
components:
|
||||
- type: Objective
|
||||
difficulty: 0.5
|
||||
- type: CP14CurrencyCollectCondition
|
||||
currency: 750
|
||||
|
||||
- type: entity
|
||||
parent: CP14BasePersonalCurrencyCollectObjective
|
||||
id: CP14PersonalCurrencyCollectObjectiveBig
|
||||
id: CP14PersonalCurrencyCollectObjective
|
||||
components:
|
||||
- type: Objective
|
||||
difficulty: 1
|
||||
@@ -55,6 +36,4 @@
|
||||
- type: weightedRandom
|
||||
id: CP14PersonalCurrencyCollectObjectiveGroup
|
||||
weights:
|
||||
CP14PersonalCurrencyCollectObjectiveSmall: 0.25
|
||||
CP14PersonalCurrencyCollectObjectiveMedium: 0.5
|
||||
CP14PersonalCurrencyCollectObjectiveBig: 1
|
||||
CP14PersonalCurrencyCollectObjective: 1
|
||||
|
||||
@@ -1,6 +1,20 @@
|
||||
- type: stealTargetGroup
|
||||
id: CP14Gold
|
||||
name: cp14-steal-target-gold-ore
|
||||
id: CP14Dino
|
||||
name: cp14-steal-target-dino
|
||||
sprite:
|
||||
sprite: _CP14/Objects/Materials/gold_ore.rsi
|
||||
state: ore1
|
||||
sprite: _CP14/Mobs/Animals/dino.rsi
|
||||
state: dead
|
||||
|
||||
- type: stealTargetGroup
|
||||
id: CP14Mole
|
||||
name: cp14-steal-target-mole
|
||||
sprite:
|
||||
sprite: _CP14/Mobs/Monster/mole.rsi
|
||||
state: dead
|
||||
|
||||
- type: stealTargetGroup
|
||||
id: CP14Boar
|
||||
name: cp14-steal-target-boar
|
||||
sprite:
|
||||
sprite: _CP14/Mobs/Animals/boar.rsi
|
||||
state: dead
|
||||
Reference in New Issue
Block a user