Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
using Content.Server.Damage.Components;
|
||||||
using Content.Server.DeviceLinking.Events;
|
using Content.Server.DeviceLinking.Events;
|
||||||
using Content.Server.DeviceLinking.Systems;
|
using Content.Server.DeviceLinking.Systems;
|
||||||
using Content.Server.Power.Components;
|
using Content.Server.Power.Components;
|
||||||
@@ -12,6 +13,7 @@ using Content.Shared.Inventory;
|
|||||||
using Content.Shared.Popups;
|
using Content.Shared.Popups;
|
||||||
using Content.Shared.PowerCell;
|
using Content.Shared.PowerCell;
|
||||||
using Content.Shared.PowerCell.Components;
|
using Content.Shared.PowerCell.Components;
|
||||||
|
using Content.Shared.Throwing;
|
||||||
using Content.Shared.Timing;
|
using Content.Shared.Timing;
|
||||||
using Content.Shared.Toggleable;
|
using Content.Shared.Toggleable;
|
||||||
using Content.Shared.Verbs;
|
using Content.Shared.Verbs;
|
||||||
@@ -35,6 +37,8 @@ public sealed partial class EnergyDomeSystem : EntitySystem
|
|||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<DamageOtherOnHitComponent, ThrownEvent>(OnThrow);
|
||||||
|
|
||||||
//Generator events
|
//Generator events
|
||||||
SubscribeLocalEvent<EnergyDomeGeneratorComponent, MapInitEvent>(OnInit);
|
SubscribeLocalEvent<EnergyDomeGeneratorComponent, MapInitEvent>(OnInit);
|
||||||
|
|
||||||
@@ -62,6 +66,14 @@ public sealed partial class EnergyDomeSystem : EntitySystem
|
|||||||
SubscribeLocalEvent<EnergyDomeComponent, DamageChangedEvent>(OnDomeDamaged);
|
SubscribeLocalEvent<EnergyDomeComponent, DamageChangedEvent>(OnDomeDamaged);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnThrow(Entity<DamageOtherOnHitComponent> ent, ref ThrownEvent args)
|
||||||
|
{
|
||||||
|
if (args.User == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
RaiseLocalEvent(args.User.Value, new EnergyDomeClothesTurnOffEvent());
|
||||||
|
}
|
||||||
|
|
||||||
private void OnClothesTurnOff(Entity<EnergyDomeGeneratorComponent> ent,
|
private void OnClothesTurnOff(Entity<EnergyDomeGeneratorComponent> ent,
|
||||||
ref InventoryRelayedEvent<EnergyDomeClothesTurnOffEvent> args)
|
ref InventoryRelayedEvent<EnergyDomeClothesTurnOffEvent> args)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public sealed partial class NukeopsRuleComponent : Component
|
|||||||
/// What will happen if all of the nuclear operatives will die. Used by LoneOpsSpawn event.
|
/// What will happen if all of the nuclear operatives will die. Used by LoneOpsSpawn event.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField]
|
[DataField]
|
||||||
public RoundEndBehavior RoundEndBehavior = RoundEndBehavior.ShuttleCall;
|
public RoundEndBehavior RoundEndBehavior = RoundEndBehavior.InstantEnd;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Text for shuttle call if RoundEndBehavior is ShuttleCall.
|
/// Text for shuttle call if RoundEndBehavior is ShuttleCall.
|
||||||
@@ -84,7 +84,7 @@ public sealed partial class NukeopsRuleComponent : Component
|
|||||||
/// This amount of TC will be given to each nukie
|
/// This amount of TC will be given to each nukie
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField]
|
[DataField]
|
||||||
public int WarTCAmountPerNukie = 50;
|
public int WarTCAmountPerNukie = 40;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Delay between war declaration and nuke ops arrival on station map. Gives crew time to prepare
|
/// Delay between war declaration and nuke ops arrival on station map. Gives crew time to prepare
|
||||||
|
|||||||
@@ -36,13 +36,13 @@ public sealed partial class ZombieRuleComponent : Component
|
|||||||
/// The minimum amount of time after the round starts that the initial infected will be chosen.
|
/// The minimum amount of time after the round starts that the initial infected will be chosen.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField]
|
[DataField]
|
||||||
public TimeSpan MinStartDelay = TimeSpan.FromMinutes(10);
|
public TimeSpan MinStartDelay = TimeSpan.FromMinutes(3);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The maximum amount of time after the round starts that the initial infected will be chosen.
|
/// The maximum amount of time after the round starts that the initial infected will be chosen.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField]
|
[DataField]
|
||||||
public TimeSpan MaxStartDelay = TimeSpan.FromMinutes(15);
|
public TimeSpan MaxStartDelay = TimeSpan.FromMinutes(6);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The sound that plays when someone becomes an initial infected.
|
/// The sound that plays when someone becomes an initial infected.
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ using Robust.Shared.Prototypes;
|
|||||||
using Robust.Shared.Random;
|
using Robust.Shared.Random;
|
||||||
using Robust.Shared.Utility;
|
using Robust.Shared.Utility;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using Content.Server.StationEvents.Components;
|
||||||
using Content.Shared.FixedPoint;
|
using Content.Shared.FixedPoint;
|
||||||
using Content.Shared.Mind;
|
using Content.Shared.Mind;
|
||||||
|
|
||||||
@@ -683,9 +684,14 @@ public sealed class NukeopsRuleSystem : GameRuleSystem<NukeopsRuleComponent>
|
|||||||
: WinCondition.AllNukiesDead);
|
: WinCondition.AllNukiesDead);
|
||||||
|
|
||||||
SetWinType(uid, WinType.CrewMajor, nukeops, false);
|
SetWinType(uid, WinType.CrewMajor, nukeops, false);
|
||||||
|
|
||||||
|
// WD EDIT, check for all at once gamemode
|
||||||
|
if (!GameTicker.GetActiveGameRules().Where(HasComp<RampingStationEventSchedulerComponent>).Any())
|
||||||
|
{
|
||||||
_roundEndSystem.DoRoundEndBehavior(
|
_roundEndSystem.DoRoundEndBehavior(
|
||||||
nukeops.RoundEndBehavior, nukeops.EvacShuttleTime, nukeops.RoundEndTextSender,
|
nukeops.RoundEndBehavior, nukeops.EvacShuttleTime, nukeops.RoundEndTextSender,
|
||||||
nukeops.RoundEndTextShuttleCall, nukeops.RoundEndTextAnnouncement);
|
nukeops.RoundEndTextShuttleCall, nukeops.RoundEndTextAnnouncement);
|
||||||
|
}
|
||||||
|
|
||||||
// prevent it called multiple times
|
// prevent it called multiple times
|
||||||
nukeops.RoundEndBehavior = RoundEndBehavior.Nothing;
|
nukeops.RoundEndBehavior = RoundEndBehavior.Nothing;
|
||||||
|
|||||||
@@ -107,10 +107,8 @@ public sealed class RevolutionaryRuleSystem : GameRuleSystem<RevolutionaryRuleCo
|
|||||||
if (CheckCommandLose())
|
if (CheckCommandLose())
|
||||||
{
|
{
|
||||||
// WD EDIT START
|
// WD EDIT START
|
||||||
// Basically check for all in once gamemode
|
// Check for all at once gamemode
|
||||||
if (_gameTicker.GetActiveGameRules().Where(HasComp<RampingStationEventSchedulerComponent>).Any())
|
if (!_gameTicker.GetActiveGameRules().Where(HasComp<RampingStationEventSchedulerComponent>).Any())
|
||||||
_roundEnd.DoRoundEndBehavior(RoundEndBehavior.ShuttleCall, component.ShuttleCallTime);
|
|
||||||
else
|
|
||||||
_roundEnd.EndRound();
|
_roundEnd.EndRound();
|
||||||
|
|
||||||
// WD EDIT END
|
// WD EDIT END
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ using Content.Shared.Item;
|
|||||||
using Content.Shared.Bed.Sleep;
|
using Content.Shared.Bed.Sleep;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
|
using Content.Server._White.Wizard;
|
||||||
using Content.Server.Bible.Components;
|
using Content.Server.Bible.Components;
|
||||||
using Content.Server.Maps;
|
using Content.Server.Maps;
|
||||||
using Content.Server.Revenant.Components;
|
using Content.Server.Revenant.Components;
|
||||||
@@ -335,10 +336,12 @@ public sealed partial class RevenantSystem
|
|||||||
|
|
||||||
// WD START
|
// WD START
|
||||||
var cultistQuery = GetEntityQuery<CultistComponent>();
|
var cultistQuery = GetEntityQuery<CultistComponent>();
|
||||||
|
var wizardQuery = GetEntityQuery<WizardComponent>();
|
||||||
var humanoidQuery = GetEntityQuery<HumanoidAppearanceComponent>();
|
var humanoidQuery = GetEntityQuery<HumanoidAppearanceComponent>();
|
||||||
foreach (var e in _lookup.GetEntitiesInRange(uid, component.BlightRadius))
|
foreach (var e in _lookup.GetEntitiesInRange(uid, component.BlightRadius))
|
||||||
{
|
{
|
||||||
if (!humanoidQuery.HasComponent(e) || !_mobState.IsAlive(e) || cultistQuery.HasComponent(e))
|
if (!humanoidQuery.HasComponent(e) || !_mobState.IsAlive(e) || cultistQuery.HasComponent(e) ||
|
||||||
|
wizardQuery.HasComponent(e))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var blight = EnsureComp<BlightComponent>(e);
|
var blight = EnsureComp<BlightComponent>(e);
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ namespace Content.Server.RoundEnd
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Countdown to use where there is no station alert countdown to be found.
|
/// Countdown to use where there is no station alert countdown to be found.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public TimeSpan DefaultCountdownDuration { get; set; } = TimeSpan.FromMinutes(10);
|
public TimeSpan DefaultCountdownDuration { get; set; } = TimeSpan.FromMinutes(5);
|
||||||
|
|
||||||
private CancellationTokenSource? _countdownTokenSource;
|
private CancellationTokenSource? _countdownTokenSource;
|
||||||
private CancellationTokenSource? _cooldownTokenSource;
|
private CancellationTokenSource? _cooldownTokenSource;
|
||||||
|
|||||||
@@ -311,7 +311,7 @@ public sealed class CultRuleSystem : GameRuleSystem<CultRuleComponent>
|
|||||||
|
|
||||||
cult.WinCondition = CultWinCondition.Failure;
|
cult.WinCondition = CultWinCondition.Failure;
|
||||||
|
|
||||||
// Check for all in once gamemode
|
// Check for all at once gamemode
|
||||||
if (!GameTicker.GetActiveGameRules().Where(HasComp<RampingStationEventSchedulerComponent>).Any())
|
if (!GameTicker.GetActiveGameRules().Where(HasComp<RampingStationEventSchedulerComponent>).Any())
|
||||||
_roundEndSystem.EndRound();
|
_roundEndSystem.EndRound();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,14 +13,18 @@ using Content.Server.Emp;
|
|||||||
using Content.Server.EUI;
|
using Content.Server.EUI;
|
||||||
using Content.Server.Lightning;
|
using Content.Server.Lightning;
|
||||||
using Content.Server.Magic;
|
using Content.Server.Magic;
|
||||||
|
using Content.Server.Mind;
|
||||||
using Content.Server.Singularity.EntitySystems;
|
using Content.Server.Singularity.EntitySystems;
|
||||||
using Content.Server.Standing;
|
using Content.Server.Standing;
|
||||||
using Content.Server.Weapons.Ranged.Systems;
|
using Content.Server.Weapons.Ranged.Systems;
|
||||||
using Content.Shared._White.BetrayalDagger;
|
using Content.Shared._White.BetrayalDagger;
|
||||||
|
using Content.Shared._White.Cult.Components;
|
||||||
using Content.Shared._White.Events;
|
using Content.Shared._White.Events;
|
||||||
using Content.Shared._White.Wizard;
|
using Content.Shared._White.Wizard;
|
||||||
using Content.Shared._White.Wizard.Magic;
|
using Content.Shared._White.Wizard.Magic;
|
||||||
using Content.Shared.Actions;
|
using Content.Shared.Actions;
|
||||||
|
using Content.Shared.Borer;
|
||||||
|
using Content.Shared.Changeling;
|
||||||
using Content.Shared.Cluwne;
|
using Content.Shared.Cluwne;
|
||||||
using Content.Shared.Coordinates.Helpers;
|
using Content.Shared.Coordinates.Helpers;
|
||||||
using Content.Shared.Hands.Components;
|
using Content.Shared.Hands.Components;
|
||||||
@@ -35,6 +39,7 @@ using Content.Shared.Maps;
|
|||||||
using Content.Shared.Mobs.Components;
|
using Content.Shared.Mobs.Components;
|
||||||
using Content.Shared.Physics;
|
using Content.Shared.Physics;
|
||||||
using Content.Shared.Popups;
|
using Content.Shared.Popups;
|
||||||
|
using Content.Shared.Revolutionary.Components;
|
||||||
using Content.Shared.StatusEffect;
|
using Content.Shared.StatusEffect;
|
||||||
using Content.Shared.Throwing;
|
using Content.Shared.Throwing;
|
||||||
using Robust.Shared.Audio.Systems;
|
using Robust.Shared.Audio.Systems;
|
||||||
@@ -71,6 +76,8 @@ public sealed class WizardSpellsSystem : EntitySystem
|
|||||||
[Dependency] private readonly StandingStateSystem _standing = default!;
|
[Dependency] private readonly StandingStateSystem _standing = default!;
|
||||||
[Dependency] private readonly TelefragSystem _telefrag = default!;
|
[Dependency] private readonly TelefragSystem _telefrag = default!;
|
||||||
[Dependency] private readonly EuiManager _euiManager = default!;
|
[Dependency] private readonly EuiManager _euiManager = default!;
|
||||||
|
[Dependency] private readonly MindSystem _mindSystem = default!;
|
||||||
|
[Dependency] private readonly ActionContainerSystem _actionContainer = default!;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -78,6 +85,7 @@ public sealed class WizardSpellsSystem : EntitySystem
|
|||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<MindswapSpellEvent>(OnMindswapSpell);
|
||||||
SubscribeLocalEvent<TeleportSpellEvent>(OnTeleportSpell);
|
SubscribeLocalEvent<TeleportSpellEvent>(OnTeleportSpell);
|
||||||
SubscribeLocalEvent<InstantRecallSpellEvent>(OnInstantRecallSpell);
|
SubscribeLocalEvent<InstantRecallSpellEvent>(OnInstantRecallSpell);
|
||||||
SubscribeLocalEvent<MimeTouchSpellEvent>(OnMimeTouchSpell);
|
SubscribeLocalEvent<MimeTouchSpellEvent>(OnMimeTouchSpell);
|
||||||
@@ -95,6 +103,73 @@ public sealed class WizardSpellsSystem : EntitySystem
|
|||||||
SubscribeLocalEvent<MagicComponent, BeforeCastSpellEvent>(OnBeforeCastSpell);
|
SubscribeLocalEvent<MagicComponent, BeforeCastSpellEvent>(OnBeforeCastSpell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Mindswap
|
||||||
|
|
||||||
|
private void OnMindswapSpell(MindswapSpellEvent msg)
|
||||||
|
{
|
||||||
|
if (!CanCast(msg))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var target = msg.Target;
|
||||||
|
var uid = msg.Performer;
|
||||||
|
|
||||||
|
if (HasComp<ChangelingComponent>(target) || HasComp<RevolutionaryComponent>(target) ||
|
||||||
|
HasComp<CultistComponent>(target))
|
||||||
|
{
|
||||||
|
_popupSystem.PopupEntity("Не работает на культистов, генокрадов и революционеров.", uid, uid,
|
||||||
|
PopupType.MediumCaution);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TryComp(target, out InfestedBorerComponent? borer) && borer.ControllingBrain)
|
||||||
|
{
|
||||||
|
_popupSystem.PopupEntity("Им уже кто-то управляет.", uid, uid, PopupType.MediumCaution);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var userHasMind = _mindSystem.TryGetMind(uid, out var mindId, out var mind);
|
||||||
|
var targetHasMind = _mindSystem.TryGetMind(target, out var targetMindId, out var targetMind);
|
||||||
|
|
||||||
|
if (!userHasMind)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_mindSystem.TransferTo(mindId, target, mind: mind);
|
||||||
|
|
||||||
|
if (targetHasMind)
|
||||||
|
{
|
||||||
|
_mindSystem.TransferTo(targetMindId, uid, mind: targetMind);
|
||||||
|
_popupSystem.PopupEntity(Loc.GetString("Ваш разум подменили!"), uid, uid, PopupType.LargeCaution);
|
||||||
|
}
|
||||||
|
|
||||||
|
TransferAllMagicActions(uid, target);
|
||||||
|
|
||||||
|
_standing.TryLieDown(uid);
|
||||||
|
_standing.TryLieDown(target);
|
||||||
|
|
||||||
|
msg.Handled = true;
|
||||||
|
Speak(msg);
|
||||||
|
|
||||||
|
var hasWiz = HasComp<WizardComponent>(uid);
|
||||||
|
var targetHasWiz = HasComp<WizardComponent>(target);
|
||||||
|
|
||||||
|
if (hasWiz == targetHasWiz)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (hasWiz)
|
||||||
|
{
|
||||||
|
RemComp<WizardComponent>(uid);
|
||||||
|
EnsureComp<WizardComponent>(target);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (targetHasWiz)
|
||||||
|
{
|
||||||
|
RemComp<WizardComponent>(target);
|
||||||
|
EnsureComp<WizardComponent>(uid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Teleport
|
#region Teleport
|
||||||
|
|
||||||
private void OnTeleportSpell(TeleportSpellEvent msg)
|
private void OnTeleportSpell(TeleportSpellEvent msg)
|
||||||
@@ -797,10 +872,12 @@ public sealed class WizardSpellsSystem : EntitySystem
|
|||||||
private void OnBeforeCastSpell(Entity<MagicComponent> ent, ref BeforeCastSpellEvent args)
|
private void OnBeforeCastSpell(Entity<MagicComponent> ent, ref BeforeCastSpellEvent args)
|
||||||
{
|
{
|
||||||
var comp = ent.Comp;
|
var comp = ent.Comp;
|
||||||
|
|
||||||
|
if (!comp.RequiresClothes)
|
||||||
|
return;
|
||||||
|
|
||||||
var hasReqs = false;
|
var hasReqs = false;
|
||||||
|
|
||||||
if (comp.RequiresClothes)
|
|
||||||
{
|
|
||||||
var enumerator = _inventory.GetSlotEnumerator(args.Performer, SlotFlags.OUTERCLOTHING | SlotFlags.HEAD);
|
var enumerator = _inventory.GetSlotEnumerator(args.Performer, SlotFlags.OUTERCLOTHING | SlotFlags.HEAD);
|
||||||
while (enumerator.MoveNext(out var containerSlot))
|
while (enumerator.MoveNext(out var containerSlot))
|
||||||
{
|
{
|
||||||
@@ -812,13 +889,32 @@ public sealed class WizardSpellsSystem : EntitySystem
|
|||||||
if (!hasReqs)
|
if (!hasReqs)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (!hasReqs)
|
if (hasReqs)
|
||||||
{
|
return;
|
||||||
|
|
||||||
args.Cancelled = true;
|
args.Cancelled = true;
|
||||||
_popupSystem.PopupEntity(Loc.GetString("magic-component-missing-req"), args.Performer, args.Performer);
|
_popupSystem.PopupEntity(Loc.GetString("magic-component-missing-req"), args.Performer, args.Performer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void TransferAllMagicActions(EntityUid uid1, EntityUid uid2)
|
||||||
|
{
|
||||||
|
if (!TryComp(uid1, out ActionsContainerComponent? container1) ||
|
||||||
|
!TryComp(uid2, out ActionsContainerComponent? container2))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var actions1 = container1.Container.ContainedEntities.Where(HasComp<MagicComponent>).ToList();
|
||||||
|
var actions2 = container2.Container.ContainedEntities.Where(HasComp<MagicComponent>).ToList();
|
||||||
|
|
||||||
|
foreach (var act in actions1)
|
||||||
|
{
|
||||||
|
_actionContainer.TransferActionWithNewAttached(act, uid2, uid2, container: container2);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var act in actions2)
|
||||||
|
{
|
||||||
|
_actionContainer.TransferActionWithNewAttached(act, uid1, uid1, container: container1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public sealed partial class WizardRuleComponent : Component
|
|||||||
[DataField]
|
[DataField]
|
||||||
public ProtoId<NpcFactionPrototype> Faction = "Wizard";
|
public ProtoId<NpcFactionPrototype> Faction = "Wizard";
|
||||||
|
|
||||||
public RoundEndBehavior RoundEndBehavior = RoundEndBehavior.ShuttleCall;
|
public RoundEndBehavior RoundEndBehavior = RoundEndBehavior.InstantEnd;
|
||||||
|
|
||||||
[DataField]
|
[DataField]
|
||||||
public string RoundEndTextSender = "comms-console-announcement-title-centcom";
|
public string RoundEndTextSender = "comms-console-announcement-title-centcom";
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ using Robust.Shared.Prototypes;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Content.Server.Objectives;
|
using Content.Server.Objectives;
|
||||||
using Content.Server.Station.Components;
|
using Content.Server.Station.Components;
|
||||||
|
using Content.Server.StationEvents.Components;
|
||||||
using Content.Shared.Mind;
|
using Content.Shared.Mind;
|
||||||
using Content.Shared.NPC.Components;
|
using Content.Shared.NPC.Components;
|
||||||
using Content.Shared.Objectives.Components;
|
using Content.Shared.Objectives.Components;
|
||||||
@@ -62,7 +63,6 @@ public sealed class WizardRuleSystem : GameRuleSystem<WizardRuleComponent>
|
|||||||
SubscribeLocalEvent<RoundStartAttemptEvent>(OnStartAttempt);
|
SubscribeLocalEvent<RoundStartAttemptEvent>(OnStartAttempt);
|
||||||
SubscribeLocalEvent<RulePlayerSpawningEvent>(OnPlayersSpawning);
|
SubscribeLocalEvent<RulePlayerSpawningEvent>(OnPlayersSpawning);
|
||||||
SubscribeLocalEvent<GameRunLevelChangedEvent>(OnRunLevelChanged);
|
SubscribeLocalEvent<GameRunLevelChangedEvent>(OnRunLevelChanged);
|
||||||
SubscribeLocalEvent<WizardComponent, ComponentRemove>(OnComponentRemove);
|
|
||||||
SubscribeLocalEvent<WizardComponent, MobStateChangedEvent>(OnMobStateChanged);
|
SubscribeLocalEvent<WizardComponent, MobStateChangedEvent>(OnMobStateChanged);
|
||||||
SubscribeLocalEvent<WizardComponent, GhostRoleSpawnerUsedEvent>(OnPlayersGhostSpawning);
|
SubscribeLocalEvent<WizardComponent, GhostRoleSpawnerUsedEvent>(OnPlayersGhostSpawning);
|
||||||
SubscribeLocalEvent<WizardComponent, MindAddedMessage>(OnMindAdded);
|
SubscribeLocalEvent<WizardComponent, MindAddedMessage>(OnMindAdded);
|
||||||
@@ -123,11 +123,6 @@ public sealed class WizardRuleSystem : GameRuleSystem<WizardRuleComponent>
|
|||||||
SpawnWizardGhostRole(uid, component);
|
SpawnWizardGhostRole(uid, component);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnComponentRemove(EntityUid uid, WizardComponent component, ComponentRemove args)
|
|
||||||
{
|
|
||||||
CheckAnnouncement();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnMobStateChanged(EntityUid uid, WizardComponent component, MobStateChangedEvent ev)
|
private void OnMobStateChanged(EntityUid uid, WizardComponent component, MobStateChangedEvent ev)
|
||||||
{
|
{
|
||||||
if (ev.NewMobState == MobState.Dead)
|
if (ev.NewMobState == MobState.Dead)
|
||||||
@@ -249,6 +244,10 @@ public sealed class WizardRuleSystem : GameRuleSystem<WizardRuleComponent>
|
|||||||
|
|
||||||
private void CheckAnnouncement()
|
private void CheckAnnouncement()
|
||||||
{
|
{
|
||||||
|
// Check for all at once gamemode
|
||||||
|
if (GameTicker.GetActiveGameRules().Where(HasComp<RampingStationEventSchedulerComponent>).Any())
|
||||||
|
return;
|
||||||
|
|
||||||
var query = QueryActiveRules();
|
var query = QueryActiveRules();
|
||||||
while (query.MoveNext(out _, out _, out var wizard, out _))
|
while (query.MoveNext(out _, out _, out var wizard, out _))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
|
using Content.Shared._White.Events;
|
||||||
using Content.Shared._White.WeaponModules;
|
using Content.Shared._White.WeaponModules;
|
||||||
using Content.Shared.ActionBlocker;
|
using Content.Shared.ActionBlocker;
|
||||||
using Content.Shared.Actions;
|
using Content.Shared.Actions;
|
||||||
@@ -353,6 +354,7 @@ public abstract partial class SharedGunSystem : EntitySystem
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RaiseLocalEvent(user, new EnergyDomeClothesTurnOffEvent()); // WD
|
||||||
// Shoot confirmed - sounds also played here in case it's invalid (e.g. cartridge already spent).
|
// Shoot confirmed - sounds also played here in case it's invalid (e.g. cartridge already spent).
|
||||||
Shoot(gunUid, gun, ev.Ammo, fromCoordinates, toCoordinates.Value, out var userImpulse, user, throwItems: attemptEv.ThrowItems);
|
Shoot(gunUid, gun, ev.Ammo, fromCoordinates, toCoordinates.Value, out var userImpulse, user, throwItems: attemptEv.ThrowItems);
|
||||||
var shotEv = new GunShotEvent(user, ev.Ammo);
|
var shotEv = new GunShotEvent(user, ev.Ammo);
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
namespace Content.Shared._White.Knockdown;
|
||||||
|
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed partial class KnockdownOnCollideComponent : Component
|
||||||
|
{
|
||||||
|
[DataField]
|
||||||
|
public float BlurTime = 20f;
|
||||||
|
}
|
||||||
30
Content.Shared/_White/Knockdown/KnockdownOnCollideSystem.cs
Normal file
30
Content.Shared/_White/Knockdown/KnockdownOnCollideSystem.cs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
using Content.Shared.Eye.Blinding.Components;
|
||||||
|
using Content.Shared.Projectiles;
|
||||||
|
using Content.Shared.Standing.Systems;
|
||||||
|
using Content.Shared.StatusEffect;
|
||||||
|
|
||||||
|
namespace Content.Shared._White.Knockdown;
|
||||||
|
|
||||||
|
public sealed class KnockdownOnCollideSystem : EntitySystem
|
||||||
|
{
|
||||||
|
[Dependency] private readonly SharedStandingStateSystem _standing = default!;
|
||||||
|
[Dependency] private readonly StatusEffectsSystem _statusEffects = default!;
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<KnockdownOnCollideComponent, ProjectileHitEvent>(OnProjectileHit);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnProjectileHit(Entity<KnockdownOnCollideComponent> ent, ref ProjectileHitEvent args)
|
||||||
|
{
|
||||||
|
_standing.TryLieDown(args.Target, null, true);
|
||||||
|
|
||||||
|
if (ent.Comp.BlurTime <= 0f)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_statusEffects.TryAddStatusEffect<BlurryVisionComponent>(args.Target, "BlurryVision",
|
||||||
|
TimeSpan.FromSeconds(ent.Comp.BlurTime), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -178,4 +178,10 @@ public sealed partial class TeleportSpellEvent : InstantActionEvent, ISpeakSpell
|
|||||||
public string? Speech { get; private set; }
|
public string? Speech { get; private set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public sealed partial class MindswapSpellEvent : EntityTargetActionEvent, ISpeakSpell
|
||||||
|
{
|
||||||
|
[DataField("speech")]
|
||||||
|
public string? Speech { get; private set; }
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -4427,3 +4427,116 @@
|
|||||||
id: 307
|
id: 307
|
||||||
time: '2024-06-16T15:33:26.0000000+00:00'
|
time: '2024-06-16T15:33:26.0000000+00:00'
|
||||||
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/360
|
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/360
|
||||||
|
- author: Aviu
|
||||||
|
changes:
|
||||||
|
- message: "\u041C\u0438\u043D\u0438 \u0430\u0440\u0431\u0430\u043B\u0435\u0442\
|
||||||
|
\ \u043F\u0435\u0440\u0435\u0440\u0430\u0431\u043E\u0442\u0430\u043D. \u0422\
|
||||||
|
\u0435\u043F\u0435\u0440\u044C \u043E\u043D \u043D\u0435 \u0441\u0442\u0430\u043D\
|
||||||
|
\u0438\u0442, \u0430 \u043A\u043B\u0430\u0434\u0435\u0442 \u043D\u0430 \u0437\
|
||||||
|
\u0435\u043C\u043B\u044E. \u041D\u0430\u043D\u043E\u0441\u0438\u0442 60 \u0443\
|
||||||
|
\u0440\u043E\u043D\u0430 \u043F\u043E \u0441\u0442\u0430\u043C\u0438\u043D\u0435\
|
||||||
|
\ (\u043D\u0435 \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u0442\
|
||||||
|
\ \u0431\u0440\u043E\u043D\u044E), \u043F\u0435\u0440\u0435\u0437\u0430\u0440\
|
||||||
|
\u044F\u0436\u0430\u0435\u0442\u0441\u044F \u0431\u044B\u0441\u0442\u0440\u0435\
|
||||||
|
\u0435, \u0440\u0430\u0437\u043C\u044B\u0432\u0430\u0435\u0442 \u0437\u0440\u0435\
|
||||||
|
\u043D\u0438\u0435 \u043F\u0440\u0438 \u043F\u043E\u043F\u0430\u0434\u0430\u043D\
|
||||||
|
\u0438\u0438."
|
||||||
|
type: Add
|
||||||
|
- message: "\u041C\u0438\u043D\u0443\u0441 10 \u0442\u043A \u0437\u0430 \u0432\u043E\
|
||||||
|
\u0439\u043D\u0443."
|
||||||
|
type: Tweak
|
||||||
|
- message: "\u0423\u043C\u0435\u043D\u044C\u0448\u0435\u043D \u0440\u0435\u0437\u0438\
|
||||||
|
\u0441\u0442 \u043A \u0442\u0435\u043F\u043B\u043E\u0432\u043E\u043C\u0443 \u0443\
|
||||||
|
\ \u0441\u043A\u0430\u0444\u0430\u043D\u0434\u0440\u0430 \u044D\u043B\u0438\u0442\
|
||||||
|
\u044B \u0438 \u0434\u0436\u0430\u0433\u0433\u0435\u0440\u043D\u0430\u0443\u0442\
|
||||||
|
\u0430."
|
||||||
|
type: Tweak
|
||||||
|
- message: "\u0423\u043C\u0435\u043D\u044C\u0448\u0435\u043D \u0440\u0435\u0437\u0438\
|
||||||
|
\u0441\u0442 \u043A \u043F\u0440\u043E\u043D\u0438\u043A\u0430\u044E\u0449\u0435\
|
||||||
|
\u043C\u0443 \u0443 \u0441\u043A\u0430\u0444\u0430\u043D\u0434\u0440\u0430 \u043A\
|
||||||
|
\u043E\u043C\u0430\u043D\u0434\u0438\u0440\u0430 \u043E\u043F\u0435\u0440\u0430\
|
||||||
|
\u0442\u0438\u0432\u043D\u0438\u043A\u043E\u0432/\u043B\u0438\u0434\u0435\u0440\
|
||||||
|
\u0430 \u0415\u0420\u0422 \u0438 \u0443 \u043F\u0440\u043E\u0442\u0438\u0432\
|
||||||
|
\u043E\u0443\u0434\u0430\u0440\u043A\u0438."
|
||||||
|
type: Tweak
|
||||||
|
- message: "\u041E\u0442\u0440\u0430\u0436\u0430\u044E\u0449\u0438\u0439 \u0436\u0438\
|
||||||
|
\u043B\u0435\u0442 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u043E\u0442\
|
||||||
|
\u0440\u0430\u0436\u0430\u0435\u0442 100% \u0432\u044B\u0441\u0442\u0440\u0435\
|
||||||
|
\u043B\u043E\u0432."
|
||||||
|
type: Tweak
|
||||||
|
- message: "\u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0430 \u0446\u0435\u043D\
|
||||||
|
\u0430 \u043F\u0438\u0442\u043E\u043D\u0430 \u043E\u0431\u0440\u0430\u0442\u043D\
|
||||||
|
\u043E \u0434\u043E 8."
|
||||||
|
type: Tweak
|
||||||
|
- message: "\u041D\u0435\u043C\u043D\u043E\u0433\u043E \u0443\u0432\u0435\u043B\u0438\
|
||||||
|
\u0447\u0435\u043D \u0440\u0430\u0437\u0431\u0440\u043E\u0441 \u0443 \u0434\u0440\
|
||||||
|
\u043E\u0431\u043E\u0432\u0438\u043A\u043E\u0432."
|
||||||
|
type: Tweak
|
||||||
|
- message: "\u0423\u043C\u0435\u043D\u044C\u0448\u0435\u043D\u0430 \u0441\u043A\u043E\
|
||||||
|
\u0440\u043E\u0441\u0442\u0440\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C\
|
||||||
|
\ \u0445\u0440\u0438\u0441\u0442\u043E\u0432\u0430."
|
||||||
|
type: Tweak
|
||||||
|
- message: "\u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D \u0443\u0440\u043E\u043D\
|
||||||
|
\ \u0441\u043B\u0430\u0433\u043E\u0432 \u0434\u043E 40."
|
||||||
|
type: Tweak
|
||||||
|
id: 308
|
||||||
|
time: '2024-06-17T17:12:02.0000000+00:00'
|
||||||
|
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/361
|
||||||
|
- author: Aviu
|
||||||
|
changes:
|
||||||
|
- message: "\u0422\u0432\u0438\u043A\u0438 \u044D\u043A\u0441\u043F\u0435\u0434\u0438\
|
||||||
|
\u0446\u0438\u0439."
|
||||||
|
type: Tweak
|
||||||
|
- message: "\u0424\u0438\u043A\u0441 \u0431\u043E\u043B\u044C\u0448\u043E\u0439\
|
||||||
|
\ \u0441\u043A\u043E\u0440\u043E\u0441\u0442\u0438 \u043A\u0430\u0440\u043F\u043E\
|
||||||
|
\u0432."
|
||||||
|
type: Fix
|
||||||
|
- message: "\u041A\u0430\u0440\u043F\u044B \u0438 \u0434\u0440\u0430\u043A\u043E\
|
||||||
|
\u043D \u043D\u0430\u0443\u0447\u0438\u043B\u0438\u0441\u044C \u043E\u0442\u043A\
|
||||||
|
\u0440\u044B\u0432\u0430\u0442\u044C \u0434\u0432\u0435\u0440\u0438."
|
||||||
|
type: Add
|
||||||
|
id: 309
|
||||||
|
time: '2024-06-18T10:58:36.0000000+00:00'
|
||||||
|
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/362
|
||||||
|
- author: Aviu
|
||||||
|
changes:
|
||||||
|
- message: "\u0417\u0430\u043A\u043B\u0438\u043D\u0430\u043D\u0438\u0435 \u043F\u043E\
|
||||||
|
\u0434\u043C\u0435\u043D\u044B \u0441\u043E\u0437\u043D\u0430\u043D\u0438\u044F\
|
||||||
|
."
|
||||||
|
type: Add
|
||||||
|
- message: "\u0422\u0435\u043F\u0435\u0440\u044C \u0440\u0430\u0443\u043D\u0434\
|
||||||
|
\ \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044F\
|
||||||
|
\ \u043F\u0440\u0438 \u0441\u043C\u0435\u0440\u0442\u0438 \u043C\u0430\u0433\
|
||||||
|
\u0430 \u0438\u043B\u0438 \u043E\u043F\u0435\u0440\u0430\u0442\u0438\u0432\u043D\
|
||||||
|
\u0438\u043A\u043E\u0432."
|
||||||
|
type: Add
|
||||||
|
- message: "\u041C\u0430\u0433 \u043D\u0435\u0432\u043E\u0441\u043F\u0440\u0438\u0438\
|
||||||
|
\u043C\u0447\u0438\u0432 \u043A \u0431\u043E\u043B\u0435\u0437\u043D\u0438 \u0440\
|
||||||
|
\u0435\u0432\u0435\u043D\u0430\u043D\u0442\u0430."
|
||||||
|
type: Add
|
||||||
|
- message: "\u0422\u0435\u043F\u0435\u0440\u044C \u0449\u0438\u0442 \u0441\u043A\
|
||||||
|
\u0430\u0444\u0430\u043D\u0434\u0440\u0430 \u043C\u0430\u0433\u0430 \u0430\u0432\
|
||||||
|
\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043E\u0442\
|
||||||
|
\u043A\u043B\u044E\u0447\u0430\u0435\u0442\u0441\u044F \u043F\u0440\u0438 \u043F\
|
||||||
|
\u043E\u043F\u044B\u0442\u043A\u0435 \u0432\u044B\u0441\u0442\u0440\u0435\u043B\
|
||||||
|
\u0438\u0442\u044C \u0438\u043B\u0438 \u0431\u0440\u043E\u0441\u0438\u0442\u044C\
|
||||||
|
\ \u043D\u0430\u043D\u043E\u0441\u044F\u0449\u0438\u0439 \u0443\u0440\u043E\u043D\
|
||||||
|
\ \u043F\u0440\u0435\u0434\u043C\u0435\u0442."
|
||||||
|
type: Add
|
||||||
|
- message: "\u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0430 \u0446\u0435\u043D\
|
||||||
|
\u0430 \u0441\u043A\u0430\u0444\u0430\u043D\u0434\u0440\u0430 \u043C\u0430\u0433\
|
||||||
|
\u0430 \u0434\u043E 5."
|
||||||
|
type: Tweak
|
||||||
|
- message: "\u041E\u0441\u043B\u0430\u0431\u043B\u0435\u043D \u0449\u0438\u0442\
|
||||||
|
\ \u0441\u043A\u0430\u0444\u0430\u043D\u0434\u0440\u0430 \u043C\u0430\u0433\u0430\
|
||||||
|
."
|
||||||
|
type: Tweak
|
||||||
|
- message: "\u041D\u0443\u043B\u0435\u0432\u044B\u0435 \u0437\u0430\u0440\u0430\u0436\
|
||||||
|
\u0435\u043D\u043D\u044B\u0435 \u0442\u0435\u043F\u0435\u0440\u044C \u0432\u044B\
|
||||||
|
\u0431\u0438\u0440\u0430\u044E\u0442\u0441\u044F \u0447\u0435\u0440\u0435\u0437\
|
||||||
|
\ 3-6 \u043C\u0438\u043D\u0443\u0442 \u043F\u043E\u0441\u043B\u0435 \u043D\u0430\
|
||||||
|
\u0447\u0430\u043B\u0430 \u0440\u0430\u0443\u043D\u0434\u0430."
|
||||||
|
type: Tweak
|
||||||
|
id: 310
|
||||||
|
time: '2024-06-18T14:55:21.0000000+00:00'
|
||||||
|
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/363
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ scroll-component-silence = тишину
|
|||||||
scroll-component-recall = призыв
|
scroll-component-recall = призыв
|
||||||
scroll-component-teleport = телепортацию
|
scroll-component-teleport = телепортацию
|
||||||
scroll-component-smite = кару
|
scroll-component-smite = кару
|
||||||
|
scroll-component-mindswap = подмену сознания
|
||||||
|
|
||||||
ent-BaseScroll = магический свиток
|
ent-BaseScroll = магический свиток
|
||||||
.desc = Этот древний пергамент, ставший реликвией в арканных преданиях, хранит в себе бесчисленные мистические заклятия и забытые заклинания.
|
.desc = Этот древний пергамент, ставший реликвией в арканных преданиях, хранит в себе бесчисленные мистические заклятия и забытые заклинания.
|
||||||
@@ -47,3 +48,5 @@ ent-ScrollInstantRecall = свиток мгновенного призыва
|
|||||||
.desc = { ent-BaseScroll.desc }
|
.desc = { ent-BaseScroll.desc }
|
||||||
ent-ScrollTeleport = свиток телепортации
|
ent-ScrollTeleport = свиток телепортации
|
||||||
.desc = { ent-BaseScroll.desc }
|
.desc = { ent-BaseScroll.desc }
|
||||||
|
ent-ScrollSmite = свиток кары
|
||||||
|
.desc = { ent-BaseScroll.desc }
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ spellbook-recall-desc = { ent-ActionInstantRecallSpell.desc }
|
|||||||
spellbook-smite-name = { ent-ActionSmite }
|
spellbook-smite-name = { ent-ActionSmite }
|
||||||
spellbook-smite-desc = { ent-ActionSmite.desc }
|
spellbook-smite-desc = { ent-ActionSmite.desc }
|
||||||
|
|
||||||
|
spellbook-mindswap-name = { ent-ActionMindswapSpell }
|
||||||
|
spellbook-mindswap-desc = { ent-ActionMindswapSpell.desc }
|
||||||
|
|
||||||
spellbook-hardsuit-name = Скафандр волшебника
|
spellbook-hardsuit-name = Скафандр волшебника
|
||||||
spellbook-hardsuit-desc = Украшенный магическими драгоценными камнями скафандр, функционирующий так же, как и обычная мантия волшебника, но в то же время является пригодным для использования в космосе и бронированным. Небольшое замедление. Теперь вы можете произносить заклинания в космосе и местах с низкой температурой! Имеет функцию энергетического щита,который защищает от всех снарядов. Щит разряжается при получении урона и автоматически заряжается.
|
spellbook-hardsuit-desc = Украшенный магическими драгоценными камнями скафандр, функционирующий так же, как и обычная мантия волшебника, но в то же время является пригодным для использования в космосе и бронированным. Небольшое замедление. Теперь вы можете произносить заклинания в космосе и местах с низкой температурой! Имеет функцию энергетического щита,который защищает от всех снарядов. Щит разряжается при получении урона и автоматически заряжается.
|
||||||
|
|
||||||
|
|||||||
@@ -42,3 +42,6 @@ ent-ActionKnock = Стук
|
|||||||
|
|
||||||
ent-ActionSmite = Кара
|
ent-ActionSmite = Кара
|
||||||
.desc = Заряжает вашу руку мерзкой энергией, которую можно использовать для взрыва жертв. Заклинание требует, чтобы вы коснулись своей цели, поэтому вы не сможете использовать его в наручниках или будучи оглушённым. Не работает без волшебной мантии и шляпы.
|
.desc = Заряжает вашу руку мерзкой энергией, которую можно использовать для взрыва жертв. Заклинание требует, чтобы вы коснулись своей цели, поэтому вы не сможете использовать его в наручниках или будучи оглушённым. Не работает без волшебной мантии и шляпы.
|
||||||
|
|
||||||
|
ent-ActionMindswapSpell = Подмена сознания
|
||||||
|
.desc = Позволяет заклинателю переключаться между телами с целью. Вы должны быть рядом с целью, в которую хотите перейти, после чего вы оба будете нокаутированы. Не работает на культистов, генокрадов и революционеров.
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
description: uplink-revolver-python-desc
|
description: uplink-revolver-python-desc
|
||||||
productEntity: WeaponRevolverPythonAP
|
productEntity: WeaponRevolverPythonAP
|
||||||
cost:
|
cost:
|
||||||
Telecrystal: 6 # Originally was 13 TC but was not used due to high cost
|
Telecrystal: 8 # Originally was 13 TC but was not used due to high cost
|
||||||
categories:
|
categories:
|
||||||
- UplinkWeaponry
|
- UplinkWeaponry
|
||||||
saleLimit: 1
|
saleLimit: 1
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
coefficients:
|
coefficients:
|
||||||
Blunt: 0.4
|
Blunt: 0.4
|
||||||
Slash: 0.4
|
Slash: 0.4
|
||||||
Piercing: 0.7
|
Piercing: 0.9
|
||||||
Heat: 0.9
|
Heat: 0.9
|
||||||
Caustic: 0.9
|
Caustic: 0.9
|
||||||
- type: ExplosionResistance
|
- type: ExplosionResistance
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
Piercing: 0.9
|
Piercing: 0.9
|
||||||
Heat: 0.4 # this technically means it protects against fires pretty well? -heat is just for lasers and stuff, not atmos temperature
|
Heat: 0.4 # this technically means it protects against fires pretty well? -heat is just for lasers and stuff, not atmos temperature
|
||||||
- type: Reflect
|
- type: Reflect
|
||||||
reflectProb: 1
|
reflectProb: 0.5
|
||||||
reflects:
|
reflects:
|
||||||
- Energy
|
- Energy
|
||||||
|
|
||||||
|
|||||||
@@ -179,7 +179,7 @@
|
|||||||
Blunt: 0.6
|
Blunt: 0.6
|
||||||
Slash: 0.6
|
Slash: 0.6
|
||||||
Piercing: 0.5
|
Piercing: 0.5
|
||||||
Heat: 0.3
|
Heat: 0.5
|
||||||
Radiation: 0.1
|
Radiation: 0.1
|
||||||
Caustic: 0.5
|
Caustic: 0.5
|
||||||
- type: ExplosionResistance
|
- type: ExplosionResistance
|
||||||
@@ -576,7 +576,7 @@
|
|||||||
Blunt: 0.5
|
Blunt: 0.5
|
||||||
Slash: 0.5
|
Slash: 0.5
|
||||||
Piercing: 0.5
|
Piercing: 0.5
|
||||||
Heat: 0.2
|
Heat: 0.4
|
||||||
Radiation: 0.01
|
Radiation: 0.01
|
||||||
Caustic: 0.5
|
Caustic: 0.5
|
||||||
- type: Item
|
- type: Item
|
||||||
@@ -609,7 +609,7 @@
|
|||||||
coefficients:
|
coefficients:
|
||||||
Blunt: 0.4
|
Blunt: 0.4
|
||||||
Slash: 0.4
|
Slash: 0.4
|
||||||
Piercing: 0.3
|
Piercing: 0.4
|
||||||
Heat: 0.5
|
Heat: 0.5
|
||||||
Radiation: 0.25
|
Radiation: 0.25
|
||||||
Caustic: 0.4
|
Caustic: 0.4
|
||||||
@@ -642,7 +642,7 @@
|
|||||||
Blunt: 0.2
|
Blunt: 0.2
|
||||||
Slash: 0.2
|
Slash: 0.2
|
||||||
Piercing: 0.2
|
Piercing: 0.2
|
||||||
Heat: 0.2
|
Heat: 0.4
|
||||||
Radiation: 0.2
|
Radiation: 0.2
|
||||||
Caustic: 0.2
|
Caustic: 0.2
|
||||||
- type: ClothingSpeedModifier
|
- type: ClothingSpeedModifier
|
||||||
@@ -685,17 +685,19 @@
|
|||||||
toggleable-clothing: !type:ContainerSlot
|
toggleable-clothing: !type:ContainerSlot
|
||||||
- type: PowerCellSlot
|
- type: PowerCellSlot
|
||||||
cellSlotId: cell_slot
|
cellSlotId: cell_slot
|
||||||
|
fitsInCharger: false
|
||||||
- type: ItemSlots
|
- type: ItemSlots
|
||||||
slots:
|
slots:
|
||||||
cell_slot:
|
cell_slot:
|
||||||
name: power-cell-slot-component-slot-name-default
|
name: power-cell-slot-component-slot-name-default
|
||||||
startingItem: PowerCellMicroreactor
|
startingItem: PowerCellMicroreactor
|
||||||
|
disableEject: true
|
||||||
whitelist:
|
whitelist:
|
||||||
tags:
|
tags:
|
||||||
- PowerCell
|
- PowerCell
|
||||||
- PowerCellSmall
|
- PowerCellSmall
|
||||||
- type: EnergyDomeGenerator
|
- type: EnergyDomeGenerator
|
||||||
damageEnergyDraw: 5
|
damageEnergyDraw: 20
|
||||||
domePrototype: EnergyDomeSmallPink
|
domePrototype: EnergyDomeSmallPink
|
||||||
- type: ClothingSpeedModifier
|
- type: ClothingSpeedModifier
|
||||||
walkModifier: 0.9
|
walkModifier: 0.9
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
rootTask:
|
rootTask:
|
||||||
task: SimpleHostileCompound
|
task: SimpleHostileCompound
|
||||||
blackboard:
|
blackboard:
|
||||||
|
NavInteract: !type:Bool
|
||||||
|
true
|
||||||
|
NavPry: !type:Bool
|
||||||
|
true
|
||||||
NavSmash: !type:Bool
|
NavSmash: !type:Bool
|
||||||
true
|
true
|
||||||
- type: NpcFactionMember
|
- type: NpcFactionMember
|
||||||
@@ -82,6 +86,17 @@
|
|||||||
- type: NightVision
|
- type: NightVision
|
||||||
toggleSound: null
|
toggleSound: null
|
||||||
color: "#404040"
|
color: "#404040"
|
||||||
|
- type: Tool
|
||||||
|
speed: 2
|
||||||
|
qualities:
|
||||||
|
- Prying
|
||||||
|
- type: Prying
|
||||||
|
pryPowered: !type:Bool
|
||||||
|
true
|
||||||
|
force: !type:Bool
|
||||||
|
true
|
||||||
|
useSound:
|
||||||
|
path: /Audio/Items/crowbar.ogg
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseMobCarp
|
parent: BaseMobCarp
|
||||||
@@ -100,8 +115,6 @@
|
|||||||
alive: Rainbow
|
alive: Rainbow
|
||||||
enum.DamageStateVisualLayers.BaseUnshaded:
|
enum.DamageStateVisualLayers.BaseUnshaded:
|
||||||
mouth: ""
|
mouth: ""
|
||||||
- type: MovementSpeedModifier
|
|
||||||
baseSprintSpeed: 6
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
name: magicarp
|
name: magicarp
|
||||||
@@ -148,6 +161,8 @@
|
|||||||
energy: 0.5
|
energy: 0.5
|
||||||
- type: RgbLightController
|
- type: RgbLightController
|
||||||
layers: [ 0 ]
|
layers: [ 0 ]
|
||||||
|
- type: MovementSpeedModifier
|
||||||
|
baseSprintSpeed: 6
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: MobCarpSalvage
|
id: MobCarpSalvage
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
NavSmash: !type:Bool
|
NavSmash: !type:Bool
|
||||||
true
|
true
|
||||||
- type: Tool
|
- type: Tool
|
||||||
speed: 1.5
|
speed: 2
|
||||||
qualities:
|
qualities:
|
||||||
- Prying
|
- Prying
|
||||||
- type: Prying
|
- type: Prying
|
||||||
@@ -140,12 +140,12 @@
|
|||||||
- type: MobThresholds
|
- type: MobThresholds
|
||||||
thresholds:
|
thresholds:
|
||||||
0: Alive
|
0: Alive
|
||||||
150: Dead
|
200: Dead
|
||||||
- type: Stamina
|
- type: Stamina
|
||||||
critThreshold: 300
|
critThreshold: 300
|
||||||
- type: SlowOnDamage
|
- type: SlowOnDamage
|
||||||
speedModifierThresholds:
|
speedModifierThresholds:
|
||||||
130: 0.7
|
180: 0.7
|
||||||
- type: Fixtures
|
- type: Fixtures
|
||||||
fixtures:
|
fixtures:
|
||||||
fix1:
|
fix1:
|
||||||
@@ -178,10 +178,10 @@
|
|||||||
- type: MobThresholds
|
- type: MobThresholds
|
||||||
thresholds:
|
thresholds:
|
||||||
0: Alive
|
0: Alive
|
||||||
150: Dead
|
200: Dead
|
||||||
- type: SlowOnDamage
|
- type: SlowOnDamage
|
||||||
speedModifierThresholds:
|
speedModifierThresholds:
|
||||||
130: 0.7
|
180: 0.7
|
||||||
- type: MeleeWeapon
|
- type: MeleeWeapon
|
||||||
damage:
|
damage:
|
||||||
groups:
|
groups:
|
||||||
@@ -256,7 +256,7 @@
|
|||||||
- type: MobThresholds
|
- type: MobThresholds
|
||||||
thresholds:
|
thresholds:
|
||||||
0: Alive
|
0: Alive
|
||||||
100: Dead
|
150: Dead
|
||||||
- type: MovementSpeedModifier
|
- type: MovementSpeedModifier
|
||||||
baseSprintSpeed: 4
|
baseSprintSpeed: 4
|
||||||
- type: MeleeWeapon
|
- type: MeleeWeapon
|
||||||
@@ -265,7 +265,7 @@
|
|||||||
Brute: 20
|
Brute: 20
|
||||||
- type: SlowOnDamage
|
- type: SlowOnDamage
|
||||||
speedModifierThresholds:
|
speedModifierThresholds:
|
||||||
80: 0.7
|
130: 0.7
|
||||||
- type: Fixtures
|
- type: Fixtures
|
||||||
fixtures:
|
fixtures:
|
||||||
fix1:
|
fix1:
|
||||||
@@ -322,6 +322,10 @@
|
|||||||
spawned:
|
spawned:
|
||||||
- id: FoodMeatRouny
|
- id: FoodMeatRouny
|
||||||
amount: 3
|
amount: 3
|
||||||
|
- type: MeleeWeapon
|
||||||
|
damage:
|
||||||
|
groups:
|
||||||
|
Brute: 15
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
name: Spitter
|
name: Spitter
|
||||||
|
|||||||
@@ -131,6 +131,17 @@
|
|||||||
- type: NightVision
|
- type: NightVision
|
||||||
toggleSound: null
|
toggleSound: null
|
||||||
color: "#404040"
|
color: "#404040"
|
||||||
|
- type: Tool
|
||||||
|
speed: 3
|
||||||
|
qualities:
|
||||||
|
- Prying
|
||||||
|
- type: Prying
|
||||||
|
pryPowered: !type:Bool
|
||||||
|
true
|
||||||
|
force: !type:Bool
|
||||||
|
true
|
||||||
|
useSound:
|
||||||
|
path: /Audio/Items/crowbar.ogg
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseMobDragon
|
parent: BaseMobDragon
|
||||||
@@ -151,6 +162,13 @@
|
|||||||
components:
|
components:
|
||||||
- type: GhostRole
|
- type: GhostRole
|
||||||
description: ghost-role-information-space-dragon-dungeon-description
|
description: ghost-role-information-space-dragon-dungeon-description
|
||||||
|
- type: MobThresholds
|
||||||
|
thresholds:
|
||||||
|
0: Alive
|
||||||
|
200: Dead
|
||||||
|
- type: SlowOnDamage
|
||||||
|
speedModifierThresholds:
|
||||||
|
180: 0.7
|
||||||
# less meat spawned since it's a lot easier to kill
|
# less meat spawned since it's a lot easier to kill
|
||||||
- type: Butcherable
|
- type: Butcherable
|
||||||
spawned:
|
spawned:
|
||||||
@@ -159,7 +177,7 @@
|
|||||||
- type: MeleeWeapon
|
- type: MeleeWeapon
|
||||||
damage:
|
damage:
|
||||||
groups:
|
groups:
|
||||||
Brute: 20
|
Brute: 25
|
||||||
- type: ExpeditionGhostRole
|
- type: ExpeditionGhostRole
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
- ShellShotgun
|
- ShellShotgun
|
||||||
- type: CartridgeAmmo
|
- type: CartridgeAmmo
|
||||||
count: 6
|
count: 6
|
||||||
spread: 22
|
spread: 28
|
||||||
soundEject:
|
soundEject:
|
||||||
collection: ShellEject
|
collection: ShellEject
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
- type: Projectile
|
- type: Projectile
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
Piercing: 28
|
Piercing: 40
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: PelletShotgunBeanbag
|
id: PelletShotgunBeanbag
|
||||||
|
|||||||
@@ -26,10 +26,7 @@
|
|||||||
hard: false
|
hard: false
|
||||||
mask:
|
mask:
|
||||||
- Opaque
|
- Opaque
|
||||||
- type: StunOnCollide
|
- type: KnockdownOnCollide
|
||||||
stunAmount: 1
|
- type: StaminaDamageOnCollide
|
||||||
knockdownAmount: 1
|
ignoreResistances: false
|
||||||
slowdownAmount: 5
|
damage: 60
|
||||||
walkSpeedModifier: 0.5
|
|
||||||
runSpeedModifier: 0.3
|
|
||||||
|
|
||||||
|
|||||||
@@ -1106,7 +1106,7 @@
|
|||||||
- type: Projectile
|
- type: Projectile
|
||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
Heat: 9
|
Heat: 10
|
||||||
- type: Trail
|
- type: Trail
|
||||||
scale: 0.03, 0.0
|
scale: 0.03, 0.0
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,8 @@
|
|||||||
- CartridgeAntiMateriel
|
- CartridgeAntiMateriel
|
||||||
capacity: 5
|
capacity: 5
|
||||||
proto: CartridgeAntiMateriel
|
proto: CartridgeAntiMateriel
|
||||||
|
- type: Gun
|
||||||
|
fireRate: 0.6
|
||||||
- type: Wieldable
|
- type: Wieldable
|
||||||
forceTwoHanded: True
|
forceTwoHanded: True
|
||||||
- type: Telescope
|
- type: Telescope
|
||||||
|
|||||||
@@ -15,11 +15,11 @@
|
|||||||
- Belt
|
- Belt
|
||||||
- type: Gun
|
- type: Gun
|
||||||
resetOnHandSelected: false
|
resetOnHandSelected: false
|
||||||
fireRate: 0.3
|
fireRate: 0.5
|
||||||
soundGunshot:
|
soundGunshot:
|
||||||
path: /Audio/Weapons/click.ogg
|
path: /Audio/Weapons/click.ogg
|
||||||
- type: RechargeBasicEntityAmmo
|
- type: RechargeBasicEntityAmmo
|
||||||
rechargeCooldown: 2.5
|
rechargeCooldown: 1.5
|
||||||
rechargeSound:
|
rechargeSound:
|
||||||
path: /Audio/Weapons/Guns/MagIn/revolver_magin.ogg
|
path: /Audio/Weapons/Guns/MagIn/revolver_magin.ogg
|
||||||
- type: BasicEntityAmmoProvider
|
- type: BasicEntityAmmoProvider
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
description: This spell opens nearby doors.
|
description: This spell opens nearby doors.
|
||||||
noSpawn: true
|
noSpawn: true
|
||||||
components:
|
components:
|
||||||
|
- type: Magic
|
||||||
|
requiresClothes: false
|
||||||
- type: InstantAction
|
- type: InstantAction
|
||||||
useDelay: 8
|
useDelay: 8
|
||||||
itemIconStyle: BigAction
|
itemIconStyle: BigAction
|
||||||
|
|||||||
@@ -38,6 +38,8 @@
|
|||||||
name: Force
|
name: Force
|
||||||
noSpawn: true
|
noSpawn: true
|
||||||
components:
|
components:
|
||||||
|
- type: Magic
|
||||||
|
requiresClothes: false
|
||||||
- type: WorldTargetAction
|
- type: WorldTargetAction
|
||||||
itemIconStyle: BigAction
|
itemIconStyle: BigAction
|
||||||
useDelay: 60
|
useDelay: 60
|
||||||
@@ -100,6 +102,8 @@
|
|||||||
name: Cards
|
name: Cards
|
||||||
noSpawn: true
|
noSpawn: true
|
||||||
components:
|
components:
|
||||||
|
- type: Magic
|
||||||
|
requiresClothes: false
|
||||||
- type: WorldTargetAction
|
- type: WorldTargetAction
|
||||||
itemIconStyle: BigAction
|
itemIconStyle: BigAction
|
||||||
useDelay: 60
|
useDelay: 60
|
||||||
@@ -167,6 +171,8 @@
|
|||||||
name: Blink
|
name: Blink
|
||||||
noSpawn: true
|
noSpawn: true
|
||||||
components:
|
components:
|
||||||
|
- type: Magic
|
||||||
|
requiresClothes: false
|
||||||
- type: InstantAction
|
- type: InstantAction
|
||||||
useDelay: 6
|
useDelay: 6
|
||||||
itemIconStyle: BigAction
|
itemIconStyle: BigAction
|
||||||
@@ -216,6 +222,8 @@
|
|||||||
name: Cluwne Curse
|
name: Cluwne Curse
|
||||||
noSpawn: true
|
noSpawn: true
|
||||||
components:
|
components:
|
||||||
|
- type: Magic
|
||||||
|
requiresClothes: false
|
||||||
- type: EntityTargetAction
|
- type: EntityTargetAction
|
||||||
whitelist:
|
whitelist:
|
||||||
components:
|
components:
|
||||||
@@ -235,6 +243,8 @@
|
|||||||
name: Banana Touch
|
name: Banana Touch
|
||||||
noSpawn: true
|
noSpawn: true
|
||||||
components:
|
components:
|
||||||
|
- type: Magic
|
||||||
|
requiresClothes: false
|
||||||
- type: EntityTargetAction
|
- type: EntityTargetAction
|
||||||
whitelist:
|
whitelist:
|
||||||
components:
|
components:
|
||||||
@@ -254,6 +264,8 @@
|
|||||||
name: Mime Touch
|
name: Mime Touch
|
||||||
noSpawn: true
|
noSpawn: true
|
||||||
components:
|
components:
|
||||||
|
- type: Magic
|
||||||
|
requiresClothes: false
|
||||||
- type: EntityTargetAction
|
- type: EntityTargetAction
|
||||||
whitelist:
|
whitelist:
|
||||||
components:
|
components:
|
||||||
@@ -273,6 +285,8 @@
|
|||||||
name: Instant Recall
|
name: Instant Recall
|
||||||
noSpawn: true
|
noSpawn: true
|
||||||
components:
|
components:
|
||||||
|
- type: Magic
|
||||||
|
requiresClothes: false
|
||||||
- type: InstantRecall
|
- type: InstantRecall
|
||||||
- type: InstantAction
|
- type: InstantAction
|
||||||
useDelay: 10
|
useDelay: 10
|
||||||
@@ -288,6 +302,8 @@
|
|||||||
name: Teleport
|
name: Teleport
|
||||||
noSpawn: true
|
noSpawn: true
|
||||||
components:
|
components:
|
||||||
|
- type: Magic
|
||||||
|
requiresClothes: false
|
||||||
- type: InstantAction
|
- type: InstantAction
|
||||||
checkCanInteract: false
|
checkCanInteract: false
|
||||||
useDelay: 60
|
useDelay: 60
|
||||||
@@ -297,3 +313,25 @@
|
|||||||
state: teleport
|
state: teleport
|
||||||
event: !type:TeleportSpellEvent
|
event: !type:TeleportSpellEvent
|
||||||
speech: "SCYAR FIDE!"
|
speech: "SCYAR FIDE!"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: ActionMindswapSpell
|
||||||
|
name: Mindswap
|
||||||
|
noSpawn: true
|
||||||
|
components:
|
||||||
|
- type: Magic
|
||||||
|
requiresClothes: false
|
||||||
|
- type: EntityTargetAction
|
||||||
|
whitelist:
|
||||||
|
components:
|
||||||
|
- MindContainer
|
||||||
|
- ActionContainer
|
||||||
|
canTargetSelf: false
|
||||||
|
checkCanInteract: false
|
||||||
|
useDelay: 60
|
||||||
|
itemIconStyle: BigAction
|
||||||
|
icon:
|
||||||
|
sprite: Objects/Magic/magicactions.rsi
|
||||||
|
state: mindswap
|
||||||
|
event: !type:MindswapSpellEvent
|
||||||
|
speech: "GIN'YU CAPAN!"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
- type: salvageDifficulty
|
- type: salvageDifficulty
|
||||||
id: Minimal
|
id: Minimal
|
||||||
lootBudget: 10
|
lootBudget: 5
|
||||||
mobBudget: 10
|
mobBudget: 10
|
||||||
modifierBudget: 1
|
modifierBudget: 1
|
||||||
color: "#9FED5896"
|
color: "#9FED5896"
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
- type: salvageDifficulty
|
- type: salvageDifficulty
|
||||||
id: Minor
|
id: Minor
|
||||||
lootBudget: 30
|
lootBudget: 15
|
||||||
mobBudget: 30
|
mobBudget: 30
|
||||||
modifierBudget: 1
|
modifierBudget: 1
|
||||||
color: "#EFB34196"
|
color: "#EFB34196"
|
||||||
@@ -16,24 +16,24 @@
|
|||||||
|
|
||||||
- type: salvageDifficulty
|
- type: salvageDifficulty
|
||||||
id: Moderate
|
id: Moderate
|
||||||
lootBudget: 50
|
lootBudget: 30
|
||||||
mobBudget: 50
|
mobBudget: 60
|
||||||
modifierBudget: 2
|
modifierBudget: 2
|
||||||
color: "#52B4E996"
|
color: "#52B4E996"
|
||||||
recommendedPlayers: 2
|
recommendedPlayers: 2
|
||||||
|
|
||||||
- type: salvageDifficulty
|
- type: salvageDifficulty
|
||||||
id: Hazardous
|
id: Hazardous
|
||||||
lootBudget: 70
|
lootBudget: 50
|
||||||
mobBudget: 70
|
mobBudget: 100
|
||||||
modifierBudget: 2
|
modifierBudget: 2
|
||||||
color: "#DE3A3A96"
|
color: "#DE3A3A96"
|
||||||
recommendedPlayers: 3
|
recommendedPlayers: 3
|
||||||
|
|
||||||
- type: salvageDifficulty
|
- type: salvageDifficulty
|
||||||
id: Extreme
|
id: Extreme
|
||||||
lootBudget: 100
|
lootBudget: 75
|
||||||
mobBudget: 100
|
mobBudget: 150
|
||||||
modifierBudget: 3
|
modifierBudget: 3
|
||||||
color: "#D381C996"
|
color: "#D381C996"
|
||||||
recommendedPlayers: 4
|
recommendedPlayers: 4
|
||||||
|
|||||||
@@ -6,21 +6,24 @@
|
|||||||
cost: 2
|
cost: 2
|
||||||
- proto: MobXenoPraetorian
|
- proto: MobXenoPraetorian
|
||||||
cost: 5
|
cost: 5
|
||||||
prob: 0.1
|
prob: 0.5
|
||||||
- proto: MobXenoQueen
|
- proto: MobXenoQueen
|
||||||
cost: 10
|
cost: 10
|
||||||
prob: 0.02
|
prob: 0.1
|
||||||
- proto: MobXenoRavager
|
- proto: MobXenoRavager
|
||||||
cost: 5
|
cost: 4
|
||||||
- proto: MobXenoRunner
|
- proto: MobXenoRunner
|
||||||
cost: 2
|
cost: 2
|
||||||
- proto: MobXenoRouny
|
- proto: MobXenoRouny
|
||||||
cost: 3
|
cost: 2
|
||||||
prob: 0.02
|
prob: 0.5
|
||||||
- proto: MobXenoSpitter
|
- proto: MobXenoSpitter
|
||||||
cost: 3
|
cost: 3
|
||||||
- proto: WeaponTurretXeno
|
- proto: WeaponTurretXeno
|
||||||
prob: 0.1
|
prob: 0.1
|
||||||
|
- proto: MobLaserRaptor
|
||||||
|
cost: 5
|
||||||
|
prob: 0.5
|
||||||
configs:
|
configs:
|
||||||
DefenseStructure: XenoWardingTower
|
DefenseStructure: XenoWardingTower
|
||||||
Megafauna: MobXenoQueen
|
Megafauna: MobXenoQueen
|
||||||
@@ -31,20 +34,23 @@
|
|||||||
- proto: MobCarpDungeon
|
- proto: MobCarpDungeon
|
||||||
# These do too much damage for salvage, need nerfs
|
# These do too much damage for salvage, need nerfs
|
||||||
- proto: MobCarpHolo
|
- proto: MobCarpHolo
|
||||||
cost: 5
|
cost: 8
|
||||||
prob: 0.05
|
prob: 0.25
|
||||||
- proto: MobCarpMagic
|
- proto: MobCarpMagic
|
||||||
cost: 4
|
cost: 2
|
||||||
prob: 0.1
|
prob: 0.5
|
||||||
- proto: MobCarpRainbow # carp version of rouny...
|
- proto: MobCarpRainbow # carp version of rouny...
|
||||||
cost: 6
|
cost: 4
|
||||||
prob: 0.05
|
prob: 0.5
|
||||||
- proto: MobShark
|
- proto: MobShark
|
||||||
cost: 8
|
cost: 8
|
||||||
prob: 0.035
|
prob: 0.25
|
||||||
- proto: MobDragonDungeon
|
- proto: MobDragonDungeon
|
||||||
cost: 12
|
cost: 12
|
||||||
prob: 0.02
|
prob: 0.1
|
||||||
|
- proto: MobLaserRaptor
|
||||||
|
cost: 5
|
||||||
|
prob: 0.5
|
||||||
configs:
|
configs:
|
||||||
DefenseStructure: CarpStatue
|
DefenseStructure: CarpStatue
|
||||||
Megafauna: MobDragonDungeon
|
Megafauna: MobDragonDungeon
|
||||||
|
|||||||
@@ -107,97 +107,119 @@
|
|||||||
cost: 2
|
cost: 2
|
||||||
- proto: EnergyBattleAxe
|
- proto: EnergyBattleAxe
|
||||||
prob: 0.1
|
prob: 0.1
|
||||||
cost: 8
|
cost: 20
|
||||||
- proto: WeaponRifleAk
|
- proto: WeaponRifleAk
|
||||||
cost: 5
|
cost: 16
|
||||||
- proto: TimeBeacon
|
- proto: TimeBeacon
|
||||||
cost: 2
|
cost: 2
|
||||||
prob: 0.5
|
prob: 0.5
|
||||||
- proto: ClothingBackpackDuffelSyndicateFilledSMG
|
- proto: ClothingBackpackDuffelSyndicateFilledSMG
|
||||||
cost: 6
|
cost: 15
|
||||||
prob: 0.5
|
prob: 0.2
|
||||||
- proto: ClothingBackpackDuffelSyndicateFilledShotgun
|
- proto: ClothingBackpackDuffelSyndicateFilledShotgun
|
||||||
cost: 8
|
cost: 17
|
||||||
prob: 0.5
|
prob: 0.2
|
||||||
- proto: BriefcaseSyndieSniperBundleFilled
|
- proto: BriefcaseSyndieSniperBundleFilled
|
||||||
cost: 10
|
cost: 20
|
||||||
prob: 0.5
|
prob: 0.2
|
||||||
- proto: ClothingBackpackDuffelSyndicateFilledLMG
|
- proto: ClothingBackpackDuffelSyndicateFilledLMG
|
||||||
cost: 12
|
cost: 25
|
||||||
prob: 0.5
|
prob: 0.2
|
||||||
- proto: WeaponRevolverMateba
|
- proto: WeaponRevolverMateba
|
||||||
cost: 5
|
cost: 10
|
||||||
|
prob: 0.1
|
||||||
- proto: WeaponRevolverDeckard
|
- proto: WeaponRevolverDeckard
|
||||||
cost: 4
|
cost: 10
|
||||||
- proto: ExGrenade
|
- proto: ExGrenade
|
||||||
cost: 3
|
cost: 8
|
||||||
- proto: SupermatterGrenade
|
- proto: SupermatterGrenade
|
||||||
cost: 5
|
cost: 12
|
||||||
- proto: WhiteholeGrenade
|
- proto: WhiteholeGrenade
|
||||||
cost: 3
|
|
||||||
- proto: ClothingOuterHardsuitMaxim
|
|
||||||
cost: 5
|
cost: 5
|
||||||
|
- proto: ClothingOuterHardsuitMaxim
|
||||||
|
cost: 12
|
||||||
- proto: GrenadeIncendiary
|
- proto: GrenadeIncendiary
|
||||||
cost: 4
|
cost: 8
|
||||||
- proto: ExperimentalSyndicateTeleporter
|
- proto: ExperimentalSyndicateTeleporter
|
||||||
cost: 8
|
cost: 8
|
||||||
prob: 0.5
|
prob: 0.2
|
||||||
- proto: ClothingHeadHelmetSwat
|
- proto: ClothingHeadHelmetSwat
|
||||||
cost: 4
|
cost: 4
|
||||||
|
prob: 0.5
|
||||||
- proto: ClothingBeltMilitaryWebbing
|
- proto: ClothingBeltMilitaryWebbing
|
||||||
cost: 2
|
cost: 2
|
||||||
- proto: ClothingOuterVestWeb
|
- proto: ClothingOuterVestWeb
|
||||||
cost: 5
|
cost: 5
|
||||||
|
prob: 0.5
|
||||||
- proto: ClothingEyesNightVisionGoggles
|
- proto: ClothingEyesNightVisionGoggles
|
||||||
cost: 5
|
cost: 8
|
||||||
- proto: ClothingHandsGlovesCombat
|
- proto: ClothingHandsGlovesCombat
|
||||||
cost: 3
|
cost: 3
|
||||||
- proto: Katana
|
- proto: Katana
|
||||||
cost: 3
|
cost: 5
|
||||||
- proto: WeaponMakeshiftLaser
|
- proto: WeaponMakeshiftLaser
|
||||||
cost: 4
|
|
||||||
- proto: WeaponLaserGun
|
|
||||||
cost: 5
|
|
||||||
- proto: WeaponEgun
|
|
||||||
cost: 5
|
|
||||||
- proto: WeaponXrayCannon
|
|
||||||
cost: 6
|
|
||||||
- proto: WeaponLaserCannon
|
|
||||||
cost: 6
|
|
||||||
- proto: WeaponTempGun
|
|
||||||
cost: 4
|
|
||||||
- proto: WeaponAdvancedLaser
|
|
||||||
cost: 10
|
cost: 10
|
||||||
prob: 0.5
|
prob: 0.5
|
||||||
|
- proto: WeaponLaserGun
|
||||||
|
cost: 12
|
||||||
|
prob: 0.1
|
||||||
|
- proto: WeaponEgun
|
||||||
|
cost: 16
|
||||||
|
prob: 0.1
|
||||||
|
- proto: WeaponXrayCannon
|
||||||
|
cost: 18
|
||||||
|
prob: 0.1
|
||||||
|
- proto: WeaponLaserCannon
|
||||||
|
cost: 20
|
||||||
|
prob: 0.1
|
||||||
- proto: Stimpack
|
- proto: Stimpack
|
||||||
cost: 6
|
|
||||||
- proto: StimkitFilled
|
|
||||||
cost: 8
|
cost: 8
|
||||||
prob: 0.5
|
prob: 0.5
|
||||||
|
- proto: StimkitFilled
|
||||||
|
cost: 12
|
||||||
|
prob: 0.5
|
||||||
- proto: CrateSecurityRiot
|
- proto: CrateSecurityRiot
|
||||||
cost: 5
|
cost: 12
|
||||||
prob: 0.5
|
prob: 0.5
|
||||||
- proto: CrateSecurityNonlethal
|
- proto: CrateSecurityNonlethal
|
||||||
cost: 4
|
cost: 10
|
||||||
prob: 0.5
|
prob: 0.5
|
||||||
- proto: ClothingShoesBootsMagSyndie
|
- proto: ClothingShoesBootsMagSyndie
|
||||||
cost: 5
|
cost: 4
|
||||||
|
prob: 0.2
|
||||||
- proto: JetpackBlackFilled
|
- proto: JetpackBlackFilled
|
||||||
cost: 3
|
cost: 3
|
||||||
|
prob: 0.5
|
||||||
- proto: WeaponLauncherRocket
|
- proto: WeaponLauncherRocket
|
||||||
cost: 8
|
cost: 20
|
||||||
- proto: WeaponLauncherPirateCannon
|
- proto: WeaponLauncherPirateCannon
|
||||||
cost: 5
|
cost: 15
|
||||||
- proto: LightModule
|
- proto: LightModule
|
||||||
cost: 2
|
|
||||||
- proto: LaserModule
|
|
||||||
cost: 4
|
|
||||||
- proto: FlameHiderModule
|
|
||||||
cost: 2
|
|
||||||
- proto: SilencerModule
|
|
||||||
cost: 3
|
cost: 3
|
||||||
- proto: AcceleratorModule
|
- proto: LaserModule
|
||||||
|
cost: 8
|
||||||
|
- proto: FlameHiderModule
|
||||||
|
cost: 3
|
||||||
|
- proto: SilencerModule
|
||||||
cost: 5
|
cost: 5
|
||||||
|
- proto: AcceleratorModule
|
||||||
|
cost: 12
|
||||||
|
- proto: MedkitFilled
|
||||||
|
cost: 3
|
||||||
|
- proto: MedkitRadiationFilled
|
||||||
|
cost: 5
|
||||||
|
- proto: MedkitOxygenFilled
|
||||||
|
cost: 3
|
||||||
|
- proto: MedkitBruteFilled
|
||||||
|
cost: 5
|
||||||
|
- proto: MedkitCombatFilled
|
||||||
|
cost: 10
|
||||||
|
- proto: MedkitToxinFilled
|
||||||
|
cost: 5
|
||||||
|
- proto: MedkitBurnFilled
|
||||||
|
cost: 5
|
||||||
|
- proto: MedkitAdvancedFilled
|
||||||
|
cost: 8
|
||||||
|
|
||||||
|
|
||||||
# Mob loot table
|
# Mob loot table
|
||||||
|
|||||||
@@ -151,3 +151,12 @@
|
|||||||
- type: Scroll
|
- type: Scroll
|
||||||
actionId: ActionSmite
|
actionId: ActionSmite
|
||||||
learnPopup: scroll-component-smite
|
learnPopup: scroll-component-smite
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: ScrollMindswap
|
||||||
|
parent: BaseScroll
|
||||||
|
name: "Mindswap scroll"
|
||||||
|
components:
|
||||||
|
- type: Scroll
|
||||||
|
actionId: ActionMindswapSpell
|
||||||
|
learnPopup: scroll-component-mindswap
|
||||||
|
|||||||
@@ -222,13 +222,29 @@
|
|||||||
- !type:ListingLimitedStockCondition
|
- !type:ListingLimitedStockCondition
|
||||||
stock: 1
|
stock: 1
|
||||||
|
|
||||||
|
- type: listing
|
||||||
|
id: SpellBookMindswap
|
||||||
|
name: spellbook-mindswap-name
|
||||||
|
description: spellbook-mindswap-desc
|
||||||
|
productEntity: ScrollMindswap
|
||||||
|
icon:
|
||||||
|
sprite: Objects/Magic/magicactions.rsi
|
||||||
|
state: mindswap
|
||||||
|
cost:
|
||||||
|
SpellPoint: 2
|
||||||
|
categories:
|
||||||
|
- UtilitySpells
|
||||||
|
conditions:
|
||||||
|
- !type:ListingLimitedStockCondition
|
||||||
|
stock: 1
|
||||||
|
|
||||||
- type: listing
|
- type: listing
|
||||||
id: SpellBookHardsuit
|
id: SpellBookHardsuit
|
||||||
name: spellbook-hardsuit-name
|
name: spellbook-hardsuit-name
|
||||||
description: spellbook-hardsuit-desc
|
description: spellbook-hardsuit-desc
|
||||||
productEntity: ClothingOuterHardsuitWizard
|
productEntity: ClothingOuterHardsuitWizard
|
||||||
cost:
|
cost:
|
||||||
SpellPoint: 4
|
SpellPoint: 5
|
||||||
categories:
|
categories:
|
||||||
- MagicItems
|
- MagicItems
|
||||||
conditions:
|
conditions:
|
||||||
|
|||||||
@@ -57,6 +57,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "icebeam_active"
|
"name": "icebeam_active"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mindswap"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
Resources/Textures/Objects/Magic/magicactions.rsi/mindswap.png
Normal file
BIN
Resources/Textures/Objects/Magic/magicactions.rsi/mindswap.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 600 B |
Reference in New Issue
Block a user