Merge remote-tracking branch 'refs/remotes/wizards/master'
# Conflicts: # Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml # Resources/Prototypes/Entities/Mobs/Player/humanoid.yml
This commit is contained in:
commit
9fd0e0cff7
44 changed files with 4089 additions and 128 deletions
1915
Content.Server.Database/Migrations/Postgres/20240621120713_ConnectionLogTimeIndex.Designer.cs
generated
Normal file
1915
Content.Server.Database/Migrations/Postgres/20240621120713_ConnectionLogTimeIndex.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,27 @@
|
|||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Content.Server.Database.Migrations.Postgres
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class ConnectionLogTimeIndex : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_connection_log_time",
|
||||
table: "connection_log",
|
||||
column: "time");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_connection_log_time",
|
||||
table: "connection_log");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -559,6 +559,8 @@ namespace Content.Server.Database.Migrations.Postgres
|
|||
b.HasIndex("ServerId")
|
||||
.HasDatabaseName("IX_connection_log_server_id");
|
||||
|
||||
b.HasIndex("Time");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
|
||||
b.ToTable("connection_log", null, t =>
|
||||
|
|
|
|||
1840
Content.Server.Database/Migrations/Sqlite/20240621120705_ConnectionLogTimeIndex.Designer.cs
generated
Normal file
1840
Content.Server.Database/Migrations/Sqlite/20240621120705_ConnectionLogTimeIndex.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,27 @@
|
|||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Content.Server.Database.Migrations.Sqlite
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class ConnectionLogTimeIndex : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_connection_log_time",
|
||||
table: "connection_log",
|
||||
column: "time");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_connection_log_time",
|
||||
table: "connection_log");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -528,6 +528,8 @@ namespace Content.Server.Database.Migrations.Sqlite
|
|||
b.HasIndex("ServerId")
|
||||
.HasDatabaseName("IX_connection_log_server_id");
|
||||
|
||||
b.HasIndex("Time");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
|
||||
b.ToTable("connection_log", (string)null);
|
||||
|
|
|
|||
|
|
@ -187,6 +187,9 @@ namespace Content.Server.Database
|
|||
modelBuilder.Entity<ConnectionLog>()
|
||||
.HasIndex(p => p.UserId);
|
||||
|
||||
modelBuilder.Entity<ConnectionLog>()
|
||||
.HasIndex(p => p.Time);
|
||||
|
||||
modelBuilder.Entity<ConnectionLog>()
|
||||
.Property(p => p.ServerId)
|
||||
.HasDefaultValue(0);
|
||||
|
|
@ -694,6 +697,14 @@ namespace Content.Server.Database
|
|||
/// Intended use is for users with shared connections. This should not be used as an alternative to <see cref="Datacenter"/>.
|
||||
/// </remarks>
|
||||
IP = 1 << 1,
|
||||
|
||||
/// <summary>
|
||||
/// Ban is an IP range that is only applied for first time joins.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Intended for use with residential IP ranges that are often used maliciously.
|
||||
/// </remarks>
|
||||
BlacklistedRange = 1 << 2,
|
||||
// @formatter:on
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@ public sealed partial class AdminVerbSystem
|
|||
[ValidatePrototypeId<EntityPrototype>]
|
||||
private const string DefaultTraitorRule = "Traitor";
|
||||
|
||||
[ValidatePrototypeId<EntityPrototype>]
|
||||
private const string DefaultInitialInfectedRule = "Zombie";
|
||||
|
||||
[ValidatePrototypeId<EntityPrototype>]
|
||||
private const string DefaultNukeOpRule = "LoneOpsSpawn";
|
||||
|
||||
|
|
@ -63,6 +66,20 @@ public sealed partial class AdminVerbSystem
|
|||
};
|
||||
args.Verbs.Add(traitor);
|
||||
|
||||
Verb initialInfected = new()
|
||||
{
|
||||
Text = Loc.GetString("admin-verb-text-make-initial-infected"),
|
||||
Category = VerbCategory.Antag,
|
||||
Icon = new SpriteSpecifier.Rsi(new("/Textures/Interface/Misc/job_icons.rsi"), "InitialInfected"),
|
||||
Act = () =>
|
||||
{
|
||||
_antag.ForceMakeAntag<ZombieRuleComponent>(targetPlayer, DefaultInitialInfectedRule);
|
||||
},
|
||||
Impact = LogImpact.High,
|
||||
Message = Loc.GetString("admin-verb-make-initial-infected"),
|
||||
};
|
||||
args.Verbs.Add(initialInfected);
|
||||
|
||||
Verb zombie = new()
|
||||
{
|
||||
Text = Loc.GetString("admin-verb-text-make-zombie"),
|
||||
|
|
|
|||
|
|
@ -633,6 +633,11 @@ namespace Content.Server.Database
|
|||
return record == null ? null : MakePlayerRecord(record);
|
||||
}
|
||||
|
||||
protected async Task<bool> PlayerRecordExists(DbGuard db, NetUserId userId)
|
||||
{
|
||||
return await db.DbContext.Player.AnyAsync(p => p.UserId == userId);
|
||||
}
|
||||
|
||||
[return: NotNullIfNotNull(nameof(player))]
|
||||
protected PlayerRecord? MakePlayerRecord(Player? player)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -78,7 +78,8 @@ namespace Content.Server.Database
|
|||
await using var db = await GetDbImpl();
|
||||
|
||||
var exempt = await GetBanExemptionCore(db, userId);
|
||||
var query = MakeBanLookupQuery(address, userId, hwId, db, includeUnbanned: false, exempt)
|
||||
var newPlayer = userId == null || !await PlayerRecordExists(db, userId.Value);
|
||||
var query = MakeBanLookupQuery(address, userId, hwId, db, includeUnbanned: false, exempt, newPlayer)
|
||||
.OrderByDescending(b => b.BanTime);
|
||||
|
||||
var ban = await query.FirstOrDefaultAsync();
|
||||
|
|
@ -98,7 +99,8 @@ namespace Content.Server.Database
|
|||
await using var db = await GetDbImpl();
|
||||
|
||||
var exempt = await GetBanExemptionCore(db, userId);
|
||||
var query = MakeBanLookupQuery(address, userId, hwId, db, includeUnbanned, exempt);
|
||||
var newPlayer = !await db.PgDbContext.Player.AnyAsync(p => p.UserId == userId);
|
||||
var query = MakeBanLookupQuery(address, userId, hwId, db, includeUnbanned, exempt, newPlayer);
|
||||
|
||||
var queryBans = await query.ToArrayAsync();
|
||||
var bans = new List<ServerBanDef>(queryBans.Length);
|
||||
|
|
@ -122,7 +124,8 @@ namespace Content.Server.Database
|
|||
ImmutableArray<byte>? hwId,
|
||||
DbGuardImpl db,
|
||||
bool includeUnbanned,
|
||||
ServerBanExemptFlags? exemptFlags)
|
||||
ServerBanExemptFlags? exemptFlags,
|
||||
bool newPlayer)
|
||||
{
|
||||
DebugTools.Assert(!(address == null && userId == null && hwId == null));
|
||||
|
||||
|
|
@ -141,7 +144,9 @@ namespace Content.Server.Database
|
|||
{
|
||||
var newQ = db.PgDbContext.Ban
|
||||
.Include(p => p.Unban)
|
||||
.Where(b => b.Address != null && EF.Functions.ContainsOrEqual(b.Address.Value, address));
|
||||
.Where(b => b.Address != null
|
||||
&& EF.Functions.ContainsOrEqual(b.Address.Value, address)
|
||||
&& !(b.ExemptFlags.HasFlag(ServerBanExemptFlags.BlacklistedRange) && !newPlayer));
|
||||
|
||||
query = query == null ? newQ : query.Union(newQ);
|
||||
}
|
||||
|
|
@ -167,6 +172,9 @@ namespace Content.Server.Database
|
|||
|
||||
if (exemptFlags is { } exempt)
|
||||
{
|
||||
if (exempt != ServerBanExemptFlags.None)
|
||||
exempt |= ServerBanExemptFlags.BlacklistedRange; // Any kind of exemption should bypass BlacklistedRange
|
||||
|
||||
query = query.Where(b => (b.ExemptFlags & exempt) == 0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -86,11 +86,13 @@ namespace Content.Server.Database
|
|||
|
||||
var exempt = await GetBanExemptionCore(db, userId);
|
||||
|
||||
var newPlayer = userId == null || !await PlayerRecordExists(db, userId.Value);
|
||||
|
||||
// SQLite can't do the net masking stuff we need to match IP address ranges.
|
||||
// So just pull down the whole list into memory.
|
||||
var bans = await GetAllBans(db.SqliteDbContext, includeUnbanned: false, exempt);
|
||||
|
||||
return bans.FirstOrDefault(b => BanMatches(b, address, userId, hwId, exempt)) is { } foundBan
|
||||
return bans.FirstOrDefault(b => BanMatches(b, address, userId, hwId, exempt, newPlayer)) is { } foundBan
|
||||
? ConvertBan(foundBan)
|
||||
: null;
|
||||
}
|
||||
|
|
@ -103,12 +105,14 @@ namespace Content.Server.Database
|
|||
|
||||
var exempt = await GetBanExemptionCore(db, userId);
|
||||
|
||||
var newPlayer = !await db.SqliteDbContext.Player.AnyAsync(p => p.UserId == userId);
|
||||
|
||||
// SQLite can't do the net masking stuff we need to match IP address ranges.
|
||||
// So just pull down the whole list into memory.
|
||||
var queryBans = await GetAllBans(db.SqliteDbContext, includeUnbanned, exempt);
|
||||
|
||||
return queryBans
|
||||
.Where(b => BanMatches(b, address, userId, hwId, exempt))
|
||||
.Where(b => BanMatches(b, address, userId, hwId, exempt, newPlayer))
|
||||
.Select(ConvertBan)
|
||||
.ToList()!;
|
||||
}
|
||||
|
|
@ -137,10 +141,18 @@ namespace Content.Server.Database
|
|||
IPAddress? address,
|
||||
NetUserId? userId,
|
||||
ImmutableArray<byte>? hwId,
|
||||
ServerBanExemptFlags? exemptFlags)
|
||||
ServerBanExemptFlags? exemptFlags,
|
||||
bool newPlayer)
|
||||
{
|
||||
// Any flag to bypass BlacklistedRange bans.
|
||||
var exemptFromBlacklistedRange = exemptFlags != null && exemptFlags.Value != ServerBanExemptFlags.None;
|
||||
|
||||
if (!exemptFlags.GetValueOrDefault(ServerBanExemptFlags.None).HasFlag(ServerBanExemptFlags.IP)
|
||||
&& address != null && ban.Address is not null && address.IsInSubnet(ban.Address.ToTuple().Value))
|
||||
&& address != null
|
||||
&& ban.Address is not null
|
||||
&& address.IsInSubnet(ban.Address.ToTuple().Value)
|
||||
&& (!ban.ExemptFlags.HasFlag(ServerBanExemptFlags.BlacklistedRange) ||
|
||||
newPlayer && !exemptFromBlacklistedRange))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ using Content.Server.Antag;
|
|||
using Content.Server.Chat.Systems;
|
||||
using Content.Server.GameTicking.Rules.Components;
|
||||
using Content.Server.Popups;
|
||||
using Content.Server.Roles;
|
||||
using Content.Server.RoundEnd;
|
||||
using Content.Server.Station.Components;
|
||||
using Content.Server.Station.Systems;
|
||||
|
|
@ -35,9 +36,27 @@ public sealed class ZombieRuleSystem : GameRuleSystem<ZombieRuleComponent>
|
|||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<InitialInfectedRoleComponent, GetBriefingEvent>(OnGetBriefing);
|
||||
SubscribeLocalEvent<ZombieRoleComponent, GetBriefingEvent>(OnGetBriefing);
|
||||
SubscribeLocalEvent<IncurableZombieComponent, ZombifySelfActionEvent>(OnZombifySelf);
|
||||
}
|
||||
|
||||
private void OnGetBriefing(EntityUid uid, InitialInfectedRoleComponent component, ref GetBriefingEvent args)
|
||||
{
|
||||
if (!TryComp<MindComponent>(uid, out var mind) || mind.OwnedEntity == null)
|
||||
return;
|
||||
if (HasComp<ZombieRoleComponent>(uid)) // don't show both briefings
|
||||
return;
|
||||
args.Append(Loc.GetString("zombie-patientzero-role-greeting"));
|
||||
}
|
||||
|
||||
private void OnGetBriefing(EntityUid uid, ZombieRoleComponent component, ref GetBriefingEvent args)
|
||||
{
|
||||
if (!TryComp<MindComponent>(uid, out var mind) || mind.OwnedEntity == null)
|
||||
return;
|
||||
args.Append(Loc.GetString("zombie-infection-greeting"));
|
||||
}
|
||||
|
||||
protected override void AppendRoundEndText(EntityUid uid, ZombieRuleComponent component, GameRuleComponent gameRule,
|
||||
ref RoundEndTextAppendEvent args)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -24,6 +24,9 @@ public sealed partial class ToggleableGhostRoleComponent : Component
|
|||
[DataField("roleDescription")]
|
||||
public string RoleDescription = string.Empty;
|
||||
|
||||
[DataField("roleRules")]
|
||||
public string RoleRules = string.Empty;
|
||||
|
||||
[DataField("wipeVerbText")]
|
||||
public string WipeVerbText = string.Empty;
|
||||
|
||||
|
|
|
|||
|
|
@ -53,13 +53,14 @@ public sealed class ToggleableGhostRoleSystem : EntitySystem
|
|||
EnsureComp<GhostTakeoverAvailableComponent>(uid);
|
||||
ghostRole.RoleName = Loc.GetString(component.RoleName);
|
||||
ghostRole.RoleDescription = Loc.GetString(component.RoleDescription);
|
||||
ghostRole.RoleRules = Loc.GetString(component.RoleRules);
|
||||
}
|
||||
|
||||
private void OnExamined(EntityUid uid, ToggleableGhostRoleComponent component, ExaminedEvent args)
|
||||
{
|
||||
if (!args.IsInDetailsRange)
|
||||
return;
|
||||
|
||||
|
||||
if (TryComp<MindContainerComponent>(uid, out var mind) && mind.HasMind)
|
||||
{
|
||||
args.PushMarkup(Loc.GetString(component.ExamineTextMindPresent));
|
||||
|
|
|
|||
|
|
@ -13,10 +13,11 @@ public abstract partial class SharedBuckleSystem
|
|||
private void InitializeInteraction()
|
||||
{
|
||||
SubscribeLocalEvent<StrapComponent, GetVerbsEvent<InteractionVerb>>(AddStrapVerbs);
|
||||
SubscribeLocalEvent<StrapComponent, InteractHandEvent>(OnStrapInteractHand);
|
||||
SubscribeLocalEvent<StrapComponent, InteractHandEvent>(OnStrapInteractHand, after: [typeof(InteractionPopupSystem)]);
|
||||
SubscribeLocalEvent<StrapComponent, DragDropTargetEvent>(OnStrapDragDropTarget);
|
||||
SubscribeLocalEvent<StrapComponent, CanDropTargetEvent>(OnCanDropTarget);
|
||||
|
||||
SubscribeLocalEvent<BuckleComponent, InteractHandEvent>(OnBuckleInteractHand, after: [typeof(InteractionPopupSystem)]);
|
||||
SubscribeLocalEvent<BuckleComponent, GetVerbsEvent<InteractionVerb>>(AddUnbuckleVerb);
|
||||
}
|
||||
|
||||
|
|
@ -58,6 +59,9 @@ public abstract partial class SharedBuckleSystem
|
|||
if (args.Handled)
|
||||
return;
|
||||
|
||||
if (!component.Enabled)
|
||||
return;
|
||||
|
||||
if (!TryComp(args.User, out BuckleComponent? buckle))
|
||||
return;
|
||||
|
||||
|
|
@ -68,7 +72,20 @@ public abstract partial class SharedBuckleSystem
|
|||
else
|
||||
return;
|
||||
|
||||
args.Handled = true; // This generate popups on failure.
|
||||
// TODO BUCKLE add out bool for whether a pop-up was generated or not.
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private void OnBuckleInteractHand(Entity<BuckleComponent> ent, ref InteractHandEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
if (ent.Comp.BuckledTo != null)
|
||||
TryUnbuckle(ent!, args.User, popup: true);
|
||||
|
||||
// TODO BUCKLE add out bool for whether a pop-up was generated or not.
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private void AddStrapVerbs(EntityUid uid, StrapComponent component, GetVerbsEvent<InteractionVerb> args)
|
||||
|
|
|
|||
|
|
@ -313,5 +313,22 @@ Entries:
|
|||
id: 38
|
||||
time: '2024-06-15T11:25:42.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/28899
|
||||
- author: slarticodefast
|
||||
changes:
|
||||
- message: Added the "Make Inititial Infected" verb to the antag control.
|
||||
type: Add
|
||||
id: 39
|
||||
time: '2024-06-21T05:42:17.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/29259
|
||||
- author: nikthechampiongr
|
||||
changes:
|
||||
- message: It is now possible to issue BlacklistedRanges bans(This requires you
|
||||
to edit the database manually at the moment.) Bans marked as BlacklistedRange
|
||||
will lead to players joining for the first time who match an ip range to be
|
||||
denied. Players that have joined the server before will be unaffected.
|
||||
type: Add
|
||||
id: 40
|
||||
time: '2024-06-21T12:06:07.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/29258
|
||||
Name: Admin
|
||||
Order: 1
|
||||
|
|
|
|||
|
|
@ -1,26 +1,4 @@
|
|||
Entries:
|
||||
- author: deltanedas
|
||||
changes:
|
||||
- message: Disabled scooping foam due to a reagent duplication bug.
|
||||
type: Fix
|
||||
id: 6296
|
||||
time: '2024-04-03T13:41:23.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/26686
|
||||
- author: Aserovich
|
||||
changes:
|
||||
- message: New lobby art!
|
||||
type: Add
|
||||
id: 6297
|
||||
time: '2024-04-04T05:28:30.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/26505
|
||||
- author: Beck Thompson
|
||||
changes:
|
||||
- message: Items thrown at disposals now have to be insertable to display the miss
|
||||
message.
|
||||
type: Fix
|
||||
id: 6298
|
||||
time: '2024-04-04T06:25:47.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/26716
|
||||
- author: Tayrtahn
|
||||
changes:
|
||||
- message: Some devices may have broken wiring at the start of each round.
|
||||
|
|
@ -3845,3 +3823,30 @@
|
|||
id: 6795
|
||||
time: '2024-06-21T03:02:23.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/29268
|
||||
- author: slarticodefast
|
||||
changes:
|
||||
- message: Fixed initial infected status icons not showing up.
|
||||
type: Fix
|
||||
- message: Added an antagonist message to the character menu for initial infected
|
||||
and zombies.
|
||||
type: Add
|
||||
id: 6796
|
||||
time: '2024-06-21T05:42:17.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/29259
|
||||
- author: Chief_Engineer and TsjipTsjip
|
||||
changes:
|
||||
- message: All ghostroles now have their role type, as defined in the rules, defined
|
||||
in their ghostrole request box.
|
||||
type: Tweak
|
||||
id: 6797
|
||||
time: '2024-06-21T09:41:54.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/29249
|
||||
- author: ElectroJr
|
||||
changes:
|
||||
- message: Fixed not being able to pick up folded rollerbeds.
|
||||
type: Fix
|
||||
- message: Fixed not being able to unbuckle entities by clicking on them.
|
||||
type: Fix
|
||||
id: 6798
|
||||
time: '2024-06-21T10:50:53.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/29293
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
verb-categories-antag = Antag ctrl
|
||||
admin-verb-make-traitor = Make the target into a traitor.
|
||||
admin-verb-make-initial-infected = Make the target into an Initial Infected.
|
||||
admin-verb-make-zombie = Zombifies the target immediately.
|
||||
admin-verb-make-nuclear-operative = Make target into a lone Nuclear Operative.
|
||||
admin-verb-make-pirate = Make the target into a pirate. Note this doesn't configure the game rule.
|
||||
|
|
@ -7,8 +8,9 @@ admin-verb-make-head-rev = Make the target into a Head Revolutionary.
|
|||
admin-verb-make-thief = Make the target into a thief.
|
||||
|
||||
admin-verb-text-make-traitor = Make Traitor
|
||||
admin-verb-text-make-initial-infected = Make Initial Infected
|
||||
admin-verb-text-make-zombie = Make Zombie
|
||||
admin-verb-text-make-nuclear-operative = Make Nuclear Operative
|
||||
admin-verb-text-make-pirate = Make Pirate
|
||||
admin-verb-text-make-head-rev = Make Head Rev
|
||||
admin-verb-text-make-thief = Make Thief
|
||||
admin-verb-text-make-thief = Make Thief
|
||||
|
|
|
|||
|
|
@ -3,6 +3,26 @@ ghost-role-component-default-rules = All normal rules apply unless an administra
|
|||
You don't remember any of your previous life, and you don't remember anything you learned as a ghost.
|
||||
You are allowed to remember knowledge about the game in general, such as how to cook, how to use objects, etc.
|
||||
You are absolutely [color=red]NOT[/color] allowed to remember, say, the name, appearance, etc. of your previous character.
|
||||
ghost-role-information-nonantagonist-rules = You are a [color=green][bold]Non-antagonist[/bold][/color]. You should generally not seek to harm the station and its crew.
|
||||
You don't remember any of your previous life, and you don't remember anything you learned as a ghost.
|
||||
You are allowed to remember knowledge about the game in general, such as how to cook, how to use objects, etc.
|
||||
You are absolutely [color=red]NOT[/color] allowed to remember, say, the name, appearance, etc. of your previous character.
|
||||
ghost-role-information-freeagent-rules = You are a [color=yellow][bold]Free Agent[/bold][/color]. You are free to act as either an antagonist or a non-antagonist.
|
||||
You don't remember any of your previous life, and you don't remember anything you learned as a ghost.
|
||||
You are allowed to remember knowledge about the game in general, such as how to cook, how to use objects, etc.
|
||||
You are absolutely [color=red]NOT[/color] allowed to remember, say, the name, appearance, etc. of your previous character.
|
||||
ghost-role-information-antagonist-rules = You are a [color=red][bold]Solo Antagonist[/bold][/color]. Your intentions are clear, and harmful to the station and its crew.
|
||||
You don't remember any of your previous life, and you don't remember anything you learned as a ghost.
|
||||
You are allowed to remember knowledge about the game in general, such as how to cook, how to use objects, etc.
|
||||
You are absolutely [color=red]NOT[/color] allowed to remember, say, the name, appearance, etc. of your previous character.
|
||||
ghost-role-information-familiar-rules = You are a [color=#6495ed][bold]Familiar[/bold][/color]. Serve the interests of your master, whatever those may be.
|
||||
You don't remember any of your previous life, and you don't remember anything you learned as a ghost.
|
||||
You are allowed to remember knowledge about the game in general, such as how to cook, how to use objects, etc.
|
||||
You are absolutely [color=red]NOT[/color] allowed to remember, say, the name, appearance, etc. of your previous character.
|
||||
ghost-role-information-silicon-rules = You are a [color=#6495ed][bold]Silicon[/bold][/color]. Obey your laws. You are a Free Agent if you are not currently bound by any laws.
|
||||
You don't remember any of your previous life, and you don't remember anything you learned as a ghost.
|
||||
You are allowed to remember knowledge about the game in general, such as how to cook, how to use objects, etc.
|
||||
You are absolutely [color=red]NOT[/color] allowed to remember, say, the name, appearance, etc. of your previous character.
|
||||
|
||||
ghost-role-information-mouse-name = Mouse
|
||||
ghost-role-information-mouse-description = A hungry and mischievous mouse.
|
||||
|
|
@ -12,6 +32,7 @@ ghost-role-information-mothroach-description = A cute but mischievous mothroach.
|
|||
|
||||
ghost-role-information-giant-spider-name = Giant spider
|
||||
ghost-role-information-giant-spider-description = This station's inhabitants look mighty tasty, and your sticky web is perfect to catch them!
|
||||
ghost-role-information-giant-spider-rules = You are a [color=red][bold]Team Antagonist[/bold][/color] with all other giant spiders.
|
||||
|
||||
ghost-role-information-cognizine-description = Made conscious with the magic of cognizine.
|
||||
|
||||
|
|
@ -26,6 +47,7 @@ ghost-role-information-slimes-description = An ordinary slime with no special ne
|
|||
|
||||
ghost-role-information-angry-slimes-name = Slime
|
||||
ghost-role-information-angry-slimes-description = Everyone around you irritates your instincts, destroy them!
|
||||
ghost-role-information-angry-slimes-rules = You are a [color=red][bold]Team Antagonist[/bold][/color] with all other angry slimes.
|
||||
|
||||
ghost-role-information-smile-name = Smile the Slime
|
||||
ghost-role-information-smile-description = The sweetest creature in the world. Smile Slime!
|
||||
|
|
@ -35,11 +57,10 @@ ghost-role-information-punpun-description = An honorable member of the monkey so
|
|||
|
||||
ghost-role-information-xeno-name = Xeno
|
||||
ghost-role-information-xeno-description = You are a xeno, co-operate with your hive to kill all crewmembers!
|
||||
ghost-role-information-xeno-rules = You are an antagonist, smack, slash, and wack!
|
||||
ghost-role-information-xeno-rules = You are a [color=red][bold]Team Antagonist[/bold][/color] with all other xenos.
|
||||
|
||||
ghost-role-information-revenant-name = Revenant
|
||||
ghost-role-information-revenant-description = You are a Revenant. Use your powers to harvest souls and unleash chaos upon the crew. Unlock new abilities with the essence you harvest.
|
||||
ghost-role-information-revenant-rules = You are an antagonist, harvest, defile, and drive the crew insane.
|
||||
|
||||
ghost-role-information-kangaroo-name = Kangaroo
|
||||
ghost-role-information-kangaroo-description = You're a kangaroo! Do whatever kangaroos do.
|
||||
|
|
@ -51,31 +72,17 @@ ghost-role-information-kobold-name = Kobold
|
|||
ghost-role-information-kobold-description = Be the little gremlin you are, yell at people and beg for meat!
|
||||
|
||||
ghost-role-information-rat-king-name = Rat King
|
||||
ghost-role-information-rat-king-description = You are the Rat King, scavenge food in order to produce rat minions to do your bidding.
|
||||
ghost-role-information-rat-king-rules = You are an antagonist, scavenge, attack, and grow your hoard!
|
||||
ghost-role-information-rat-king-description = You are the Rat King, your interests are food, food, and more food. Cooperate with or fight against the station for food. Did I say food interests you?
|
||||
|
||||
ghost-role-information-rat-servant-name = Rat Servant
|
||||
ghost-role-information-rat-servant-description = You are a Rat Servant. You must follow your king's orders.
|
||||
ghost-role-information-rat-servant-rules = You are an antagonist, scavenge, attack, and serve your king!
|
||||
|
||||
ghost-role-information-salvage-carp-name = Space carp on salvage wreck
|
||||
ghost-role-information-salvage-carp-description = Defend the loot inside the salvage wreck!
|
||||
|
||||
ghost-role-information-sentient-carp-name = Sentient Carp
|
||||
ghost-role-information-sentient-carp-description = Help the dragon flood the station with carps!
|
||||
|
||||
ghost-role-information-salvage-shark-name = Space sharkminnow on salvage wreck
|
||||
ghost-role-information-salvage-shark-description = Help the younger fellow carp protect their prey. Smell the blood!
|
||||
|
||||
ghost-role-information-willow-name = Willow the kangaroo
|
||||
ghost-role-information-willow-description = You're a kangaroo named willow! Willow likes to box.
|
||||
|
||||
ghost-role-information-space-tick-name = Space tick
|
||||
ghost-role-information-space-tick-description = Wreak havoc on the station!
|
||||
|
||||
ghost-role-information-salvage-tick-name = Space tick on salvage wreck
|
||||
ghost-role-information-salvage-tick-description = Defend the loot inside the salvage wreck!
|
||||
|
||||
ghost-role-information-honkbot-name = Honkbot
|
||||
ghost-role-information-honkbot-description = An artificial being of pure evil.
|
||||
|
||||
|
|
@ -85,39 +92,13 @@ ghost-role-information-jonkbot-description = An artificial being of pure evil.
|
|||
ghost-role-information-mimebot-name = Mimebot
|
||||
ghost-role-information-mimebot-description = A Mimebot, act like a mime but don't act like a greytider.
|
||||
|
||||
ghost-role-information-taxibot-name = TaxiBot
|
||||
ghost-role-information-taxibot-description = Drive the station crew to their destination.
|
||||
|
||||
ghost-role-information-supplybot-name = SupplyBot
|
||||
ghost-role-information-supplybot-description = Deliver goods around the station.
|
||||
|
||||
ghost-role-information-space-bear-name = Space bear
|
||||
ghost-role-information-space-bear-description = Your tummy rumbles, and these people look really yummy... What a feast!
|
||||
|
||||
ghost-role-information-salvage-bear-name = Space bear on salvage wreck
|
||||
ghost-role-information-salvage-bear-description = Defend the loot inside the salvage wreck!
|
||||
|
||||
ghost-role-information-space-kangaroo-name = Space kangaroo
|
||||
ghost-role-information-space-kangaroo-description = Give the crew a taste of your sharp claws!
|
||||
|
||||
ghost-role-information-salvage-kangaroo-name = Space kangaroo on salvage wreck
|
||||
ghost-role-information-salvage-kangaroo-description = Defend the loot inside the salvage wreck!
|
||||
|
||||
ghost-role-information-space-spider-name = Space spider
|
||||
ghost-role-information-space-spider-description = Space spiders are just as aggressive as regular spiders, feed.
|
||||
|
||||
ghost-role-information-salvage-spider-name = Space spider on salvage wreck
|
||||
ghost-role-information-salvage-spider-description = Space spiders are just as aggressive as regular spiders, feed.
|
||||
|
||||
ghost-role-information-space-cobra-name = Space cobra
|
||||
ghost-role-information-space-cobra-description = Space cobras really don't like guests, and will always snack on a visitor.
|
||||
|
||||
ghost-role-information-salvage-cobra-name = Space cobra on salvage wreck
|
||||
ghost-role-information-salvage-cobra-description = Space cobras really don't like guests, and will always snack on a visitor.
|
||||
|
||||
ghost-role-information-salvage-flesh-name = Aberrant flesh on salvage wreck
|
||||
ghost-role-information-salvage-flesh-description = Defend the loot inside the salvage wreck!
|
||||
|
||||
# Still exists as a commented out reference for Tropico. Keeping it around. -TsjipTsjip, 2024-06-20
|
||||
ghost-role-information-tropico-name = Tropico
|
||||
ghost-role-information-tropico-description = The noble companion of Atmosia, and its most stalwart defender. Viva!
|
||||
|
||||
|
|
@ -135,7 +116,11 @@ ghost-role-information-ifrit-description = Listen to your owner. Don't tank dama
|
|||
|
||||
ghost-role-information-space-dragon-name = Space dragon
|
||||
ghost-role-information-space-dragon-description = Call in 3 carp rifts and take over this quadrant! You have only 5 minutes in between each rift before you will disappear.
|
||||
ghost-role-information-space-dragon-rules = You are a [color=red][bold]Team Antagonist[/bold][/color] with all your summoned carp.
|
||||
ghost-role-information-space-dragon-summoned-carp-rules = You are a [color=red][bold]Team Antagonist[/bold][/color] with your dragon and its allies.
|
||||
|
||||
ghost-role-information-space-dragon-dungeon-description = Defend the expedition dungeon with your fishy comrades!
|
||||
ghost-role-information-space-dragon-dungeon-rules = You are a [color=red][bold]Team Antagonist[/bold][/color] with all dungeon mobs.
|
||||
|
||||
ghost-role-information-cluwne-name = Cluwne
|
||||
ghost-role-information-cluwne-description = Become a pitiful cluwne, your only goal in life is to find a sweet release from your suffering (usually by being beaten to death). A cluwne is not an antagonist but may defend itself. Crewmembers may murder cluwnes freely.
|
||||
|
|
@ -147,19 +132,13 @@ ghost-role-information-skeleton-biker-name = Skeleton Biker
|
|||
ghost-role-information-skeleton-biker-description = Ride around on your sweet ride.
|
||||
|
||||
ghost-role-information-closet-skeleton-name = Closet Skeleton
|
||||
ghost-role-information-closet-skeleton-description = Wreak havoc! You are a primordial force with no allegiance. Live happily with the crew or wage sweet skeletal war.
|
||||
|
||||
ghost-role-information-onestar-mecha-name = Onestar Mecha
|
||||
ghost-role-information-onestar-mecha-description = You are an experimental mecha created by who-knows-what, all you know is that you have weapons and you detect fleshy moving targets nearby...
|
||||
ghost-role-information-onestar-mecha-rules = Use your weapons to cause havoc. You are an antagonist.
|
||||
ghost-role-information-closet-skeleton-description = You are arguably one of the oldest members of the station! Get your old job back, or cause chaos! The world is yours to shape.
|
||||
|
||||
ghost-role-information-remilia-name = Remilia, the chaplain's familiar
|
||||
ghost-role-information-remilia-description = Obey your master. Eat fruit.
|
||||
ghost-role-information-remilia-rules = You are an intelligent fruit bat. Follow the chaplain around. Don't cause any trouble unless the chaplain tells you to.
|
||||
ghost-role-information-remilia-description = Follow and obey the chaplain. Eat fruit. Screech loudly into people's ears and write it off as echolocation.
|
||||
|
||||
ghost-role-information-cerberus-name = Cerberus, Evil Familiar
|
||||
ghost-role-information-cerberus-description = Obey your master. Spread chaos.
|
||||
ghost-role-information-cerberus-rules = You are an intelligent, demonic dog. Try to help the chaplain and any of his flock. As an antagonist, you're otherwise unrestrained.
|
||||
|
||||
ghost-role-information-ert-leader-name = ERT Leader
|
||||
ghost-role-information-ert-leader-description = Lead a team of specialists to resolve the station's issues.
|
||||
|
|
@ -185,70 +164,64 @@ ghost-role-information-cburn-agent-description = A highly trained CentCom agent,
|
|||
ghost-role-information-centcom-official-name = CentComm official
|
||||
ghost-role-information-centcom-official-description = Perform CentComm related duties such as inspect the station, jotting down performance reviews for heads of staff, and managing the fax machine.
|
||||
|
||||
ghost-role-information-nukeop-rules = You are a syndicate operative tasked with the destruction of the station. As an antagonist, do whatever is required to complete this task.
|
||||
ghost-role-information-nukeop-rules = You are a [color=red][bold]Team Antagonist[/bold][/color] with all other nuclear operatives. Covert syndicate agents are not guaranteed to help you.
|
||||
|
||||
ghost-role-information-loneop-name = Lone Operative
|
||||
ghost-role-information-loneop-description = You are a lone nuclear operative. Destroy the station!
|
||||
ghost-role-information-loneop-rules = You are a syndicate operative tasked with the destruction of the station. As an antagonist, do whatever is required to complete this task.
|
||||
ghost-role-information-loneop-rules = You are a [color=red][bold]Team Antagonist[/bold][/color] with all other nuclear operatives. Covert syndicate agents are not guaranteed to help you.
|
||||
|
||||
ghost-role-information-behonker-name = Behonker
|
||||
ghost-role-information-behonker-description = You are an antagonist, bring death and honks to those who do not follow the honkmother.
|
||||
|
||||
ghost-role-information-hellspawn-name = Hellspawn
|
||||
ghost-role-information-hellspawn-description = You are an antagonist, bring death to those who do not follow the great god Nar'Sie.
|
||||
ghost-role-information-hellspawn-description = Bring death to those who do not follow the great god Nar'Sie.
|
||||
|
||||
ghost-role-information-Death-Squad-name = Death Squad Operative
|
||||
ghost-role-information-Death-Squad-description = One of Nanotrasen's top internal affairs agents. Await orders from CentComm or an official.
|
||||
ghost-role-information-Death-Squad-rules = You are required to obey orders given by your superior, you are effectively their [color=#6495ed][bold]Familiar[/bold][/color].
|
||||
|
||||
ghost-role-information-SyndiCat-name = SyndiCat
|
||||
ghost-role-information-SyndiCat-description = You're the faithful trained pet of nuclear operatives with a microbomb. Serve your master to the death!
|
||||
ghost-role-information-SyndiCat-rules = You're the faithful trained pet of nuclear operatives with a microbomb. Serve your master to the death!
|
||||
ghost-role-information-SyndiCat-rules = You are a [color=red][bold]Team Antagonist[/bold][/color] with the agent who summoned you.
|
||||
|
||||
ghost-role-information-Cak-name = Cak
|
||||
ghost-role-information-Cak-description = You are the chef's favorite child. You're a living cake cat.
|
||||
ghost-role-information-Cak-rules = You are a living edible sweet cat. Your task is to find your place in this world where everything wants to eat you.
|
||||
|
||||
ghost-role-information-BreadDog-name = BreadDog
|
||||
ghost-role-information-BreadDog-description = You are the chef's favorite child. You're a living bread dog.
|
||||
ghost-role-information-BreadDog-rules = You're an edible dog made of bread. Your task is to find your place in this world where everything wants to eat you.
|
||||
|
||||
ghost-role-information-space-ninja-name = Space Ninja
|
||||
ghost-role-information-space-ninja-description = Use stealth and deception to sabotage the station.
|
||||
ghost-role-information-space-ninja-rules = You are an elite mercenary of the Spider Clan. You aren't required to follow your objectives, yet your NINJA HONOR demands you try.
|
||||
|
||||
ghost-role-information-syndicate-reinforcement-name = Syndicate Agent
|
||||
ghost-role-information-syndicate-reinforcement-description = Someone needs reinforcements. You, the first person the syndicate could find, will help them.
|
||||
ghost-role-information-syndicate-reinforcement-rules = Normal syndicate antagonist rules apply. Work with whoever called you in, and don't harm them.
|
||||
ghost-role-information-syndicate-reinforcement-rules = You are a [color=red][bold]Team Antagonist[/bold][/color] with the agent who summoned you.
|
||||
|
||||
ghost-role-information-syndicate-monkey-reinforcement-name = Syndicate Monkey Agent
|
||||
ghost-role-information-syndicate-monkey-reinforcement-description = Someone needs reinforcements. You, a trained monkey, will help them.
|
||||
ghost-role-information-syndicate-monkey-reinforcement-rules = Normal syndicate antagonist rules apply. Work with whoever called you in, and don't harm them.
|
||||
ghost-role-information-syndicate-monkey-reinforcement-rules = You are a [color=red][bold]Team Antagonist[/bold][/color] with the agent who summoned you.
|
||||
|
||||
ghost-role-information-lost-cargo-technical-name = Lost Cargo Technician
|
||||
ghost-role-information-lost-cargo-technical-description = Something went wrong and your cargo shuttle with the goods was beamed into the sector to another station.
|
||||
ghost-role-information-lost-cargo-technical-rules = You're a regular cargo technician from another station. Do what regular cargo do.
|
||||
|
||||
ghost-role-information-clown-troupe-name = Space Clown
|
||||
ghost-role-information-clown-troupe-description = You and your troupe have come to cheer up this station with your best jokes. Honk!
|
||||
ghost-role-information-clown-troupe-rules = Normal station crew rules apply.
|
||||
|
||||
ghost-role-information-traveling-chef-name = Traveling Chef
|
||||
ghost-role-information-traveling-chef-description = You are a chef on a traveling shuttle of exotic cuisine. Delight the station with delicious food!
|
||||
ghost-role-information-traveling-chef-rules = Normal station crew rules apply.
|
||||
|
||||
ghost-role-information-disaster-victim-name = Disaster Victim
|
||||
ghost-role-information-disaster-victim-description = You were rescued in an escape pod from another station that suffered a terrible fate. Perhaps you will be found and rescued.
|
||||
ghost-role-information-disaster-victim-rules = Normal station crew rules apply.
|
||||
|
||||
ghost-role-information-syndie-disaster-victim-name = Syndie Disaster Victim
|
||||
ghost-role-information-syndie-disaster-victim-description = You're a regular passenger from a syndicate station. Unfortunately, an evacuation pod has thrown you into an enemy sector.....
|
||||
ghost-role-information-syndie-disaster-victim-rules = Normal station crew rules apply. You are NOT an antagonist!
|
||||
|
||||
ghost-role-information-syndicate-kobold-reinforcement-name = Syndicate Kobold Agent
|
||||
ghost-role-information-syndicate-kobold-reinforcement-description = Someone needs reinforcements. You, a trained kobold, will help them.
|
||||
ghost-role-information-syndicate-kobold-reinforcement-rules = Normal syndicate antagonist rules apply. Work with whoever called you in, and don't harm them.
|
||||
ghost-role-information-syndicate-kobold-reinforcement-rules = You are a [color=red][bold]Team Antagonist[/bold][/color] with the agent who summoned you.
|
||||
|
||||
ghost-role-information-artifact-name = Sentient Artifact
|
||||
ghost-role-information-artifact-description =
|
||||
Enact your eldritch whims.
|
||||
Forcibly activate your nodes for good or for evil.
|
||||
ghost-role-information-artifact-description = Enact your eldritch whims. Forcibly activate your nodes for good or for evil.
|
||||
|
||||
ghost-role-information-syndie-assaultborg-name = Syndicate Assault Borg
|
||||
ghost-role-information-syndie-assaultborg-description = Nuclear operatives needs reinforcements. You, a cold silicon killing machine, will help them. More dakka!
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
- type: entity
|
||||
id: BaseBorgArmLeft
|
||||
parent: PartSilicon
|
||||
name: left cyborg arm
|
||||
name: cyborg left arm
|
||||
abstract: true
|
||||
components:
|
||||
- type: BodyPart
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
- type: entity
|
||||
id: BaseBorgArmRight
|
||||
parent: PartSilicon
|
||||
name: right cyborg arm
|
||||
name: cyborg right arm
|
||||
abstract: true
|
||||
components:
|
||||
- type: BodyPart
|
||||
|
|
@ -57,7 +57,7 @@
|
|||
- type: entity
|
||||
id: BaseBorgLegLeft
|
||||
parent: PartSilicon
|
||||
name: left cyborg leg
|
||||
name: cyborg left leg
|
||||
abstract: true
|
||||
components:
|
||||
- type: BodyPart
|
||||
|
|
@ -71,7 +71,7 @@
|
|||
- type: entity
|
||||
id: BaseBorgLegRight
|
||||
parent: PartSilicon
|
||||
name: right cyborg leg
|
||||
name: cyborg right leg
|
||||
abstract: true
|
||||
components:
|
||||
- type: BodyPart
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-rat-king-name
|
||||
description: ghost-role-information-rat-king-description
|
||||
rules: ghost-role-information-rat-king-rules
|
||||
rules: ghost-role-information-freeagent-rules
|
||||
requirements:
|
||||
- !type:OverallPlaytimeRequirement
|
||||
time: 36000 #10 hrs # Sunrise-RoleTime
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-remilia-name
|
||||
description: ghost-role-information-remilia-description
|
||||
rules: ghost-role-information-remilia-rules
|
||||
rules: ghost-role-information-familiar-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: GhostRoleMobSpawner
|
||||
|
|
@ -63,7 +63,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-cerberus-name
|
||||
description: ghost-role-information-cerberus-description
|
||||
rules: ghost-role-information-cerberus-rules
|
||||
rules: ghost-role-information-familiar-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostRoleMobSpawner
|
||||
|
|
@ -181,7 +181,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-space-dragon-name
|
||||
description: ghost-role-information-space-dragon-description
|
||||
rules: ghost-role-component-default-rules
|
||||
rules: ghost-role-component-space-dragon-rules
|
||||
requirements:
|
||||
- !type:OverallPlaytimeRequirement
|
||||
time: 36000 #10 hrs # Sunrise-RoleTime
|
||||
|
|
@ -202,7 +202,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-space-ninja-name
|
||||
description: ghost-role-information-space-ninja-description
|
||||
rules: ghost-role-information-space-ninja-rules
|
||||
rules: ghost-role-information-antagonist-rules
|
||||
requirements:
|
||||
- !type:DepartmentTimeRequirement
|
||||
department: Security
|
||||
|
|
|
|||
|
|
@ -421,6 +421,7 @@
|
|||
allowMovement: true
|
||||
name: ghost-role-information-mothroach-name
|
||||
description: ghost-role-information-mothroach-description
|
||||
rules: ghost-role-information-freeagent-rules
|
||||
- type: Fixtures
|
||||
fixtures:
|
||||
fix1:
|
||||
|
|
@ -1104,6 +1105,7 @@
|
|||
prob: 0.25
|
||||
name: ghost-role-information-kangaroo-name
|
||||
description: ghost-role-information-kangaroo-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
- type: GhostTakeoverAvailable
|
||||
- type: Vocal
|
||||
sounds:
|
||||
|
|
@ -1278,6 +1280,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-monkey-name
|
||||
description: ghost-role-information-monkey-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
- type: GhostTakeoverAvailable
|
||||
- type: Clumsy
|
||||
clumsyDamage:
|
||||
|
|
@ -1312,6 +1315,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-monkey-name
|
||||
description: ghost-role-information-monkey-description
|
||||
rules: ghost-role-information-syndicate-monkey-reinforcement-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
@ -1443,6 +1447,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-kobold-name
|
||||
description: ghost-role-information-kobold-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
|
||||
- type: entity
|
||||
name: kobold
|
||||
|
|
@ -1516,6 +1521,7 @@
|
|||
allowMovement: true
|
||||
name: ghost-role-information-mouse-name
|
||||
description: ghost-role-information-mouse-description
|
||||
rules: ghost-role-information-freeagent-rules
|
||||
- type: GhostTakeoverAvailable
|
||||
- type: Speech
|
||||
speechSounds: Squeak
|
||||
|
|
@ -2307,6 +2313,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-giant-spider-name
|
||||
description: ghost-role-information-giant-spider-description
|
||||
rules: ghost-role-information-giant-spider-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
@ -3087,6 +3094,7 @@
|
|||
allowMovement: true
|
||||
name: ghost-role-information-hamster-name
|
||||
description: ghost-role-information-hamster-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
- type: GhostTakeoverAvailable
|
||||
- type: Speech
|
||||
speechVerb: SmallMob
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-behonker-name
|
||||
description: ghost-role-information-behonker-description
|
||||
rules: ghost-role-information-antagonist-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
|
|||
|
|
@ -163,6 +163,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-sentient-carp-name
|
||||
description: ghost-role-information-sentient-carp-description
|
||||
rules: ghost-role-information-space-dragon-summoned-carp-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@
|
|||
- type: GhostRole
|
||||
prob: 0
|
||||
description: ghost-role-information-angry-slimes-description
|
||||
rules: ghost-role-information-angry-slimes-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: NpcFactionMember
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-hellspawn-name
|
||||
description: ghost-role-information-hellspawn-description
|
||||
rules: ghost-role-information-antagonist-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: RotationVisuals
|
||||
|
|
|
|||
|
|
@ -574,6 +574,7 @@
|
|||
allowMovement: true
|
||||
name: ghost-role-information-hamlet-name
|
||||
description: ghost-role-information-hamlet-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
- type: GhostTakeoverAvailable
|
||||
- type: InteractionPopup
|
||||
successChance: 1
|
||||
|
|
@ -688,6 +689,7 @@
|
|||
prob: 0.25
|
||||
name: ghost-role-information-willow-name
|
||||
description: ghost-role-information-willow-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
- type: GhostTakeoverAvailable
|
||||
- type: Loadout
|
||||
prototypes: [ BoxingKangarooGear ]
|
||||
|
|
@ -758,6 +760,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-smile-name
|
||||
description: ghost-role-information-smile-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
- type: Grammar
|
||||
attributes:
|
||||
proper: true
|
||||
|
|
@ -778,6 +781,7 @@
|
|||
allowMovement: true
|
||||
name: ghost-role-information-punpun-name
|
||||
description: ghost-role-information-punpun-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
- type: GhostTakeoverAvailable
|
||||
- type: Butcherable
|
||||
butcheringType: Spike
|
||||
|
|
@ -811,6 +815,7 @@
|
|||
# allowMovement: true
|
||||
# name: ghost-role-information-tropico-name
|
||||
# description: ghost-role-information-tropico-description
|
||||
# rules: ghost-role-information-nonantagonist-rules
|
||||
# - type: GhostTakeoverAvailable
|
||||
- type: Tag
|
||||
tags:
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-rat-king-name
|
||||
description: ghost-role-information-rat-king-description
|
||||
rules: ghost-role-information-rat-king-rules
|
||||
rules: ghost-role-information-freeagent-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-revenant-name
|
||||
description: ghost-role-information-revenant-description
|
||||
rules: ghost-role-information-revenant-rules
|
||||
rules: ghost-role-information-antagonist-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
|
|||
|
|
@ -158,6 +158,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-honkbot-name
|
||||
description: ghost-role-information-honkbot-description
|
||||
rules: ghost-role-information-freeagent-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
@ -185,6 +186,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-jonkbot-name
|
||||
description: ghost-role-information-jonkbot-description
|
||||
rules: ghost-role-information-freeagent-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: InteractionPopup
|
||||
|
|
@ -333,6 +335,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-mimebot-name
|
||||
description: ghost-role-information-mimebot-description
|
||||
rules: ghost-role-information-freeagent-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
@ -356,6 +359,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-supplybot-name
|
||||
description: ghost-role-information-supplybot-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
|
|||
|
|
@ -127,6 +127,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-slimes-name
|
||||
description: ghost-role-information-slimes-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Speech
|
||||
|
|
@ -202,6 +203,7 @@
|
|||
- SimpleHostile
|
||||
- type: GhostRole
|
||||
description: ghost-role-information-angry-slimes-description
|
||||
rules: ghost-role-information-angry-slimes-rules
|
||||
raffle:
|
||||
settings: short
|
||||
|
||||
|
|
@ -239,6 +241,7 @@
|
|||
- SimpleHostile
|
||||
- type: GhostRole
|
||||
description: ghost-role-information-angry-slimes-description
|
||||
rules: ghost-role-information-angry-slimes-rules
|
||||
raffle:
|
||||
settings: short
|
||||
|
||||
|
|
@ -276,5 +279,6 @@
|
|||
- SimpleHostile
|
||||
- type: GhostRole
|
||||
description: ghost-role-information-angry-slimes-description
|
||||
rules: ghost-role-information-angry-slimes-rules
|
||||
raffle:
|
||||
settings: short
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-space-dragon-name
|
||||
description: ghost-role-information-space-dragon-description
|
||||
rules: ghost-role-information-space-dragon-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
@ -142,7 +143,6 @@
|
|||
- type: entity
|
||||
parent: BaseMobDragon
|
||||
id: MobDragon
|
||||
suffix: No role or objectives
|
||||
components:
|
||||
- type: Dragon
|
||||
spawnRiftAction: ActionSpawnRift
|
||||
|
|
@ -180,6 +180,7 @@
|
|||
components:
|
||||
- type: GhostRole
|
||||
description: ghost-role-information-space-dragon-dungeon-description
|
||||
rules: ghost-role-information-space-dragon-dungeon-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: SlowOnDamage
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
allowSpeech: true
|
||||
name: ghost-role-information-remilia-name
|
||||
description: ghost-role-information-remilia-description
|
||||
rules: ghost-role-information-remilia-rules
|
||||
rules: ghost-role-information-familiar-rules
|
||||
- type: GhostTakeoverAvailable
|
||||
- type: Grammar
|
||||
attributes:
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
allowSpeech: true
|
||||
name: ghost-role-information-cerberus-name
|
||||
description: ghost-role-information-cerberus-description
|
||||
rules: ghost-role-information-cerberus-rules
|
||||
rules: ghost-role-information-familiar-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-guardian-name
|
||||
description: ghost-role-information-guardian-description
|
||||
rules: ghost-role-information-familiar-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
@ -122,6 +123,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-holoparasite-name
|
||||
description: ghost-role-information-holoparasite-description
|
||||
rules: ghost-role-information-familiar-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
@ -154,6 +156,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-ifrit-name
|
||||
description: ghost-role-information-ifrit-description
|
||||
rules: ghost-role-information-familiar-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
@ -182,6 +185,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-holoclown-name
|
||||
description: ghost-role-information-holoclown-description
|
||||
rules: ghost-role-information-familiar-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-Death-Squad-name
|
||||
description: ghost-role-information-Death-Squad-description
|
||||
rules: ghost-role-information-Death-Squad-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
@ -76,6 +77,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-leader-name
|
||||
description: ghost-role-information-ert-leader-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
@ -104,6 +106,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-leader-name
|
||||
description: ghost-role-information-ert-leader-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
@ -124,6 +127,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-leader-name
|
||||
description: ghost-role-information-ert-leader-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
@ -154,6 +158,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-chaplain-name
|
||||
description: ghost-role-information-ert-chaplain-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: RandomMetadata
|
||||
|
|
@ -182,6 +187,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-chaplain-name
|
||||
description: ghost-role-information-ert-chaplain-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
@ -212,6 +218,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-janitor-name
|
||||
description: ghost-role-information-ert-janitor-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: RandomMetadata
|
||||
|
|
@ -240,6 +247,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-janitor-name
|
||||
description: ghost-role-information-ert-janitor-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
@ -270,6 +278,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-engineer-name
|
||||
description: ghost-role-information-ert-engineer-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: RandomMetadata
|
||||
|
|
@ -298,6 +307,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-engineer-name
|
||||
description: ghost-role-information-ert-engineer-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
@ -330,6 +340,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-security-name
|
||||
description: ghost-role-information-ert-security-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: RandomMetadata
|
||||
|
|
@ -358,6 +369,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-security-name
|
||||
description: ghost-role-information-ert-security-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
@ -378,6 +390,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-security-name
|
||||
description: ghost-role-information-ert-security-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
@ -408,6 +421,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-medical-name
|
||||
description: ghost-role-information-ert-medical-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: RandomMetadata
|
||||
|
|
@ -436,6 +450,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-ert-medical-name
|
||||
description: ghost-role-information-ert-medical-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
@ -465,6 +480,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-cburn-agent-name
|
||||
description: ghost-role-information-cburn-agent-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: RandomMetadata
|
||||
|
|
@ -491,6 +507,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-centcom-official-name
|
||||
description: ghost-role-information-centcom-official-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: Loadout
|
||||
|
|
@ -558,6 +575,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-cluwne-name
|
||||
description: ghost-role-information-cluwne-description
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: Cluwne
|
||||
|
|
@ -599,7 +617,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-lost-cargo-technical-name
|
||||
description: ghost-role-information-lost-cargo-technical-description
|
||||
rules: ghost-role-information-lost-cargo-technical-rules
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
@ -650,7 +668,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-clown-troupe-name
|
||||
description: ghost-role-information-clown-troupe-description
|
||||
rules: ghost-role-information-clown-troupe-rules
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
@ -700,7 +718,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-traveling-chef-name
|
||||
description: ghost-role-information-traveling-chef-description
|
||||
rules: ghost-role-information-traveling-chef-rules
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
@ -760,7 +778,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-disaster-victim-name
|
||||
description: ghost-role-information-disaster-victim-description
|
||||
rules: ghost-role-information-disaster-victim-rules
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: default
|
||||
|
||||
|
|
@ -821,7 +839,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-syndie-disaster-victim-name
|
||||
description: ghost-role-information-syndie-disaster-victim-description
|
||||
rules: ghost-role-information-syndie-disaster-victim-rules
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: Loadout
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-skeleton-pirate-name
|
||||
description: ghost-role-information-skeleton-pirate-description
|
||||
rules: ghost-role-information-freeagent-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
@ -33,6 +34,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-skeleton-biker-name
|
||||
description: ghost-role-information-skeleton-biker-description
|
||||
rules: ghost-role-information-freeagent-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
@ -48,6 +50,7 @@
|
|||
- type: GhostRole
|
||||
name: ghost-role-information-closet-skeleton-name
|
||||
description: ghost-role-information-closet-skeleton-description
|
||||
rules: ghost-role-information-freeagent-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
|
|||
|
|
@ -818,7 +818,7 @@
|
|||
name: ghost-role-information-BreadDog-name
|
||||
allowMovement: true
|
||||
description: ghost-role-information-BreadDog-description
|
||||
rules: ghost-role-information-BreadDog-rules
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
|
|||
|
|
@ -699,7 +699,7 @@
|
|||
name: ghost-role-information-Cak-name
|
||||
allowMovement: true
|
||||
description: ghost-role-information-Cak-description
|
||||
rules: ghost-role-information-Cak-rules
|
||||
rules: ghost-role-information-nonantagonist-rules
|
||||
raffle:
|
||||
settings: short
|
||||
- type: GhostTakeoverAvailable
|
||||
|
|
|
|||
|
|
@ -80,9 +80,9 @@
|
|||
suffix: NukeOps
|
||||
components:
|
||||
- type: GhostRole
|
||||
name: Syndicate Assault Cyborg
|
||||
description: Nuclear operatives needs reinforcements. You, a cold silicon killing machine, will help them.
|
||||
rules: Normal syndicate antagonist rules apply. Work with whoever called you in, and don't harm them.
|
||||
name: ghost-role-information-syndie-assaultborg-name
|
||||
description: ghost-role-information-syndie-assaultborg-description
|
||||
rules: ghost-role-information-silicon-rules
|
||||
raffle:
|
||||
settings: default
|
||||
- type: GhostRoleMobSpawner
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
beginSearchingText: pai-system-searching
|
||||
roleName: pai-system-role-name
|
||||
roleDescription: pai-system-role-description
|
||||
roleRules: ghost-role-information-familiar-rules
|
||||
wipeVerbText: pai-system-wipe-device-verb-text
|
||||
wipeVerbPopup: pai-system-wiped-device
|
||||
stopSearchVerbText: pai-system-stop-searching-verb-text
|
||||
|
|
@ -91,6 +92,7 @@
|
|||
- type: ToggleableGhostRole
|
||||
roleName: pai-system-role-name-syndicate
|
||||
roleDescription: pai-system-role-description-syndicate
|
||||
roleRules: ghost-role-information-familiar-rules
|
||||
- type: IntrinsicRadioTransmitter
|
||||
channels:
|
||||
- Syndicate
|
||||
|
|
@ -122,6 +124,7 @@
|
|||
- type: ToggleableGhostRole
|
||||
roleName: pai-system-role-name-potato
|
||||
roleDescription: pai-system-role-description-potato
|
||||
roleRules: ghost-role-information-familiar-rules
|
||||
- type: Appearance
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@
|
|||
beginSearchingText: positronic-brain-searching
|
||||
roleName: positronic-brain-role-name
|
||||
roleDescription: positronic-brain-role-description
|
||||
roleRules: ghost-role-information-silicon-rules
|
||||
wipeVerbText: positronic-brain-wipe-device-verb-text
|
||||
wipeVerbPopup: positronic-brain-wiped-device
|
||||
stopSearchVerbText: positronic-brain-stop-searching-verb-text
|
||||
|
|
|
|||
|
|
@ -408,6 +408,7 @@
|
|||
maxInitialInfectedGrace: 450
|
||||
- type: ZombifyOnDeath
|
||||
- type: IncurableZombie
|
||||
- type: InitialInfected
|
||||
mindComponents:
|
||||
- type: InitialInfectedRole
|
||||
prototype: InitialInfected
|
||||
|
|
|
|||
|
|
@ -244,6 +244,7 @@
|
|||
- type: PendingZombie
|
||||
- type: ZombifyOnDeath
|
||||
- type: IncurableZombie
|
||||
- type: InitialInfected
|
||||
mindComponents:
|
||||
- type: InitialInfectedRole
|
||||
prototype: InitialInfected
|
||||
|
|
|
|||
|
|
@ -199,6 +199,7 @@
|
|||
makeSentient: true
|
||||
name: ghost-role-information-artifact-name
|
||||
description: ghost-role-information-artifact-description
|
||||
rules: ghost-role-information-freeagent-rules
|
||||
- type: GhostTakeoverAvailable
|
||||
- type: MovementSpeedModifier
|
||||
baseWalkSpeed: 0.25
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue