forked from SpaceStation14-Shenanigans/Monolith
Compare commits
83 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 02be1ef282 | |||
| 85c4a0c9ec | |||
| baeb53ee82 | |||
| 933dc75c33 | |||
| fc45f016ee | |||
| 6a719f7c39 | |||
| d83db373fe | |||
| ccec7894c6 | |||
| 3319b5f0d3 | |||
| 81d9ae37e3 | |||
| 1990f2a272 | |||
| 3665639420 | |||
| 20e2ceb0db | |||
| 84a116fd27 | |||
| c3c402d380 | |||
| 92e8677e82 | |||
| 65365135e3 | |||
| 62e372c9d2 | |||
| 4279c1977d | |||
| 6406a7cf4f | |||
| 806e22e8b4 | |||
| c2934d0bd7 | |||
| 5316f1fdd9 | |||
| 66fed8d2a2 | |||
| 28e3584a67 | |||
| 78c94ddbc4 | |||
| cef95a03bf | |||
| bd3a35ee64 | |||
| 0b50c919e4 | |||
| afcf994545 | |||
| 5aaee26a09 | |||
| fb3c49bd09 | |||
| 2c381cbcd0 | |||
| f4e3ac2478 | |||
| 31de4af5e2 | |||
| 5e67e63032 | |||
| f3919fafc1 | |||
| 974b78863b | |||
| 1654bd5cf8 | |||
| d353667f97 | |||
| 47116d8ba7 | |||
| 9bd6d5f3f2 | |||
| 1dc696deb6 | |||
| f2df23dc81 | |||
| 76d6ea96e0 | |||
| 93ba265e00 | |||
| 16f73ec031 | |||
| 7a0f0d04c5 | |||
| bcce8e67a3 | |||
| 5afcdd9379 | |||
| 01c7ea464a | |||
| 4df38cc9cc | |||
| 8c0d2a50df | |||
| 2d8105de13 | |||
| 01bb73bf56 | |||
| f11c83a96e | |||
| 36d1740829 | |||
| c7a34dfc22 | |||
| e366c4d7cc | |||
| 5d5f6b4654 | |||
| 165f9950b5 | |||
| ef9858936d | |||
| d0a95f5d8b | |||
| ee386b0633 | |||
| de38cc18ef | |||
| ca928bdc83 | |||
| cee6ce9566 | |||
| 984a2c9b71 | |||
| 548e9eccb6 | |||
| cd817abd2c | |||
| f276df8fe9 | |||
| dd323be01d | |||
| 0cf9b35f08 | |||
| 351b225102 | |||
| 496432881e | |||
| 5798b57788 | |||
| ec88162ac0 | |||
| 3992aa846f | |||
| 4b62f35f10 | |||
| c5241854ce | |||
| c3f687a493 | |||
| 7b00d623e0 | |||
| dafbb5f3d8 |
@@ -76,7 +76,7 @@ public sealed class DamageOverlayUiController : UIController
|
||||
{
|
||||
if (mobState == null && !EntityManager.TryGetComponent(entity, out mobState) ||
|
||||
thresholds == null && !EntityManager.TryGetComponent(entity, out thresholds) ||
|
||||
damageable == null && !EntityManager.TryGetComponent(entity, out damageable))
|
||||
damageable == null && !EntityManager.TryGetComponent(entity, out damageable))
|
||||
return;
|
||||
|
||||
if (!_mobThresholdSystem.TryGetIncapThreshold(entity, out var foundThreshold, thresholds))
|
||||
@@ -94,47 +94,48 @@ public sealed class DamageOverlayUiController : UIController
|
||||
switch (mobState.CurrentState)
|
||||
{
|
||||
case MobState.Alive:
|
||||
{
|
||||
if (EntityManager.HasComponent<PainNumbnessComponent>(entity))
|
||||
{
|
||||
_overlay.BruteLevel = 0;
|
||||
}
|
||||
else if (damageable.DamagePerGroup.TryGetValue("Brute", out var bruteDamage))
|
||||
{
|
||||
_overlay.BruteLevel = FixedPoint2.Min(1f, bruteDamage / critThreshold).Float();
|
||||
}
|
||||
if (!EntityManager.HasComponent<PainNumbnessComponent>(entity)) // Mono - makes this look better
|
||||
{
|
||||
if (damageable.DamagePerGroup.TryGetValue("Brute", out var bruteDamage))
|
||||
_overlay.BruteLevel = FixedPoint2.Min(1f, bruteDamage / critThreshold).Float();
|
||||
if (damageable.DamagePerGroup.TryGetValue("Burn", out var burnDamage)) // Adds burn damage to pain overlay - Mono
|
||||
_overlay.BruteLevel = FixedPoint2.Min(1f, _overlay.BruteLevel + (burnDamage / critThreshold)).Float();
|
||||
}
|
||||
else
|
||||
_overlay.BruteLevel = 0;
|
||||
|
||||
if (damageable.DamagePerGroup.TryGetValue("Airloss", out var oxyDamage))
|
||||
{
|
||||
_overlay.OxygenLevel = FixedPoint2.Min(1f, oxyDamage / critThreshold).Float();
|
||||
}
|
||||
if (damageable.DamagePerGroup.TryGetValue("Airloss", out var oxyDamage))
|
||||
{
|
||||
_overlay.OxygenLevel = FixedPoint2.Min(1f, oxyDamage / critThreshold).Float();
|
||||
}
|
||||
|
||||
if (_overlay.BruteLevel < 0.05f) // Don't show damage overlay if they're near enough to max.
|
||||
{
|
||||
_overlay.BruteLevel = 0;
|
||||
}
|
||||
if (_overlay.BruteLevel < 0.05f) // Don't show damage overlay if they're near enough to max.
|
||||
{
|
||||
_overlay.BruteLevel = 0;
|
||||
}
|
||||
|
||||
_overlay.CritLevel = 0;
|
||||
_overlay.DeadLevel = 0;
|
||||
break;
|
||||
}
|
||||
_overlay.CritLevel = 0;
|
||||
_overlay.DeadLevel = 0;
|
||||
break;
|
||||
}
|
||||
case MobState.Critical:
|
||||
{
|
||||
if (!_mobThresholdSystem.TryGetDeadPercentage(entity,
|
||||
FixedPoint2.Max(0.0, damageable.TotalDamage), out var critLevel))
|
||||
return;
|
||||
_overlay.CritLevel = critLevel.Value.Float();
|
||||
{
|
||||
if (!_mobThresholdSystem.TryGetDeadPercentage(entity,
|
||||
FixedPoint2.Max(0.0, damageable.TotalDamage), out var critLevel))
|
||||
return;
|
||||
_overlay.CritLevel = critLevel.Value.Float();
|
||||
|
||||
_overlay.BruteLevel = 0;
|
||||
_overlay.DeadLevel = 0;
|
||||
break;
|
||||
}
|
||||
_overlay.BruteLevel = 0;
|
||||
_overlay.DeadLevel = 0;
|
||||
break;
|
||||
}
|
||||
case MobState.Dead:
|
||||
{
|
||||
_overlay.BruteLevel = 0;
|
||||
_overlay.CritLevel = 0;
|
||||
break;
|
||||
}
|
||||
{
|
||||
_overlay.BruteLevel = 0;
|
||||
_overlay.CritLevel = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ namespace Content.Client.VendingMachines.UI
|
||||
/// Populates the list of available items on the vending machine interface
|
||||
/// and sets icons based on their prototypes
|
||||
/// </summary>
|
||||
public void Populate(List<VendingMachineInventoryEntry> inventory, float priceModifier, int balance, int? cashSlotBalance) // Frontier: add balance, cashSlotBalance
|
||||
public void Populate(List<VendingMachineInventoryEntry> inventory, float priceModifier, int balance, int? cashSlotBalance, bool requiresCash) // Frontier: add balance, cashSlotBalance
|
||||
{
|
||||
UpdateBalance(balance); // Frontier
|
||||
UpdateCashSlotBalance(cashSlotBalance); // Frontier
|
||||
@@ -124,84 +124,11 @@ namespace Content.Client.VendingMachines.UI
|
||||
_dummies.Add(entry.ID, dummy);
|
||||
}
|
||||
|
||||
// Frontier: item pricing
|
||||
// ok so we dont really have access to the pricing system so we are doing a quick price check
|
||||
// based on prototype info since the items inside a vending machine dont actually exist as entities
|
||||
// until they are spawned. So this little alg does the following:
|
||||
// first, checks for a staticprice component, and if it has one, checks to make sure its not 0 since
|
||||
// stacks and other items have 0 cost.
|
||||
// If the price is 0, then we check for both a stack price and a stack component, since if it has one
|
||||
// it should have the other too, and then calculates the price based on that.
|
||||
// If the price is still 0 or non-existant (this is the case for food and containers since their value is
|
||||
// determined dynamically by their contents/inventory), it then falls back to the default mystery
|
||||
// hardcoded value of 20xMarketModifier.
|
||||
var cost = 20;
|
||||
if (prototype != null && prototype.TryGetComponent<StaticPriceComponent>(out var priceComponent, _entityManager.ComponentFactory))
|
||||
{
|
||||
if (priceComponent.Price != 0)
|
||||
{
|
||||
var price = (float)priceComponent.Price;
|
||||
cost = (int)(price * priceModifier);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (prototype.TryGetComponent<StackPriceComponent>(out var stackPrice, _entityManager.ComponentFactory)
|
||||
&& prototype.TryGetComponent<StackComponent>(out var stack, _entityManager.ComponentFactory))
|
||||
{
|
||||
var price = stackPrice.Price * stack.Count;
|
||||
cost = (int)(price * priceModifier);
|
||||
}
|
||||
else
|
||||
cost = (int)(cost * priceModifier);
|
||||
}
|
||||
}
|
||||
else
|
||||
cost = (int)(cost * priceModifier);
|
||||
|
||||
if (prototype != null && prototype.TryGetComponent<SolutionContainerManagerComponent>(out var priceSolutions, _entityManager.ComponentFactory))
|
||||
{
|
||||
if (priceSolutions.Solutions != null)
|
||||
{
|
||||
foreach (var solution in priceSolutions.Solutions.Values)
|
||||
{
|
||||
foreach (var (reagent, quantity) in solution.Contents)
|
||||
{
|
||||
if (!_prototypeManager.TryIndex<ReagentPrototype>(reagent.Prototype,
|
||||
out var reagentProto))
|
||||
continue;
|
||||
|
||||
// TODO check ReagentData for price information?
|
||||
var costReagent = quantity.Float() * reagentProto.PricePerUnit;
|
||||
cost += (int)(costReagent * priceModifier);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// End Frontier: item pricing
|
||||
|
||||
// Frontier: calculate vending price (this duplicates Content.Server.PricingSystem.GetVendPrice - this should be moved to Content.Shared if possible)
|
||||
if (prototype != null)
|
||||
{
|
||||
var price = 0.0;
|
||||
|
||||
if (prototype.TryGetComponent<StaticPriceComponent>(out var staticComp, _entityManager.ComponentFactory) && staticComp.VendPrice > 0.0)
|
||||
{
|
||||
price += staticComp.VendPrice;
|
||||
}
|
||||
else if (prototype.TryGetComponent<StackPriceComponent>(out var stackComp, _entityManager.ComponentFactory) && stackComp.VendPrice > 0.0)
|
||||
{
|
||||
price += stackComp.VendPrice;
|
||||
}
|
||||
|
||||
// If there is anything that explicitly sets vending price - higher OR lower, override the base.
|
||||
if (price > 0.0)
|
||||
{
|
||||
cost = (int)price;
|
||||
}
|
||||
}
|
||||
// End Frontier
|
||||
|
||||
var itemName = Identity.Name(dummy, _entityManager);
|
||||
var cost = 0; // mono
|
||||
if (requiresCash) // frontier
|
||||
cost = GetPrice(entry, prototype, priceModifier);
|
||||
|
||||
string itemText;
|
||||
|
||||
// Frontier: unlimited vending
|
||||
@@ -211,7 +138,6 @@ namespace Content.Client.VendingMachines.UI
|
||||
itemText = $"[{BankSystemExtensions.ToSpesoString(cost)}] {itemName}";
|
||||
// End Frontier: unlimited vending
|
||||
|
||||
|
||||
if (itemText.Length > longestEntry.Length)
|
||||
longestEntry = itemText;
|
||||
|
||||
@@ -223,6 +149,88 @@ namespace Content.Client.VendingMachines.UI
|
||||
SetSizeAfterUpdate(longestEntry.Length, inventory.Count);
|
||||
}
|
||||
|
||||
// Mono: Moved out frontier pricing logic to the separate method
|
||||
private int GetPrice(VendingMachineInventoryEntry entry, EntityPrototype? prototype, float priceModifier){
|
||||
// Frontier: item pricing
|
||||
// ok so we dont really have access to the pricing system so we are doing a quick price check
|
||||
// based on prototype info since the items inside a vending machine dont actually exist as entities
|
||||
// until they are spawned. So this little alg does the following:
|
||||
// first, checks for a staticprice component, and if it has one, checks to make sure its not 0 since
|
||||
// stacks and other items have 0 cost.
|
||||
// If the price is 0, then we check for both a stack price and a stack component, since if it has one
|
||||
// it should have the other too, and then calculates the price based on that.
|
||||
// If the price is still 0 or non-existant (this is the case for food and containers since their value is
|
||||
// determined dynamically by their contents/inventory), it then falls back to the default mystery
|
||||
// hardcoded value of 20xMarketModifier.
|
||||
var cost = 20;
|
||||
if (prototype != null && prototype.TryGetComponent<StaticPriceComponent>(out var priceComponent, _entityManager.ComponentFactory))
|
||||
{
|
||||
if (priceComponent.Price != 0)
|
||||
{
|
||||
var price = (float)priceComponent.Price;
|
||||
cost = (int)(price * priceModifier);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (prototype.TryGetComponent<StackPriceComponent>(out var stackPrice, _entityManager.ComponentFactory)
|
||||
&& prototype.TryGetComponent<StackComponent>(out var stack, _entityManager.ComponentFactory))
|
||||
{
|
||||
var price = stackPrice.Price * stack.Count;
|
||||
cost = (int)(price * priceModifier);
|
||||
}
|
||||
else
|
||||
cost = (int)(cost * priceModifier);
|
||||
}
|
||||
}
|
||||
else
|
||||
cost = (int)(cost * priceModifier);
|
||||
|
||||
if (prototype != null && prototype.TryGetComponent<SolutionContainerManagerComponent>(out var priceSolutions, _entityManager.ComponentFactory))
|
||||
{
|
||||
if (priceSolutions.Solutions != null)
|
||||
{
|
||||
foreach (var solution in priceSolutions.Solutions.Values)
|
||||
{
|
||||
foreach (var (reagent, quantity) in solution.Contents)
|
||||
{
|
||||
if (!_prototypeManager.TryIndex<ReagentPrototype>(reagent.Prototype,
|
||||
out var reagentProto))
|
||||
continue;
|
||||
|
||||
// TODO check ReagentData for price information?
|
||||
var costReagent = quantity.Float() * reagentProto.PricePerUnit;
|
||||
cost += (int)(costReagent * priceModifier);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// End Frontier: item pricing
|
||||
|
||||
// Frontier: calculate vending price (this duplicates Content.Server.PricingSystem.GetVendPrice - this should be moved to Content.Shared if possible)
|
||||
if (prototype != null)
|
||||
{
|
||||
var price = 0.0;
|
||||
|
||||
if (prototype.TryGetComponent<StaticPriceComponent>(out var staticComp, _entityManager.ComponentFactory) && staticComp.VendPrice > 0.0)
|
||||
{
|
||||
price += staticComp.VendPrice;
|
||||
}
|
||||
else if (prototype.TryGetComponent<StackPriceComponent>(out var stackComp, _entityManager.ComponentFactory) && stackComp.VendPrice > 0.0)
|
||||
{
|
||||
price += stackComp.VendPrice;
|
||||
}
|
||||
|
||||
// If there is anything that explicitly sets vending price - higher OR lower, override the base.
|
||||
if (price > 0.0)
|
||||
{
|
||||
cost = (int)price;
|
||||
}
|
||||
}
|
||||
|
||||
return cost;
|
||||
// End Frontier
|
||||
}
|
||||
|
||||
// Frontier
|
||||
public void UpdateBalance(int balance)
|
||||
{
|
||||
|
||||
@@ -30,6 +30,8 @@ namespace Content.Client.VendingMachines
|
||||
[ViewVariables]
|
||||
private int _cashSlotBalance = 0;
|
||||
// End Frontier
|
||||
[ViewVariables]
|
||||
private bool _requiresCash; // mono
|
||||
|
||||
public VendingMachineBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
|
||||
{
|
||||
@@ -74,6 +76,7 @@ namespace Content.Client.VendingMachines
|
||||
if (EntMan.TryGetComponent<VendingMachineComponent>(Owner, out var vendingMachine))
|
||||
{
|
||||
_cashSlotBalance = vendingMachine.CashSlotBalance;
|
||||
_requiresCash = vendingMachine.RequiresCash; // mono
|
||||
if (vendingMachine.CashSlotName != null)
|
||||
cashSlotValue = _cashSlotBalance;
|
||||
}
|
||||
@@ -83,7 +86,7 @@ namespace Content.Client.VendingMachines
|
||||
}
|
||||
// End Frontier
|
||||
|
||||
_menu?.Populate(_cachedInventory, _mod, _balance, cashSlotValue); // Frontier: add _balance
|
||||
_menu?.Populate(_cachedInventory, _mod, _balance, cashSlotValue, _requiresCash); // Frontier: add _balance, mono: add _requiresCash
|
||||
}
|
||||
|
||||
private void OnItemSelected(GUIBoundKeyEventArgs args, ListData data)
|
||||
|
||||
@@ -273,12 +273,20 @@ public sealed class MoverController : SharedMoverController
|
||||
// Mono: all below code handling shuttle movement has been heavily modified by Monolith
|
||||
//
|
||||
|
||||
/// <summary>
|
||||
/// Get a shuttle's torque.
|
||||
/// </summary>
|
||||
public float GetTorque(ShuttleComponent shuttle)
|
||||
{
|
||||
return shuttle.AngularThrust * shuttle.AngularMultiplier;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a shuttle's angular acceleration.
|
||||
/// </summary>
|
||||
public float GetAngularAcceleration(ShuttleComponent shuttle, PhysicsComponent body)
|
||||
{
|
||||
return shuttle.AngularThrust * body.InvI;
|
||||
return GetTorque(shuttle) * body.InvI;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -302,7 +310,7 @@ public sealed class MoverController : SharedMoverController
|
||||
// prevent NaNs
|
||||
dir *= dir.X == 0 ? vertScale : dir.Y == 0 ? horizScale : MathF.Min(horizScale, vertScale);
|
||||
|
||||
return dir;
|
||||
return dir * shuttle.AccelerationMultiplier;
|
||||
}
|
||||
|
||||
public Vector2 GetDirectionAccel(Vector2 dir, ShuttleComponent shuttle, PhysicsComponent body)
|
||||
@@ -323,7 +331,7 @@ public sealed class MoverController : SharedMoverController
|
||||
var twr = thrust.Length() / body.Mass;
|
||||
var twrMult = MathF.Pow(twr / shuttle.BaseMaxVelocityTWR, shuttle.MaxVelocityScalingExponent);
|
||||
|
||||
return vel.Normalized() * MathF.Min(shuttle.BaseMaxLinearVelocity * twrMult, MathF.Min(shuttle.UpperMaxVelocity, shuttle.SetMaxVelocity));
|
||||
return vel.Normalized() * MathF.Min(shuttle.BaseMaxLinearVelocity * twrMult * shuttle.MaxVelMultiplier, MathF.Min(shuttle.UpperMaxVelocity, shuttle.SetMaxVelocity));
|
||||
}
|
||||
|
||||
private void HandleShuttleMovement(float frameTime)
|
||||
@@ -335,6 +343,9 @@ public sealed class MoverController : SharedMoverController
|
||||
// query all our pilots for input
|
||||
var toRemove = new List<EntityUid>();
|
||||
|
||||
var angularMul = 0f;
|
||||
var accelMul = 0f;
|
||||
var maxVelMul = 0f;
|
||||
foreach (var pilot in piloted.InputSources)
|
||||
{
|
||||
var inputsEv = new GetShuttleInputsEvent(frameTime, uid);
|
||||
@@ -343,7 +354,12 @@ public sealed class MoverController : SharedMoverController
|
||||
if (!inputsEv.GotInput)
|
||||
toRemove.Add(pilot);
|
||||
else if (inputsEv.Input != null)
|
||||
{
|
||||
inputs.Add(inputsEv.Input.Value);
|
||||
angularMul += inputsEv.AngularMul;
|
||||
accelMul += inputsEv.AccelMul;
|
||||
maxVelMul += inputsEv.MaxVelMul;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var remUid in toRemove)
|
||||
@@ -359,6 +375,7 @@ public sealed class MoverController : SharedMoverController
|
||||
{
|
||||
_thruster.DisableLinearThrusters(shuttle);
|
||||
PhysicsSystem.SetSleepingAllowed(uid, body, true);
|
||||
shuttle.AngularMultiplier = shuttle.AccelerationMultiplier = shuttle.MaxVelMultiplier = 1f;
|
||||
continue;
|
||||
}
|
||||
PhysicsSystem.SetSleepingAllowed(uid, body, false);
|
||||
@@ -377,6 +394,13 @@ public sealed class MoverController : SharedMoverController
|
||||
angularInput /= count;
|
||||
brakeInput /= count;
|
||||
|
||||
angularMul /= count;
|
||||
accelMul /= count;
|
||||
maxVelMul /= count;
|
||||
shuttle.AngularMultiplier = angularMul;
|
||||
shuttle.AccelerationMultiplier = accelMul;
|
||||
shuttle.MaxVelMultiplier = maxVelMul;
|
||||
|
||||
var shuttleNorthAngle = _xformSystem.GetWorldRotation(uid);
|
||||
|
||||
// handle movement: brake
|
||||
@@ -524,7 +548,7 @@ public sealed class MoverController : SharedMoverController
|
||||
}
|
||||
else
|
||||
{
|
||||
var torque = shuttle.AngularThrust * -angularInput;
|
||||
var torque = GetTorque(shuttle) * -angularInput;
|
||||
|
||||
// Need to cap the velocity if 1 tick of input brings us over cap so we don't continuously
|
||||
// edge onto the cap over and over.
|
||||
|
||||
@@ -9,9 +9,10 @@ public record struct ShuttleInput(Vector2 Strafe, float Rotation, float Brakes);
|
||||
/// <summary>
|
||||
/// Raised on pilots to get inputs given to a shuttle.
|
||||
/// If GotInput is false, this piloted is removed from input sources.
|
||||
/// Also queries for multipliers to acceleration and max speed.
|
||||
/// </summary>
|
||||
[ByRefEvent]
|
||||
public record struct GetShuttleInputsEvent(float FrameTime, EntityUid ShuttleUid, ShuttleInput? Input = null, bool GotInput = false);
|
||||
public record struct GetShuttleInputsEvent(float FrameTime, EntityUid ShuttleUid, ShuttleInput? Input = null, bool GotInput = false, float AngularMul = 1f, float AccelMul = 1f, float MaxVelMul = 1f);
|
||||
|
||||
[ByRefEvent]
|
||||
public record struct PilotedShuttleRelayedEvent<TEvent>(TEvent Args);
|
||||
|
||||
@@ -105,6 +105,24 @@ namespace Content.Server.Shuttles.Components
|
||||
/// </summar>
|
||||
[DataField]
|
||||
public Vector2 LastThrust = Vector2.Zero;
|
||||
|
||||
/// <summary>
|
||||
/// Multiplier to angular thrust. Set depending on pilot.
|
||||
/// </summary
|
||||
[ViewVariables]
|
||||
public float AngularMultiplier = 1f;
|
||||
|
||||
/// <summary>
|
||||
/// Multiplier to linear thrust. Set depending on pilot.
|
||||
/// </summary
|
||||
[ViewVariables]
|
||||
public float AccelerationMultiplier = 1f;
|
||||
|
||||
/// <summary>
|
||||
/// Multiplier to max velocity. Set depending on pilot.
|
||||
/// </summary
|
||||
[ViewVariables]
|
||||
public float MaxVelMultiplier = 1f;
|
||||
// </Mono>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,16 +225,19 @@ public sealed partial class ShuttleSystem
|
||||
var inelasticVel = totalInertia / (ourMass + otherMass);
|
||||
|
||||
// Mono Edit - partial credit to https://github.com/Sector-Crescent/Hullrot/pull/692
|
||||
//ShipShieldedComp is removed when shields are broken, only reduces energy delivered when shields are active. ShipShieldsSystem ln 256.
|
||||
//ShipShieldedComp is removed when shields are broken, reduces both energies when shields are active. ShipShieldsSystem ln 256.
|
||||
float shieldFactor = 1f;
|
||||
if (TryComp<ShipShieldedComponent>(args.OurEntity, out var ShipShieldedComponent) //Our ship collision resistance
|
||||
&& TryComp<ShipShieldEmitterComponent>(ShipShieldedComponent.Source, out var ShipShieldEmitterComponent)
|
||||
)
|
||||
toUsEnergy *= ShipShieldEmitterComponent.CollisionResistanceMultiplier;
|
||||
shieldFactor *= ShipShieldEmitterComponent.CollisionResistanceMultiplier;
|
||||
|
||||
if (TryComp<ShipShieldedComponent>(args.OtherEntity, out var OtherShipShieldedComponent) //Other ship collision resistance
|
||||
&& TryComp<ShipShieldEmitterComponent>(OtherShipShieldedComponent.Source, out var OtherShipShieldEmitterComponent)
|
||||
)
|
||||
toOtherEnergy *= OtherShipShieldEmitterComponent.CollisionResistanceMultiplier;
|
||||
shieldFactor *= OtherShipShieldEmitterComponent.CollisionResistanceMultiplier;
|
||||
toUsEnergy *= shieldFactor;
|
||||
toOtherEnergy *= shieldFactor;
|
||||
// Mono Edit end
|
||||
|
||||
DoGridImpact((args.OurEntity, ourGrid, ourXform, ourBody), args.OurFixture, inelasticVel, ourVelocity, ourTile, ourTiles, toUsEnergy);
|
||||
|
||||
@@ -346,11 +346,11 @@ namespace Content.Server.VendingMachines
|
||||
if (TryComp<MarketModifierComponent>(component.Owner, out var modifier))
|
||||
price *= modifier.Mod;
|
||||
|
||||
var totalPrice = (int) price;
|
||||
var totalPrice = component.RequiresCash ? (int) price : 0;
|
||||
|
||||
// If any price has a vendor price, explicitly use its value - higher OR lower, over others.
|
||||
var priceVend = _pricing.GetEstimatedVendPrice(proto);
|
||||
if (priceVend > 0.0) // if vending price exists, overwrite it.
|
||||
if (priceVend > 0.0 && component.RequiresCash) // if vending price exists, overwrite it.
|
||||
totalPrice = (int) priceVend;
|
||||
|
||||
if (IsAuthorized(uid, sender, component))
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
using System.Linq;
|
||||
using Content.Server._Mono.Grid;
|
||||
using Content.Server.Administration;
|
||||
using Content.Shared._Mono.Grid;
|
||||
using Content.Shared.Administration;
|
||||
using Robust.Shared.Console;
|
||||
using Robust.Shared.Map.Components;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._Mono.Administration.Commands;
|
||||
|
||||
/// <summary>
|
||||
/// Command that allows you to apply grid modifiers to existing grids
|
||||
/// </summary>
|
||||
[AdminCommand(AdminFlags.Admin)]
|
||||
public sealed class AddGridModifier : IConsoleCommand
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entManager = default!;
|
||||
|
||||
public string Command => "addgridmodifier";
|
||||
public string Description => "Applies grid modification to chosen grid.";
|
||||
public string Help => $"Usage: {Command} <gridUid> <modification...>";
|
||||
public void Execute(IConsoleShell shell, string argStr, string[] args)
|
||||
{
|
||||
|
||||
if (args.Length < 2)
|
||||
shell.WriteLine($"Not enough arguments.\n{Help}");
|
||||
|
||||
if (!NetEntity.TryParse(args[0], out var uidNet) || !_entManager.TryGetEntity(uidNet, out var uid))
|
||||
{
|
||||
shell.WriteLine($"Invalid entity id.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_entManager.TryGetComponent(uid, out MapGridComponent? map))
|
||||
{
|
||||
shell.WriteLine($"Entity is not a grid.");
|
||||
return;
|
||||
}
|
||||
|
||||
List<ProtoId<GridModificationPrototype>> modifiers = [];
|
||||
var gridMod = _entManager.System<GridModifierSystem>();
|
||||
|
||||
foreach (var mod in args.Skip(1))
|
||||
{
|
||||
modifiers.Add(mod);
|
||||
}
|
||||
|
||||
gridMod.ModifyGrid(uid.Value, modifiers);
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,6 @@ using Content.Shared.Weapons.Ranged.Components;
|
||||
using Content.Shared.Weapons.Ranged.Systems;
|
||||
using Robust.Shared.Map.Components;
|
||||
using Robust.Shared.Timing;
|
||||
using System;
|
||||
|
||||
namespace Content.Server._Mono.Detection;
|
||||
|
||||
@@ -21,18 +20,22 @@ public sealed class ThermalSignatureSystem : EntitySystem
|
||||
[Dependency] private readonly SharedPowerReceiverSystem _power = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
|
||||
private float _updateInterval = 0.5f;
|
||||
private float _updateAccumulator = 0f;
|
||||
private EntityQuery<MapGridComponent> _gridQuery;
|
||||
private const float UpdateIntervalSeconds = 1f;
|
||||
private static readonly TimeSpan UpdateInterval = TimeSpan.FromSeconds(UpdateIntervalSeconds);
|
||||
private TimeSpan _nextUpdateTime;
|
||||
|
||||
private const float HeatChangeThreshold = 1.02f;
|
||||
|
||||
private EntityQuery<ThermalSignatureComponent> _sigQuery;
|
||||
private EntityQuery<GunComponent> _gunQuery;
|
||||
|
||||
private Dictionary<EntityUid, ThermalSignatureComponent> _gridCompMap = new();
|
||||
private EntityQuery<MapGridComponent> _mapGridQuery;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<GridInitializeEvent>(OnGridInitialized);
|
||||
|
||||
// some of this could also be handled in shared but there's no point since PVS is a thing
|
||||
SubscribeLocalEvent<MachineThermalSignatureComponent, GetThermalSignatureEvent>(OnMachineGetSignature);
|
||||
SubscribeLocalEvent<PassiveThermalSignatureComponent, GetThermalSignatureEvent>(OnPassiveGetSignature);
|
||||
@@ -42,9 +45,14 @@ public sealed class ThermalSignatureSystem : EntitySystem
|
||||
SubscribeLocalEvent<ThrusterComponent, GetThermalSignatureEvent>(OnThrusterGetSignature);
|
||||
SubscribeLocalEvent<FTLDriveComponent, GetThermalSignatureEvent>(OnFTLGetSignature);
|
||||
|
||||
_gridQuery = GetEntityQuery<MapGridComponent>();
|
||||
_sigQuery = GetEntityQuery<ThermalSignatureComponent>();
|
||||
_gunQuery = GetEntityQuery<GunComponent>();
|
||||
_mapGridQuery = GetEntityQuery<MapGridComponent>();
|
||||
}
|
||||
|
||||
private void OnGridInitialized(GridInitializeEvent args)
|
||||
{
|
||||
EnsureComp<ThermalSignatureComponent>(args.EntityUid);
|
||||
}
|
||||
|
||||
private void OnGunShot(Entity<ThermalSignatureComponent> ent, ref GunShotEvent args)
|
||||
@@ -87,48 +95,45 @@ public sealed class ThermalSignatureSystem : EntitySystem
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
_updateAccumulator += frameTime;
|
||||
if (_updateAccumulator < _updateInterval)
|
||||
if (_timing.CurTime < _nextUpdateTime)
|
||||
return;
|
||||
_updateAccumulator -= _updateInterval;
|
||||
|
||||
var interval = _updateInterval;
|
||||
_nextUpdateTime = _timing.CurTime + UpdateInterval;
|
||||
|
||||
_gridCompMap.Clear();
|
||||
|
||||
var gridQuery = EntityQueryEnumerator<MapGridComponent>();
|
||||
while (gridQuery.MoveNext(out var uid, out _))
|
||||
var gridQuery = EntityQueryEnumerator<MapGridComponent, ThermalSignatureComponent>();
|
||||
while (gridQuery.MoveNext(out _, out _, out var gridSigComp))
|
||||
{
|
||||
if (!_sigQuery.TryComp(uid, out var sigComp))
|
||||
sigComp = EnsureComp<ThermalSignatureComponent>(uid);
|
||||
|
||||
sigComp.TotalHeat = 0f;
|
||||
_gridCompMap.Add(uid, sigComp);
|
||||
gridSigComp.TotalHeat = 0f;
|
||||
}
|
||||
|
||||
var query = EntityQueryEnumerator<ThermalSignatureComponent>();
|
||||
while (query.MoveNext(out var uid, out var sigComp))
|
||||
{
|
||||
var ev = new GetThermalSignatureEvent(interval);
|
||||
var ev = new GetThermalSignatureEvent();
|
||||
RaiseLocalEvent(uid, ref ev);
|
||||
sigComp.StoredHeat += ev.Signature * interval;
|
||||
sigComp.StoredHeat *= MathF.Pow(sigComp.HeatDissipation, interval);
|
||||
if (_gridCompMap.ContainsKey(uid))
|
||||
|
||||
sigComp.StoredHeat += ev.Signature * UpdateIntervalSeconds;
|
||||
sigComp.StoredHeat *= MathF.Pow(sigComp.HeatDissipation, UpdateIntervalSeconds);
|
||||
|
||||
if (_mapGridQuery.HasComp(uid))
|
||||
{
|
||||
sigComp.TotalHeat += sigComp.StoredHeat;
|
||||
|
||||
// don't sync it if it didn't change heat much since last time, we don't need to sync 500 cold asteroids every system update
|
||||
if (sigComp.TotalHeat <= sigComp.LastUpdateHeat * HeatChangeThreshold
|
||||
&& sigComp.TotalHeat >= sigComp.LastUpdateHeat / HeatChangeThreshold)
|
||||
continue;
|
||||
|
||||
sigComp.LastUpdateHeat = sigComp.TotalHeat;
|
||||
Dirty(uid, sigComp);
|
||||
}
|
||||
else
|
||||
{
|
||||
var xform = Transform(uid);
|
||||
sigComp.TotalHeat = sigComp.StoredHeat;
|
||||
if (xform.GridUid != null && _gridCompMap.TryGetValue(xform.GridUid.Value, out var gridSig))
|
||||
if (xform.GridUid != null && _sigQuery.TryGetComponent(xform.GridUid.Value, out var gridSig))
|
||||
gridSig.TotalHeat += sigComp.StoredHeat;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var (uid, sigComp) in _gridCompMap)
|
||||
{
|
||||
Dirty(uid, sigComp); // sync to client
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
using Content.Shared._Mono.Grid;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._Mono.Grid;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class GridModifierComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public List<ProtoId<GridModificationPrototype>> Modifications = [];
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
using Content.Shared._Mono.Grid;
|
||||
using Content.Shared._Mono.ShipRepair;
|
||||
using Robust.Shared.Map.Components;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._Mono.Grid;
|
||||
|
||||
/// <summary>
|
||||
/// This handles grid modification on initialization.
|
||||
/// </summary>
|
||||
public sealed class GridModifierSystem : SharedGridModifierSystem
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _protoMan = default!;
|
||||
[Dependency] private readonly IComponentFactory _factory = default!;
|
||||
[Dependency] private readonly SharedShipRepairSystem _repair = default!;
|
||||
|
||||
private List<EntityUid> _snapQueue = [];
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
SubscribeLocalEvent<GridModifierComponent, MapInitEvent>(OnInit);
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
foreach (var uid in _snapQueue)
|
||||
{
|
||||
_repair.GenerateRepairData(uid);
|
||||
}
|
||||
_snapQueue.Clear();
|
||||
}
|
||||
|
||||
private void OnInit(EntityUid uid, GridModifierComponent component, MapInitEvent args)
|
||||
{
|
||||
ModifyGrid(uid, component.Modifications);
|
||||
}
|
||||
|
||||
public void ModifyGrid(EntityUid uid, List<ProtoId<GridModificationPrototype>> modifiers)
|
||||
{
|
||||
if (!HasComp<MapGridComponent>(uid))
|
||||
return;
|
||||
|
||||
foreach (var modProto in modifiers)
|
||||
{
|
||||
if (!_protoMan.TryIndex(modProto, out var mod))
|
||||
continue;
|
||||
|
||||
foreach (var modifier in mod.Modifiers)
|
||||
{
|
||||
modifier.Modify(uid, EntityManager, _factory);
|
||||
}
|
||||
}
|
||||
|
||||
_snapQueue.Add(uid);
|
||||
}
|
||||
}
|
||||
@@ -107,7 +107,8 @@ public sealed partial class RadarBlipSystem : EntitySystem
|
||||
if (blipGrid != null)
|
||||
{
|
||||
var gridXform = Transform(blipGrid.Value);
|
||||
blipVelocity -= _physics.GetLinearVelocity(blipGrid.Value, coord.Position);
|
||||
if (TryComp<PhysicsComponent>(blipGrid.Value, out var gridBody)) // prevent log spam
|
||||
blipVelocity -= _physics.GetLinearVelocity(blipGrid.Value, coord.Position, gridBody);
|
||||
// it's local-frame velocity so rotate it too
|
||||
blipVelocity = (-gridXform.LocalRotation).RotateVec(blipVelocity);
|
||||
// and also offset the rotation
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
namespace Content.Server._Mono.Shuttles.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Modifies how shuttles piloted by this entity drive.
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
public sealed partial class ShuttleBoostingPilotComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public float AngularMultiplier = 1f;
|
||||
|
||||
[DataField]
|
||||
public float AccelerationMultiplier = 1f;
|
||||
|
||||
[DataField]
|
||||
public float MaxVelMultiplier = 1f;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using Content.Server._Mono.Shuttles.Components;
|
||||
using Content.Server.Physics.Controllers;
|
||||
|
||||
namespace Content.Server._Mono.Shuttles.Systems;
|
||||
|
||||
public sealed partial class ShuttleBoostingPilotSystem : EntitySystem
|
||||
{
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<ShuttleBoostingPilotComponent, GetShuttleInputsEvent>(OnGetInputs);
|
||||
}
|
||||
|
||||
private void OnGetInputs(Entity<ShuttleBoostingPilotComponent> ent, ref GetShuttleInputsEvent args)
|
||||
{
|
||||
args.AngularMul *= ent.Comp.AngularMultiplier;
|
||||
args.AccelMul *= ent.Comp.AccelerationMultiplier;
|
||||
args.MaxVelMul *= ent.Comp.MaxVelMultiplier;
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@ public sealed partial class GridSpawnerComponent : Component
|
||||
[DataField]
|
||||
public ProtoId<LocalizedDatasetPrototype>? NameDataset = null;
|
||||
|
||||
[DataField]
|
||||
[DataField, AlwaysPushInheritance]
|
||||
public ComponentRegistry AddComponents = new();
|
||||
|
||||
[DataField]
|
||||
|
||||
@@ -38,7 +38,6 @@ public sealed class VendingMachinePurchaseSystem : EntitySystem
|
||||
var purchaseComponent = AddComp<VendingMachinePurchaseComponent>(purchasedEntity);
|
||||
purchaseComponent.PurchaseGrid = vendingTransform.GridUid.Value;
|
||||
purchaseComponent.OriginalPurchasePrice = purchasePrice;
|
||||
purchaseComponent.VendingMachine = vendingMachine;
|
||||
|
||||
Dirty(purchasedEntity, purchaseComponent);
|
||||
}
|
||||
|
||||
@@ -177,7 +177,7 @@ public sealed class LinkedLifecycleGridSystem : EntitySystem
|
||||
// Deletes a grid, reparenting every humanoid and player character that's on it.
|
||||
public void UnparentPlayersFromGrid(EntityUid grid, bool deleteGrid, bool ignoreLifeStage = false)
|
||||
{
|
||||
if (!ignoreLifeStage && MetaData(grid).EntityLifeStage >= EntityLifeStage.Terminating)
|
||||
if (!ignoreLifeStage && TerminatingOrDeleted(grid))
|
||||
return;
|
||||
|
||||
var reparentEntities = GetEntitiesToReparent(grid);
|
||||
|
||||
@@ -131,6 +131,10 @@ namespace Content.Shared.Movement.Systems
|
||||
|
||||
private void OnMoverGetState(Entity<InputMoverComponent> entity, ref ComponentGetState args)
|
||||
{
|
||||
// Mono
|
||||
if (TerminatingOrDeleted(entity.Comp.RelativeEntity))
|
||||
entity.Comp.RelativeEntity = null;
|
||||
|
||||
args.State = new InputMoverComponentState()
|
||||
{
|
||||
CanMove = entity.Comp.CanMove,
|
||||
|
||||
@@ -247,6 +247,12 @@ namespace Content.Shared.VendingMachines
|
||||
[DataField]
|
||||
public double? LastPurchasePrice;
|
||||
// End Frontier: taxes, cash slot
|
||||
|
||||
/// <summary>
|
||||
/// Mono: Makes all positions in vending machines free if set false
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool RequiresCash = false;
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
|
||||
@@ -82,7 +82,7 @@ public sealed partial class ShipShieldEmitterComponent : Component
|
||||
public SoundSpecifier PowerDownSound = new SoundPathSpecifier("/Audio/Effects/teleport_departure.ogg");
|
||||
|
||||
/// <summary>
|
||||
/// While shield is active, reduces impact energy from grid collisions by this much.
|
||||
/// While shield is active, multiplies impact energy to both grids from grid collisions by this much.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float CollisionResistanceMultiplier = 1.0f;
|
||||
|
||||
@@ -9,6 +9,9 @@ namespace Content.Shared._Mono.Detection;
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
|
||||
public sealed partial class ThermalSignatureComponent : Component
|
||||
{
|
||||
[ViewVariables(VVAccess.ReadOnly)]
|
||||
public float LastUpdateHeat = 0f;
|
||||
|
||||
[DataField]
|
||||
public float StoredHeat = 0f;
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._Mono.Grid;
|
||||
|
||||
/// <summary>
|
||||
/// This prototypes stores all grid modifiers to process them.
|
||||
/// </summary>
|
||||
[Prototype("gridModifier")]
|
||||
public sealed partial class GridModificationPrototype : IPrototype
|
||||
{
|
||||
[IdDataField]
|
||||
public string ID { get; private set; } = default!;
|
||||
|
||||
[DataField]
|
||||
public List<GridModifier> Modifiers = [];
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using JetBrains.Annotations;
|
||||
|
||||
namespace Content.Shared._Mono.Grid;
|
||||
|
||||
[ImplicitDataDefinitionForInheritors]
|
||||
[MeansImplicitUse]
|
||||
public abstract partial class GridModifier
|
||||
{
|
||||
protected string _id => GetType().Name;
|
||||
|
||||
[DataField]
|
||||
public string Comp = "Transform";
|
||||
|
||||
public abstract void Modify(EntityUid gridUid, EntityManager system, IComponentFactory? factory = null);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
using Content.Shared.Whitelist;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Shared._Mono.Grid.Modifiers;
|
||||
|
||||
[UsedImplicitly]
|
||||
public sealed partial class GridModEntityReplace : GridModifier
|
||||
{
|
||||
[DataField(required: true)]
|
||||
public List<ReplaceData> Data = [];
|
||||
|
||||
[Dependency] private readonly IRobustRandom _random = new RobustRandom();
|
||||
|
||||
public override void Modify(EntityUid gridUid, EntityManager system, IComponentFactory? factory = null)
|
||||
{
|
||||
if (factory == null)
|
||||
return;
|
||||
|
||||
var whitelistSystem = system.System<EntityWhitelistSystem>();
|
||||
var gridModSystem = system.System<SharedGridModifierSystem>();
|
||||
|
||||
var comp = factory.GetComponent(Comp);
|
||||
var ents = new HashSet<Entity<IComponent>>();
|
||||
|
||||
gridModSystem.GetGridEntities(gridUid, ents, comp.GetType());
|
||||
|
||||
foreach (var ent in ents)
|
||||
{
|
||||
var meta = system.MetaQuery.GetComponent(ent);
|
||||
var xform = system.TransformQuery.GetComponent(ent);
|
||||
|
||||
if (meta.EntityPrototype == null)
|
||||
continue;
|
||||
|
||||
foreach (var rD in Data)
|
||||
{
|
||||
if (whitelistSystem.IsWhitelistFailOrNull(rD.Whitelist, ent) && meta.EntityPrototype.ID != rD.ToReplace)
|
||||
continue;
|
||||
|
||||
if (!_random.Prob(rD.Chance))
|
||||
continue;
|
||||
|
||||
var pos = xform.Coordinates;
|
||||
|
||||
system.QueueDeleteEntity(ent);
|
||||
system.SpawnAtPosition(rD.ReplaceWith, pos);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[DataDefinition]
|
||||
[Serializable]
|
||||
public sealed partial class ReplaceData
|
||||
{
|
||||
[DataField]
|
||||
public EntityWhitelist? Whitelist;
|
||||
|
||||
[DataField]
|
||||
public EntProtoId? ToReplace;
|
||||
|
||||
[DataField(required: true)]
|
||||
public EntProtoId ReplaceWith;
|
||||
|
||||
[DataField]
|
||||
public float Chance = 0.2f;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
namespace Content.Shared._Mono.Grid;
|
||||
|
||||
/// <summary>
|
||||
/// Methods required from this system to be used in GridModifiers logic.
|
||||
/// </summary>
|
||||
public abstract class SharedGridModifierSystem : EntitySystem
|
||||
{
|
||||
public void GetGridEntities(EntityUid gridUid, HashSet<Entity<IComponent>> entities, Type compType)
|
||||
{
|
||||
foreach (var (uid, comp) in EntityManager.GetAllComponents(compType, true))
|
||||
{
|
||||
|
||||
var xform = Transform(uid);
|
||||
|
||||
if (xform.GridUid != gridUid)
|
||||
continue;
|
||||
|
||||
entities.Add((uid, comp));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,11 +22,4 @@ public sealed partial class VendingMachinePurchaseComponent : Component
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public double OriginalPurchasePrice;
|
||||
|
||||
/// <summary>
|
||||
/// The entity ID of the vending machine this was purchased from.
|
||||
/// Stored for reference and potential future features.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public EntityUid VendingMachine;
|
||||
}
|
||||
|
||||
@@ -137,7 +137,6 @@ public sealed partial class HandPlaceholderSystem : EntitySystem
|
||||
return;
|
||||
|
||||
SetPlaceholder(target, ent);
|
||||
SetEnabled(target, true);
|
||||
|
||||
SetEnabled(ent, false); // allow inserting into the source container
|
||||
|
||||
@@ -153,6 +152,7 @@ public sealed partial class HandPlaceholderSystem : EntitySystem
|
||||
}
|
||||
|
||||
_hands.DoPickup(user, hand, target, hands); // Force pickup - empty hands are not okay
|
||||
SetEnabled(target, true);
|
||||
_interaction.DoContactInteraction(user, target); // allow for forensics and other systems to work (why does hands system not do this???)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19158,3 +19158,141 @@ Entries:
|
||||
id: 2112
|
||||
time: '2026-03-30T16:56:00.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3643
|
||||
- author: Redrover1760
|
||||
changes:
|
||||
- type: Tweak
|
||||
message: Biomass spread rate, health, and slowdown reduced.
|
||||
id: 2113
|
||||
time: '2026-04-01T16:22:03.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3635
|
||||
- author: UnicornOnLSD
|
||||
changes:
|
||||
- type: Add
|
||||
message: Management has sent an ore box to the DIS Rig after customer complaints.
|
||||
id: 2114
|
||||
time: '2026-04-01T22:08:49.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3672
|
||||
- author: Ilya246
|
||||
changes:
|
||||
- type: Add
|
||||
message: >-
|
||||
Added new drone to the far reaches, specially for those who liked the
|
||||
dodging sniper drone.
|
||||
- type: Tweak
|
||||
message: Far reaches 3 now contains slightly more medium drones by proportion.
|
||||
- type: Tweak
|
||||
message: Far reach drones now display their names.
|
||||
id: 2115
|
||||
time: '2026-04-02T17:25:02.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3559
|
||||
- author: Ilya246
|
||||
changes:
|
||||
- type: Add
|
||||
message: Added Far Reaches IV and a new drone to find in it.
|
||||
- type: Tweak
|
||||
message: >-
|
||||
Reduced overall drone spawnrate, but increased proportion of more
|
||||
advanced drones further out.
|
||||
id: 2116
|
||||
time: '2026-04-02T18:52:53.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3677
|
||||
- author: Ilya246
|
||||
changes:
|
||||
- type: Tweak
|
||||
message: Shield ram damage reduction now applies to both colliding grids.
|
||||
id: 2117
|
||||
time: '2026-04-03T09:04:09.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3678
|
||||
- author: EckoAurum
|
||||
changes:
|
||||
- type: Fix
|
||||
message: Fixed Cyborgs obtaining non-whitelisted hands.
|
||||
id: 2118
|
||||
time: '2026-04-03T09:50:59.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3679
|
||||
- author: NazrinNya
|
||||
changes:
|
||||
- type: Tweak
|
||||
message: Most of non-poi vend catalogs are completely free now.
|
||||
id: 2119
|
||||
time: '2026-04-03T11:08:39.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3195
|
||||
- author: NazrinNya
|
||||
changes:
|
||||
- type: Add
|
||||
message: Added Hullmods, currently admin-only.
|
||||
id: 2120
|
||||
time: '2026-04-03T11:08:54.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3285
|
||||
- author: Redrover1760
|
||||
changes:
|
||||
- type: Tweak
|
||||
message: Faction datafarms now produce 200 science per second instead of 35.
|
||||
- type: Tweak
|
||||
message: >-
|
||||
Normal research datafarms now produce 20 science per second instead of
|
||||
10.
|
||||
id: 2121
|
||||
time: '2026-04-03T17:42:36.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3681
|
||||
- author: chuga-git
|
||||
changes:
|
||||
- type: Add
|
||||
message: >-
|
||||
ASM-220 "Trident" 500mm torpedo rack and GPOB-L Light Munitions Bay are
|
||||
now anchorable.
|
||||
- type: Add
|
||||
message: ASM-220 HE and ECM torpedos are now significantly faster.
|
||||
id: 2122
|
||||
time: '2026-04-03T17:45:12.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3673
|
||||
- author: Kiithnaras
|
||||
changes:
|
||||
- type: Tweak
|
||||
message: >-
|
||||
Improvements to capacity and firing mechanics of many common Laser and
|
||||
Energy weapons.
|
||||
id: 2123
|
||||
time: '2026-04-03T17:46:11.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3636
|
||||
- author: EldritchPineapple
|
||||
changes:
|
||||
- type: Tweak
|
||||
message: >-
|
||||
recipes in the med assembler have been changed to make regenerative
|
||||
meshes and medicated sutures easier to craft
|
||||
id: 2124
|
||||
time: '2026-04-03T18:25:56.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3680
|
||||
- author: Redrover1760
|
||||
changes:
|
||||
- type: Tweak
|
||||
message: Increased TSF Mech Blip visibility
|
||||
id: 2125
|
||||
time: '2026-04-03T18:26:26.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3667
|
||||
- author: Ilya246
|
||||
changes:
|
||||
- type: Add
|
||||
message: >-
|
||||
ADCs now get piloting boosts (bonus acceleration, turn, max speed) to
|
||||
give them an advantage over ADMs.
|
||||
id: 2126
|
||||
time: '2026-04-03T18:28:23.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3602
|
||||
- author: Redrover1760
|
||||
changes:
|
||||
- type: Tweak
|
||||
message: >-
|
||||
Civilian/Merc borg HP buffed 150->200, civ/merc borg burn damage
|
||||
modifier reduced from 1.5 to 1.
|
||||
id: 2127
|
||||
time: '2026-04-03T18:29:10.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3578
|
||||
- author: Redrover1760
|
||||
changes:
|
||||
- type: Tweak
|
||||
message: Burn damage is now added to the red damage overlay
|
||||
id: 2128
|
||||
time: '2026-04-04T00:37:54.0000000+00:00'
|
||||
url: https://github.com/Monolith-Station/Monolith/pull/3682
|
||||
|
||||
@@ -5,7 +5,7 @@ meta:
|
||||
forkId: ""
|
||||
forkVersion: ""
|
||||
time: 03/27/2026 19:43:44
|
||||
entityCount: 10732
|
||||
entityCount: 10733
|
||||
maps:
|
||||
- 1
|
||||
grids:
|
||||
@@ -14998,6 +14998,13 @@ entities:
|
||||
- type: Transform
|
||||
pos: -24.5489,50.522743
|
||||
parent: 2
|
||||
- proto: BiomeSourceFarReachesIV
|
||||
entities:
|
||||
- uid: 12345
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -24.5489,50.522743
|
||||
parent: 2
|
||||
- proto: BiomeSourceInnerRing
|
||||
entities:
|
||||
- uid: 999
|
||||
|
||||
@@ -0,0 +1,870 @@
|
||||
meta:
|
||||
format: 7
|
||||
category: Grid
|
||||
engineVersion: 271.2.0
|
||||
forkId: ""
|
||||
forkVersion: ""
|
||||
time: 03/25/2026 17:21:49
|
||||
entityCount: 134
|
||||
maps: []
|
||||
grids:
|
||||
- 1
|
||||
orphans:
|
||||
- 1
|
||||
nullspace: []
|
||||
tilemap:
|
||||
6: Space
|
||||
0: FloorBlueCircuit
|
||||
3: FloorHullReinforced
|
||||
4: Lattice
|
||||
12: LatticeCornerNE
|
||||
7: LatticeCornerNW
|
||||
10: LatticeCornerSE
|
||||
13: LatticeCornerSW
|
||||
1: Plating
|
||||
11: PlatingCornerNE
|
||||
5: PlatingCornerNW
|
||||
8: PlatingCornerSE
|
||||
9: PlatingCornerSW
|
||||
2: PlatingDamaged
|
||||
entities:
|
||||
- proto: ""
|
||||
entities:
|
||||
- uid: 1
|
||||
components:
|
||||
- type: MetaData
|
||||
name: grid
|
||||
- type: Transform
|
||||
parent: invalid
|
||||
- type: MapGrid
|
||||
chunks:
|
||||
0,0:
|
||||
ind: 0,0
|
||||
tiles: AAAAAAAAAAEAAAAAAAACAAAAAAAAAwAAAAAAAAQAAAAAAAADAAAAAAAABQAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAHAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAABAAAAAAAAAwAAAAAAAAEAAAAAAAABAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAIAAAAAAAAAQAAAAAAAAQAAAAAAAABAAAAAAAAAQAAAAAAAAkAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAKAAAAAAAAAQAAAAAAAAkAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAA==
|
||||
version: 7
|
||||
0,-1:
|
||||
ind: 0,-1
|
||||
tiles: BgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAACAAAAAAAABQAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAAAAAAAAAAAIAAAAAAAADAAAAAAAABwAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAA==
|
||||
version: 7
|
||||
-1,0:
|
||||
ind: -1,0
|
||||
tiles: BgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAsAAAAAAAADAAAAAAAABAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAwAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAACAAAAAAAAAEAAAAAAAABAAAAAAAABAAAAAAAAAEAAAAAAAAJAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAIAAAAAAAAAQAAAAAAAA0AAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAA==
|
||||
version: 7
|
||||
-1,-1:
|
||||
ind: -1,-1
|
||||
tiles: BgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAALAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAwAAAAAAAADAAAAAAAAAgAAAAAAAA==
|
||||
version: 7
|
||||
- type: Broadphase
|
||||
- type: Physics
|
||||
bodyStatus: InAir
|
||||
fixedRotation: False
|
||||
bodyType: Dynamic
|
||||
- type: Fixtures
|
||||
fixtures: {}
|
||||
- type: OccluderTree
|
||||
- type: SpreaderGrid
|
||||
spreadQueues:
|
||||
Kudzu: []
|
||||
Smoke: []
|
||||
MetalFoam: []
|
||||
Puddle: []
|
||||
- type: Shuttle
|
||||
dampingModifier: 0.25
|
||||
- type: GridPathfinding
|
||||
- type: Gravity
|
||||
gravityShakeSound: !type:SoundPathSpecifier
|
||||
path: /Audio/Effects/alert.ogg
|
||||
- type: DecalGrid
|
||||
chunkCollection:
|
||||
version: 2
|
||||
nodes: []
|
||||
- type: GridAtmosphere
|
||||
version: 2
|
||||
data:
|
||||
chunkSize: 4
|
||||
- type: GasTileOverlay
|
||||
- type: RadiationGridResistance
|
||||
- proto: APCBasic
|
||||
entities:
|
||||
- uid: 62
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 1.5,0.5
|
||||
parent: 1
|
||||
- proto: CableApcExtension
|
||||
entities:
|
||||
- uid: 73
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 1.5,0.5
|
||||
parent: 1
|
||||
- uid: 74
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 0.5,0.5
|
||||
parent: 1
|
||||
- uid: 75
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.5,0.5
|
||||
parent: 1
|
||||
- uid: 76
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -1.5,0.5
|
||||
parent: 1
|
||||
- uid: 77
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -2.5,0.5
|
||||
parent: 1
|
||||
- uid: 78
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -3.5,0.5
|
||||
parent: 1
|
||||
- uid: 79
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -3.5,1.5
|
||||
parent: 1
|
||||
- uid: 80
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 2.5,0.5
|
||||
parent: 1
|
||||
- uid: 81
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 4.5,0.5
|
||||
parent: 1
|
||||
- uid: 82
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.5,0.5
|
||||
parent: 1
|
||||
- uid: 83
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 4.5,1.5
|
||||
parent: 1
|
||||
- uid: 84
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -4.5,1.5
|
||||
parent: 1
|
||||
- uid: 85
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 5.5,1.5
|
||||
parent: 1
|
||||
- proto: CableHV
|
||||
entities:
|
||||
- uid: 63
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -1.5,0.5
|
||||
parent: 1
|
||||
- uid: 64
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.5,0.5
|
||||
parent: 1
|
||||
- uid: 65
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 0.5,-0.5
|
||||
parent: 1
|
||||
- uid: 66
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 1.5,-0.5
|
||||
parent: 1
|
||||
- uid: 67
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.5,-0.5
|
||||
parent: 1
|
||||
- uid: 68
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 1.5,0.5
|
||||
parent: 1
|
||||
- uid: 69
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 2.5,0.5
|
||||
parent: 1
|
||||
- uid: 91
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.5,0.5
|
||||
parent: 1
|
||||
- uid: 131
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.5,1.5
|
||||
parent: 1
|
||||
- proto: CableMV
|
||||
entities:
|
||||
- uid: 70
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.5,0.5
|
||||
parent: 1
|
||||
- uid: 71
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 1.5,0.5
|
||||
parent: 1
|
||||
- uid: 72
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 0.5,0.5
|
||||
parent: 1
|
||||
- uid: 132
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.5,1.5
|
||||
parent: 1
|
||||
- uid: 133
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.5,0.5
|
||||
parent: 1
|
||||
- uid: 134
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 2.5,0.5
|
||||
parent: 1
|
||||
- proto: ClothingBackpackDroneLootT22
|
||||
entities:
|
||||
- uid: 98
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 0.22172669,0.18755352
|
||||
parent: 1
|
||||
- proto: GeneratorRTG
|
||||
entities:
|
||||
- uid: 56
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.5,-0.5
|
||||
parent: 1
|
||||
- uid: 57
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 0.5,-0.5
|
||||
parent: 1
|
||||
- uid: 58
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 1.5,-0.5
|
||||
parent: 1
|
||||
- uid: 59
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -1.5,0.5
|
||||
parent: 1
|
||||
- uid: 60
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 2.5,0.5
|
||||
parent: 1
|
||||
- proto: Grille
|
||||
entities:
|
||||
- uid: 20
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -6.5,2.5
|
||||
parent: 1
|
||||
- uid: 21
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -3.5,0.5
|
||||
parent: 1
|
||||
- uid: 22
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -3.5,3.5
|
||||
parent: 1
|
||||
- uid: 24
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 4.5,0.5
|
||||
parent: 1
|
||||
- uid: 26
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 4.5,3.5
|
||||
parent: 1
|
||||
- uid: 29
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 7.5,2.5
|
||||
parent: 1
|
||||
- proto: GrilleDiagonal
|
||||
entities:
|
||||
- uid: 30
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -6.5,1.5
|
||||
parent: 1
|
||||
- uid: 31
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 7.5,1.5
|
||||
parent: 1
|
||||
- uid: 32
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 3.5,-0.5
|
||||
parent: 1
|
||||
- uid: 33
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -2.5,-0.5
|
||||
parent: 1
|
||||
- uid: 129
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 1.5,-1.5
|
||||
parent: 1
|
||||
- uid: 130
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -0.5,-1.5
|
||||
parent: 1
|
||||
- proto: PlasmaReinforcedWindowDirectional
|
||||
entities:
|
||||
- uid: 86
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -4.5,0.5
|
||||
parent: 1
|
||||
- uid: 88
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 5.5,1.5
|
||||
parent: 1
|
||||
- uid: 89
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 4.5,1.5
|
||||
parent: 1
|
||||
- uid: 90
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 5.5,2.5
|
||||
parent: 1
|
||||
- uid: 92
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -4.5,1.5
|
||||
parent: 1
|
||||
- uid: 93
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -4.5,2.5
|
||||
parent: 1
|
||||
- uid: 94
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 5.5,0.5
|
||||
parent: 1
|
||||
- uid: 95
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -3.5,1.5
|
||||
parent: 1
|
||||
- uid: 96
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -2.5,0.5
|
||||
parent: 1
|
||||
- uid: 97
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 3.5,0.5
|
||||
parent: 1
|
||||
- proto: RadarEdgeMarkerCenter
|
||||
entities:
|
||||
- uid: 123
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 0.5,2.5
|
||||
parent: 1
|
||||
- uid: 124
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 0.5,1.5
|
||||
parent: 1
|
||||
- proto: RadarEdgeMarkerDiagonal
|
||||
entities:
|
||||
- uid: 101
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 5.5,1.5
|
||||
parent: 1
|
||||
- uid: 115
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -1.5,2.5
|
||||
parent: 1
|
||||
- uid: 116
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 2.5,2.5
|
||||
parent: 1
|
||||
- uid: 119
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -4.5,1.5
|
||||
parent: 1
|
||||
- proto: RadarEdgeMarkerHalftiltLeft
|
||||
entities:
|
||||
- uid: 118
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 5.5,2.5
|
||||
parent: 1
|
||||
- uid: 126
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 5.5,3.5
|
||||
parent: 1
|
||||
- proto: RadarEdgeMarkerHalftiltRight
|
||||
entities:
|
||||
- uid: 8
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -4.5,3.5
|
||||
parent: 1
|
||||
- uid: 36
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -4.5,2.5
|
||||
parent: 1
|
||||
- proto: RadarEdgeMarkerStraight
|
||||
entities:
|
||||
- uid: 99
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.5,0.5
|
||||
parent: 1
|
||||
- uid: 100
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -1.5,0.5
|
||||
parent: 1
|
||||
- uid: 102
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -0.5,0.5
|
||||
parent: 1
|
||||
- uid: 103
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 0.5,0.5
|
||||
parent: 1
|
||||
- uid: 104
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 1.5,0.5
|
||||
parent: 1
|
||||
- uid: 105
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 2.5,0.5
|
||||
parent: 1
|
||||
- uid: 106
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -2.5,0.5
|
||||
parent: 1
|
||||
- uid: 107
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -2.5,0.5
|
||||
parent: 1
|
||||
- uid: 108
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -5.5,3.5
|
||||
parent: 1
|
||||
- uid: 109
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -3.5,1.5
|
||||
parent: 1
|
||||
- uid: 110
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -3.5,1.5
|
||||
parent: 1
|
||||
- uid: 111
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -4.5,0.5
|
||||
parent: 1
|
||||
- uid: 112
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 6.5,3.5
|
||||
parent: 1
|
||||
- uid: 113
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 4.5,1.5
|
||||
parent: 1
|
||||
- uid: 114
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 5.5,0.5
|
||||
parent: 1
|
||||
- uid: 117
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -2.5,1.5
|
||||
parent: 1
|
||||
- uid: 121
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.5,1.5
|
||||
parent: 1
|
||||
- uid: 122
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 3.5,1.5
|
||||
parent: 1
|
||||
- uid: 127
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 3.5,0.5
|
||||
parent: 1
|
||||
- proto: SmallGyroscope
|
||||
entities:
|
||||
- uid: 9
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 0.5,-1.5
|
||||
parent: 1
|
||||
- proto: SmallThruster
|
||||
entities:
|
||||
- uid: 28
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 4.5,2.5
|
||||
parent: 1
|
||||
- uid: 54
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -3.5,2.5
|
||||
parent: 1
|
||||
- proto: SpawnMobAttackerCoreStaticSmart
|
||||
entities:
|
||||
- uid: 10
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 0.5,0.5
|
||||
parent: 1
|
||||
- proto: SubstationBasic
|
||||
entities:
|
||||
- uid: 55
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.5,0.5
|
||||
parent: 1
|
||||
- proto: SubstationWallBasic
|
||||
entities:
|
||||
- uid: 2
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.5,1.5
|
||||
parent: 1
|
||||
- proto: Thruster
|
||||
entities:
|
||||
- uid: 12
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -4.5,0.5
|
||||
parent: 1
|
||||
- uid: 13
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -3.5,1.5
|
||||
parent: 1
|
||||
- uid: 14
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 5.5,0.5
|
||||
parent: 1
|
||||
- uid: 15
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 4.5,1.5
|
||||
parent: 1
|
||||
- uid: 16
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -2.5,0.5
|
||||
parent: 1
|
||||
- uid: 17
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -1.5,-0.5
|
||||
parent: 1
|
||||
- uid: 18
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 3.5,0.5
|
||||
parent: 1
|
||||
- uid: 19
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 2.5,-0.5
|
||||
parent: 1
|
||||
- proto: ThrusterLarge
|
||||
entities:
|
||||
- uid: 5
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 6.5,2.5
|
||||
parent: 1
|
||||
- uid: 120
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -5.5,1.5
|
||||
parent: 1
|
||||
- proto: WallReinforced
|
||||
entities:
|
||||
- uid: 6
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -2.5,2.5
|
||||
parent: 1
|
||||
- uid: 7
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 3.5,2.5
|
||||
parent: 1
|
||||
- uid: 11
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 5.5,3.5
|
||||
parent: 1
|
||||
- uid: 23
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -4.5,4.5
|
||||
parent: 1
|
||||
- uid: 25
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 5.5,4.5
|
||||
parent: 1
|
||||
- uid: 27
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 3.5,3.5
|
||||
parent: 1
|
||||
- uid: 37
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 6.5,3.5
|
||||
parent: 1
|
||||
- uid: 38
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -1.5,2.5
|
||||
parent: 1
|
||||
- uid: 39
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 2.5,2.5
|
||||
parent: 1
|
||||
- uid: 40
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 0.5,2.5
|
||||
parent: 1
|
||||
- uid: 45
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -2.5,1.5
|
||||
parent: 1
|
||||
- uid: 46
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -1.5,1.5
|
||||
parent: 1
|
||||
- uid: 47
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 0.5,1.5
|
||||
parent: 1
|
||||
- uid: 48
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 2.5,1.5
|
||||
parent: 1
|
||||
- uid: 49
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.5,1.5
|
||||
parent: 1
|
||||
- uid: 50
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.5,1.5
|
||||
parent: 1
|
||||
- uid: 51
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 1.5,1.5
|
||||
parent: 1
|
||||
- uid: 61
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 1.5,0.5
|
||||
parent: 1
|
||||
- uid: 87
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -4.5,3.5
|
||||
parent: 1
|
||||
- uid: 125
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -5.5,3.5
|
||||
parent: 1
|
||||
- uid: 128
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -2.5,3.5
|
||||
parent: 1
|
||||
- proto: WallReinforcedDiagonal
|
||||
entities:
|
||||
- uid: 34
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -6.5,3.5
|
||||
parent: 1
|
||||
- uid: 35
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -5.5,4.5
|
||||
parent: 1
|
||||
- uid: 41
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -1.5,3.5
|
||||
parent: 1
|
||||
- uid: 42
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 6.5,4.5
|
||||
parent: 1
|
||||
- uid: 43
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 7.5,3.5
|
||||
parent: 1
|
||||
- uid: 44
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 2.5,3.5
|
||||
parent: 1
|
||||
- uid: 52
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -5.5,0.5
|
||||
parent: 1
|
||||
- uid: 53
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 6.5,0.5
|
||||
parent: 1
|
||||
- proto: WeaponTurretPinhole
|
||||
entities:
|
||||
- uid: 3
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -0.5,2.5
|
||||
parent: 1
|
||||
- uid: 4
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 1.5,2.5
|
||||
parent: 1
|
||||
...
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4,8 +4,8 @@ meta:
|
||||
engineVersion: 271.2.0
|
||||
forkId: ""
|
||||
forkVersion: ""
|
||||
time: 03/29/2026 13:24:50
|
||||
entityCount: 860
|
||||
time: 04/01/2026 21:50:52
|
||||
entityCount: 861
|
||||
maps: []
|
||||
grids:
|
||||
- 1
|
||||
@@ -101,10 +101,10 @@ entities:
|
||||
- type: OccluderTree
|
||||
- type: SpreaderGrid
|
||||
spreadQueues:
|
||||
Kudzu: []
|
||||
Smoke: []
|
||||
Puddle: []
|
||||
MetalFoam: []
|
||||
Smoke: []
|
||||
Kudzu: []
|
||||
- type: Shuttle
|
||||
dampingModifier: 0.25
|
||||
- type: GridPathfinding
|
||||
@@ -598,6 +598,7 @@ entities:
|
||||
- type: Roof
|
||||
data:
|
||||
0,2: 0
|
||||
- type: ThermalSignature
|
||||
- proto: AirAlarm
|
||||
entities:
|
||||
- uid: 10
|
||||
@@ -3404,6 +3405,13 @@ entities:
|
||||
- type: Transform
|
||||
pos: -3.5,-0.5
|
||||
parent: 1
|
||||
- proto: OreBox
|
||||
entities:
|
||||
- uid: 418
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 0.5,21.5
|
||||
parent: 1
|
||||
- proto: OreProcessor
|
||||
entities:
|
||||
- uid: 336
|
||||
|
||||
@@ -47,8 +47,8 @@
|
||||
- type: MobThresholds
|
||||
thresholds:
|
||||
0: Alive
|
||||
150: Critical # Monolith
|
||||
250: Dead # Monolith
|
||||
200: Critical # Monolith
|
||||
300: Dead # Monolith
|
||||
stateAlertDict:
|
||||
Alive: BorgHealth
|
||||
Critical: BorgCrit
|
||||
@@ -191,7 +191,7 @@
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 75
|
||||
damage: 100 # Monolith
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
@@ -200,7 +200,7 @@
|
||||
volume: 5
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 350 # Monolith
|
||||
damage: 400 # Monolith
|
||||
behaviors:
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
soundGunshot:
|
||||
path: /Audio/Weapons/Guns/Gunshots/laser.ogg
|
||||
- type: Battery
|
||||
maxCharge: 1000
|
||||
startingCharge: 1000
|
||||
maxCharge: 1500 # Mono: 1k >> 1.5k
|
||||
startingCharge: 1500 # Mono: 1k >> 1.5k
|
||||
- type: StaticPrice
|
||||
price: 500
|
||||
- type: Cautery # Shitmed
|
||||
@@ -68,7 +68,7 @@
|
||||
path: /Audio/Weapons/Guns/Gunshots/laser.ogg
|
||||
- type: HitscanBatteryAmmoProvider
|
||||
proto: RedLightLaser
|
||||
fireCost: 50
|
||||
fireCost: 20 # Mono: pistol lasers shoot efficiently
|
||||
- type: PowerCellSlot
|
||||
cellSlotId: gun_magazine
|
||||
- type: ItemSlots
|
||||
@@ -107,6 +107,9 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- Sidearm
|
||||
- type: Battery # Mono: Keeps charge for smaller energy weapons
|
||||
maxCharge: 1000
|
||||
startingCharge: 1000
|
||||
- type: Clothing
|
||||
sprite: Objects/Weapons/Guns/Battery/taser.rsi
|
||||
quickEquip: false
|
||||
@@ -146,6 +149,14 @@
|
||||
shader: unshaded
|
||||
- type: Item
|
||||
sprite: Objects/Weapons/Guns/Battery/svalinn.rsi
|
||||
- type: Gun
|
||||
burstCooldown: 0.75
|
||||
burstFireRate: 3
|
||||
shotsPerBurst: 3
|
||||
selectedMode: SemiAuto
|
||||
availableModes:
|
||||
- SemiAuto
|
||||
- Burst
|
||||
- type: MagazineVisuals
|
||||
magState: mag
|
||||
steps: 5
|
||||
@@ -169,7 +180,7 @@
|
||||
shader: unshaded
|
||||
- type: HitscanBatteryAmmoProvider
|
||||
proto: RedMediumLaser
|
||||
fireCost: 83.3
|
||||
fireCost: 33.3 # Mono: 83.3 >> 33.3
|
||||
- type: MagazineVisuals
|
||||
magState: mag
|
||||
steps: 5
|
||||
@@ -201,7 +212,7 @@
|
||||
sprite: Objects/Weapons/Guns/Battery/makeshift.rsi
|
||||
- type: HitscanBatteryAmmoProvider
|
||||
proto: RedLaser
|
||||
fireCost: 62.5
|
||||
fireCost: 35 # Mono: 62.5 >> 35
|
||||
- type: Battery
|
||||
maxCharge: 500
|
||||
startingCharge: 500
|
||||
@@ -262,7 +273,7 @@
|
||||
- SemiAuto
|
||||
- type: HitscanBatteryAmmoProvider
|
||||
proto: RedLaserPractice
|
||||
fireCost: 35 #Mono: 62.5 >> 35
|
||||
fireCost: 30 #Mono: 62.5 >> 30
|
||||
- type: StaticPrice
|
||||
price: 300
|
||||
|
||||
@@ -276,9 +287,14 @@
|
||||
price: 500
|
||||
- type: HitscanBatteryAmmoProvider
|
||||
proto: RedMediumLaser #Mono: RedLaser >> RedMediumLaser
|
||||
fireCost: 35 #Mono: 62.5 >> 35
|
||||
fireCost: 30 #Mono: 62.5 >> 30
|
||||
- type: PirateBountyItem # Mono
|
||||
id: StandardFactionLongarm
|
||||
- type: Gun
|
||||
selectedMode: SemiAuto
|
||||
availableModes:
|
||||
- SemiAuto
|
||||
- FullAuto
|
||||
|
||||
- type: entity
|
||||
name: LWC pulse pistol
|
||||
@@ -495,7 +511,7 @@
|
||||
path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg
|
||||
- type: HitscanBatteryAmmoProvider
|
||||
proto: RedHeavyLaser
|
||||
fireCost: 250
|
||||
fireCost: 160
|
||||
- type: Battery
|
||||
maxCharge: 4000
|
||||
startingCharge: 4000
|
||||
@@ -555,7 +571,7 @@
|
||||
path: /Audio/Weapons/Guns/Gunshots/laser3.ogg
|
||||
- type: HitscanBatteryAmmoProvider
|
||||
proto: XrayLaser
|
||||
fireCost: 200
|
||||
fireCost: 133.3
|
||||
- type: MagazineVisuals
|
||||
magState: mag
|
||||
steps: 5
|
||||
@@ -727,7 +743,7 @@
|
||||
path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg
|
||||
- type: HitscanBatteryAmmoProvider
|
||||
proto: RedMediumLaser
|
||||
fireCost: 100
|
||||
fireCost: 50 # Mono: 100 >> 50
|
||||
- type: BatterySelfRecharger
|
||||
autoRecharge: true
|
||||
autoRechargeRate: 40
|
||||
@@ -774,10 +790,10 @@
|
||||
path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg
|
||||
- type: HitscanBatteryAmmoProvider
|
||||
proto: RedMediumLaser
|
||||
fireCost: 100
|
||||
fireCost: 50 # Mono: 100 >> 50
|
||||
- type: BatterySelfRecharger
|
||||
autoRecharge: true
|
||||
autoRechargeRate: 30
|
||||
autoRechargeRate: 20 # Mono 30 >> 20
|
||||
- type: MagazineVisuals
|
||||
magState: mag
|
||||
steps: 5
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
# mask: # Frontier
|
||||
# - FullTileMask # Frontier
|
||||
layer:
|
||||
- GlassLayer # Frontier: WallLayer<GlassLayer
|
||||
- DiagonalGlassLayer # Mono: WallLayer<DiagonalGlassLayer
|
||||
- type: Construction
|
||||
graph: GrilleDiagonal
|
||||
node: grilleDiagonal
|
||||
@@ -240,7 +240,7 @@
|
||||
# mask: # Frontier
|
||||
# - FullTileMask # Frontier
|
||||
layer:
|
||||
- GlassLayer # Frontier: WallLayer<GlassLayer
|
||||
- DiagonalGlassLayer # Mono: WallLayer<DiagonalGlassLayer
|
||||
- type: Construction
|
||||
graph: GrilleDiagonal
|
||||
node: clockworkGrilleDiagonal
|
||||
|
||||
@@ -352,6 +352,10 @@
|
||||
- type: Construction # Mono
|
||||
graph: Girder
|
||||
node: plastitaniumWall
|
||||
- type: Tag # Mono
|
||||
tags:
|
||||
- Wall
|
||||
- WallT3
|
||||
|
||||
- type: entity
|
||||
parent: [ WallPlastitaniumDiagonalIndestructible, BaseWallTierTwo ] # Mono
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
time: 10
|
||||
group: Medicinal
|
||||
solids:
|
||||
FoodPoppy: 1
|
||||
Brutepack: 1
|
||||
MaterialCloth1: 1
|
||||
reagents:
|
||||
@@ -30,10 +29,9 @@
|
||||
time: 10
|
||||
group: Medicinal
|
||||
solids:
|
||||
FoodAloe: 1
|
||||
Ointment: 1
|
||||
MaterialCloth1: 1
|
||||
reagents:
|
||||
Sigynate: 20
|
||||
Leporazine: 20
|
||||
Dermaline: 20
|
||||
recipeType: MedicalAssembler # Frontier
|
||||
|
||||
@@ -39,6 +39,16 @@
|
||||
# priority: 2500 #should not matter, but big enough to override all the rest
|
||||
|
||||
|
||||
- type: entity
|
||||
id: BiomeSourceFarReachesIV
|
||||
parent: BaseBiomeSource
|
||||
name: far reaches IV biome source
|
||||
components:
|
||||
- type: SpaceBiomeSource
|
||||
id: BiomeFarReachesIV
|
||||
swapDistance: 50000 # fallback
|
||||
priority: 125
|
||||
|
||||
- type: entity
|
||||
id: BiomeSourceFarReachesIII
|
||||
parent: BaseBiomeSource
|
||||
@@ -46,7 +56,7 @@
|
||||
components:
|
||||
- type: SpaceBiomeSource
|
||||
id: BiomeFarReachesIII
|
||||
swapDistance: 28000 #beyond this is fallback
|
||||
swapDistance: 30000
|
||||
priority: 250
|
||||
|
||||
- type: entity
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
|
||||
#far reaches
|
||||
|
||||
- type: ambientSpaceBiome
|
||||
id: BiomeFarReachesIV
|
||||
name: Far Reaches IV
|
||||
description: "Is it really worth it?"
|
||||
|
||||
- type: ambientSpaceBiome
|
||||
id: BiomeFarReachesIII
|
||||
name: Far Reaches III
|
||||
|
||||
@@ -112,6 +112,12 @@
|
||||
|
||||
### BIOME AMBIENT
|
||||
|
||||
# far reaches III
|
||||
- type: ambientMusic
|
||||
id: BiomeFarReachesIV
|
||||
sound:
|
||||
collection: BiomeFarReachesIII
|
||||
|
||||
# far reaches III
|
||||
- type: ambientMusic
|
||||
id: BiomeFarReachesIII
|
||||
|
||||
@@ -26,20 +26,27 @@
|
||||
path: /Audio/_DV/Weapons/Guns/Gunshots/laser.ogg
|
||||
soundEmpty:
|
||||
path: /Audio/_DV/Weapons/Guns/Empty/dry_fire.ogg
|
||||
burstFireRate: 4 # Mono burstfire and modeswitching
|
||||
shotsPerBurst: 3
|
||||
burstCooldown: 0.75
|
||||
selectedMode: SemiAuto
|
||||
availableModes:
|
||||
- SemiAuto
|
||||
- Burst
|
||||
- type: Battery
|
||||
maxCharge: 2250 # Mono 2000->2250
|
||||
startingCharge: 2250 # Mono 2000->2250
|
||||
- type: ProjectileBatteryAmmoProvider
|
||||
proto: BulletDisabler
|
||||
fireCost: 75 # 100->75
|
||||
fireCost: 45 # 100->45
|
||||
- type: EnergyGun
|
||||
fireModes:
|
||||
- proto: BulletDisabler
|
||||
fireCost: 75 # 100->75
|
||||
fireCost: 45 # Mono 100->45
|
||||
name: disable
|
||||
state: disabler
|
||||
- proto: BulletEnergyGunLaser
|
||||
fireCost: 150 # 200->150
|
||||
fireCost: 75 # Mono 200->75
|
||||
name: kill
|
||||
state: lethal
|
||||
- type: MagazineVisuals
|
||||
@@ -86,6 +93,13 @@
|
||||
path: /Audio/_DV/Weapons/Guns/Gunshots/laser.ogg
|
||||
soundEmpty:
|
||||
path: /Audio/_DV/Weapons/Guns/Empty/dry_fire.ogg
|
||||
burstFireRate: 4 # Mono burstfire and modeswitching
|
||||
shotsPerBurst: 3
|
||||
burstCooldown: 0.75
|
||||
selectedMode: SemiAuto
|
||||
availableModes:
|
||||
- SemiAuto
|
||||
- Burst
|
||||
- type: Battery
|
||||
maxCharge: 2250 # Mono 2000->2250
|
||||
startingCharge: 2250 # Mono 2000->2250
|
||||
@@ -94,15 +108,15 @@
|
||||
autoRechargeRate: 25
|
||||
- type: ProjectileBatteryAmmoProvider
|
||||
proto: BulletDisabler
|
||||
fireCost: 75 # 100->75
|
||||
fireCost: 45 # 100->45
|
||||
- type: EnergyGun
|
||||
fireModes:
|
||||
- proto: BulletDisabler
|
||||
fireCost: 75 # 100->75
|
||||
fireCost: 45 # Mono 100->45
|
||||
name: disable
|
||||
state: disabler
|
||||
- proto: BulletEnergyGunLaser
|
||||
fireCost: 150 # 200->150
|
||||
fireCost: 75 # Mono 200->75
|
||||
name: kill
|
||||
state: lethal
|
||||
- type: MagazineVisuals
|
||||
@@ -144,24 +158,31 @@
|
||||
sprite: _DV/Objects/Weapons/Guns/Battery/multiphase_energygun.rsi
|
||||
- type: Gun
|
||||
fireRate: 2.5
|
||||
shotsPerBurst: 3
|
||||
burstCooldown: 0.5
|
||||
burstFireRate: 6
|
||||
selectedMode: SemiAuto
|
||||
availableModes:
|
||||
- SemiAuto
|
||||
- Burst
|
||||
soundGunshot:
|
||||
path: /Audio/_DV/Weapons/Guns/Gunshots/laser.ogg
|
||||
soundEmpty:
|
||||
path: /Audio/_DV/Weapons/Guns/Empty/dry_fire.ogg
|
||||
- type: Battery
|
||||
maxCharge: 3750 # Mono 2000->3750
|
||||
startingCharge: 3750 # Mono 2000->3750
|
||||
maxCharge: 3600 # Mono 2000->3600
|
||||
startingCharge: 3600 # Mono 2000->3600
|
||||
- type: ProjectileBatteryAmmoProvider
|
||||
proto: BulletDisabler
|
||||
fireCost: 75 # Mono 100 -> 75
|
||||
fireCost: 60 # Mono 100 -> 60
|
||||
- type: EnergyGun
|
||||
fireModes:
|
||||
- proto: BulletDisabler
|
||||
fireCost: 75 # Mono 100 -> 75
|
||||
fireCost: 60 # Mono 100 -> 60
|
||||
name: disable
|
||||
state: disabler
|
||||
- proto: BulletEnergyGunLaser
|
||||
fireCost: 150 # Mono 200 -> 150
|
||||
fireCost: 90 # Mono 200 -> 90
|
||||
name: lethal
|
||||
state: lethal
|
||||
# - proto: BulletEnergyGunIon
|
||||
|
||||
@@ -10,12 +10,24 @@
|
||||
Slash: 0.9
|
||||
Piercing: 0.9
|
||||
|
||||
# Chimera
|
||||
|
||||
- type: damageModifierSet
|
||||
id: Chimera
|
||||
coefficients:
|
||||
Heat: 1.4
|
||||
Cold: 0.6
|
||||
Radiation: 1.55
|
||||
Shock: 1.2
|
||||
Blunt: 0.2
|
||||
Slash: 0.6
|
||||
|
||||
# Cyborgs
|
||||
|
||||
- type: damageModifierSet # Mono
|
||||
id: BaseBorgChassis
|
||||
coefficients:
|
||||
Heat: 1.5
|
||||
Heat: 1
|
||||
Cold: 0
|
||||
Shock: 2.5
|
||||
Blunt: 0.6
|
||||
@@ -141,6 +153,7 @@
|
||||
Piercing: 6
|
||||
Heat: 5
|
||||
|
||||
|
||||
# IPC
|
||||
|
||||
- type: damageModifierSet
|
||||
|
||||
@@ -34,21 +34,21 @@
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 40
|
||||
damage: 30
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- type: TrayScanReveal
|
||||
- type: Kudzu
|
||||
growthTickChance: 0.2
|
||||
spreadChance: 0.5
|
||||
spreadChance: 0.35
|
||||
# Heals each time it manages to do a growth tick:
|
||||
damageRecovery:
|
||||
types:
|
||||
Slash: -1.25
|
||||
Heat: -1.25
|
||||
Cold: -1.25
|
||||
Blunt: -1.5
|
||||
Slash: -1
|
||||
Heat: -1
|
||||
Cold: -1
|
||||
Blunt: -1.25
|
||||
- type: Flammable
|
||||
fireSpread: true
|
||||
alwaysCombustible: true
|
||||
@@ -58,8 +58,8 @@
|
||||
Heat: 9
|
||||
- type: AtmosExposed
|
||||
- type: SpeedModifierContacts
|
||||
walkSpeedModifier: 0.25
|
||||
sprintSpeedModifier: 0.25
|
||||
walkSpeedModifier: 0.45
|
||||
sprintSpeedModifier: 0.45
|
||||
ignoreWhitelist:
|
||||
tags:
|
||||
- Chimera
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
- type: damageModifierSet
|
||||
id: Chimera
|
||||
coefficients:
|
||||
Heat: 1.4
|
||||
Cold: 0.6
|
||||
Radiation: 1.55
|
||||
Shock: 1.2
|
||||
Blunt: 0.2
|
||||
Slash: 0.6
|
||||
Piercing: 1
|
||||
@@ -374,6 +374,10 @@
|
||||
- MonoRemnantCoreTitle
|
||||
- MonoRemnantAdjective
|
||||
- MonoRemnantNoun
|
||||
- type: ShuttleBoostingPilot
|
||||
angularMultiplier: 1.5
|
||||
accelerationMultiplier: 1.4
|
||||
maxVelMultiplier: 1.1
|
||||
|
||||
- type: entity
|
||||
id: AiHeldRedacted
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
openState: tsfgygax-open
|
||||
brokenState: tsfgygax-broken
|
||||
- type: RadarBlip # Mono
|
||||
radarColor: "#047ABD"
|
||||
radarColor: "#028EDE"
|
||||
scale: 1.5
|
||||
requireNoGrid: true
|
||||
shape: square
|
||||
@@ -134,7 +134,7 @@
|
||||
openState: tsfdurand-open
|
||||
brokenState: tsfdurand-broken
|
||||
- type: RadarBlip # Mono
|
||||
radarColor: "#047ABD"
|
||||
radarColor: "#028EDE"
|
||||
scale: 1.5
|
||||
requireNoGrid: true
|
||||
shape: square
|
||||
@@ -297,7 +297,7 @@
|
||||
openState: tsfbroadsword-open
|
||||
brokenState: tsfbroadsword-broken
|
||||
- type: RadarBlip
|
||||
radarColor: "#047ABD"
|
||||
radarColor: "#028EDE"
|
||||
scale: 3
|
||||
requireNoGrid: true
|
||||
shape: square
|
||||
@@ -380,7 +380,7 @@
|
||||
openState: tsfbroadsword-open
|
||||
brokenState: tsfbroadsword-broken
|
||||
- type: RadarBlip
|
||||
radarColor: "#047ABD"
|
||||
radarColor: "#028EDE"
|
||||
scale: 3
|
||||
requireNoGrid: true
|
||||
shape: square
|
||||
@@ -525,7 +525,7 @@
|
||||
openState: tsfflail-open
|
||||
brokenState: tsfflail-broken
|
||||
- type: RadarBlip
|
||||
radarColor: "#047ABD"
|
||||
radarColor: "#028EDE"
|
||||
scale: 3
|
||||
requireNoGrid: true
|
||||
shape: square
|
||||
@@ -616,7 +616,7 @@
|
||||
openState: tsfflail-open
|
||||
brokenState: tsfflail-broken
|
||||
- type: RadarBlip
|
||||
radarColor: "#047ABD"
|
||||
radarColor: "#028EDE"
|
||||
scale: 3
|
||||
requireNoGrid: true
|
||||
shape: square
|
||||
@@ -691,7 +691,7 @@
|
||||
openState: tsfflail-open
|
||||
brokenState: tsfflail-broken
|
||||
- type: RadarBlip
|
||||
radarColor: "#047ABD"
|
||||
radarColor: "#028EDE"
|
||||
scale: 3
|
||||
requireNoGrid: true
|
||||
shape: square
|
||||
|
||||
+8
-8
@@ -73,11 +73,11 @@
|
||||
- type: MiningGatheringSoft
|
||||
- type: MiningGatheringHard
|
||||
- type: TargetSeeking
|
||||
acceleration: 20
|
||||
acceleration: 30
|
||||
detectionRange: 750
|
||||
scanArc: 75
|
||||
launchSpeed: 25
|
||||
maxSpeed: 70
|
||||
launchSpeed: 60
|
||||
maxSpeed: 150
|
||||
trackDelay: 3
|
||||
# destructible components below
|
||||
- type: Damageable
|
||||
@@ -179,8 +179,8 @@
|
||||
acceleration: 70
|
||||
detectionRange: 750
|
||||
scanArc: 15
|
||||
launchSpeed: 45
|
||||
maxSpeed: 250
|
||||
launchSpeed: 60
|
||||
maxSpeed: 275
|
||||
trackDelay: 1
|
||||
- type: Explosive
|
||||
explosionType: Default
|
||||
@@ -303,11 +303,11 @@
|
||||
- type: MiningGatheringSoft
|
||||
- type: MiningGatheringHard
|
||||
- type: TargetSeeking
|
||||
acceleration: 20
|
||||
acceleration: 25
|
||||
detectionRange: 750
|
||||
scanArc: 45
|
||||
launchSpeed: 25
|
||||
maxSpeed: 70
|
||||
launchSpeed: 50
|
||||
maxSpeed: 140
|
||||
trackDelay: 3
|
||||
- type: EmpOnTrigger
|
||||
range: 7
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
- type: entity
|
||||
id: WeaponTurretLightMunitionsBay
|
||||
name: GPOB-L Light Munitions Bay
|
||||
parent: BallisticArtilleryUnanchorableCartridge
|
||||
parent: BallisticArtilleryCartridge
|
||||
description: A relatively small, armored munitions bay capable of holding up to two lightweight ordinance packages. Typically found on light spacecraft, particularly bombers, and provide a limited use method of damaging targets far above the user's weight class.
|
||||
components:
|
||||
- type: StaticPrice
|
||||
@@ -16,7 +16,7 @@
|
||||
range: 700
|
||||
- type: GunSignalControl
|
||||
- type: Gun
|
||||
projectileSpeed: 10
|
||||
projectileSpeed: 50
|
||||
fireRate: 0.8
|
||||
recoil: 5
|
||||
shootThermalSignature: 8000000 # ~2.8km
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
- type: entity
|
||||
id: WeaponTurretASM220
|
||||
name: ASM-220 "Trident" 500mm torpedo rack
|
||||
parent: BallisticArtilleryUnanchorableCartridge
|
||||
parent: BallisticArtilleryCartridge
|
||||
description: A heavy built-in torpedo rack for cruisers which relies on manual loading, usually done at harbor. Despite this, it has the largest missiles in the sector.
|
||||
components:
|
||||
- type: StaticPrice
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
guides:
|
||||
- Science
|
||||
- type: ResearchPointSource
|
||||
pointsPerSecond: 10
|
||||
pointsPerSecond: 20
|
||||
active: true
|
||||
|
||||
- type: entity
|
||||
@@ -107,7 +107,7 @@
|
||||
components:
|
||||
- type: ResearchClient
|
||||
- type: ResearchPointSource
|
||||
pointsPerSecond: 35
|
||||
pointsPerSecond: 200
|
||||
active: true
|
||||
- type: ApcPowerReceiver
|
||||
powerLoad: 10000
|
||||
@@ -141,6 +141,8 @@
|
||||
color: "#b3aa79"
|
||||
- state: stripe2
|
||||
color: "#009360"
|
||||
- type: ApcPowerReceiver
|
||||
powerLoad: 40000
|
||||
- type: PointLight
|
||||
radius: 1.1
|
||||
energy: 1.1
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: WeaponryWorksVendPOIMercInventory
|
||||
requiresCash: true
|
||||
- type: AccessReader
|
||||
access: [["Mercenary"], ["Security"]]
|
||||
|
||||
@@ -86,6 +87,7 @@
|
||||
# denyState: deny-unshaded
|
||||
ejectDelay: 1.9
|
||||
initialStockQuality: 1
|
||||
requiresCash: true
|
||||
- type: MarketModifier
|
||||
mod: 10
|
||||
- type: Advertise
|
||||
@@ -127,6 +129,7 @@
|
||||
ejectDelay: 1.9
|
||||
initialStockQuality: 0.35
|
||||
|
||||
|
||||
- type: entity
|
||||
parent: [VendingMachineAstroVend, BaseStructureDisableAnchoring]
|
||||
id: VendingMachinePMCclothingsPOI
|
||||
|
||||
@@ -43,6 +43,10 @@
|
||||
- type: ShipRepairable
|
||||
repairTime: 2
|
||||
repairCost: 3
|
||||
- type: Tag
|
||||
tags:
|
||||
- Wall
|
||||
- WallT1
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
@@ -87,6 +91,10 @@
|
||||
- type: ShipRepairable
|
||||
repairTime: 3
|
||||
repairCost: 6
|
||||
- type: Tag
|
||||
tags:
|
||||
- Wall
|
||||
- WallT2
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
@@ -131,6 +139,10 @@
|
||||
- type: ShipRepairable
|
||||
repairTime: 5
|
||||
repairCost: 8
|
||||
- type: Tag
|
||||
tags:
|
||||
- Wall
|
||||
- WallT3
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
@@ -175,6 +187,10 @@
|
||||
- type: ShipRepairable
|
||||
repairTime: 10
|
||||
repairCost: 12
|
||||
- type: Tag
|
||||
tags:
|
||||
- Wall
|
||||
- WallT4
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
|
||||
@@ -10,6 +10,18 @@
|
||||
outputMultiplier: 5000.0 # We scale density up significantly for more human-friendly numbers.
|
||||
minimum: 0.25
|
||||
|
||||
- type: noiseChannel
|
||||
id: DensityVeryRare
|
||||
noiseType: Perlin
|
||||
fractalLacunarityByPi: 0.666666666
|
||||
remapTo0Through1: true
|
||||
clippingRanges:
|
||||
- 0.4, 0.6
|
||||
clippedValue: 30
|
||||
inputMultiplier: 3
|
||||
outputMultiplier: 7500.0
|
||||
minimum: 0.25
|
||||
|
||||
- type: noiseChannel
|
||||
id: WreckRare
|
||||
noiseType: Perlin
|
||||
@@ -18,8 +30,8 @@
|
||||
- 0.0, 0.4
|
||||
clippedValue: 0
|
||||
remapTo0Through1: true
|
||||
inputMultiplier: 16 # Makes wreck concentration very low noise at scale.
|
||||
outputMultiplier: 0.35
|
||||
outputMultiplier: 0
|
||||
minimum: 0.2 # constant probability
|
||||
|
||||
# region Far Ring
|
||||
- type: spaceBiome
|
||||
@@ -175,14 +187,14 @@
|
||||
prob: 0.3
|
||||
orGroup: wreck
|
||||
- id: MonoDroneSpawnerT2Inner
|
||||
prob: 2.5
|
||||
prob: 1.5
|
||||
orGroup: wreck
|
||||
|
||||
- type: spaceBiome
|
||||
id: MonoWorldgenVeryFarT2Middle
|
||||
parent: MonoWorldgenVeryFarT1
|
||||
priority: -3
|
||||
distanceRange: null
|
||||
distanceRange: 25000, 30000
|
||||
chunkComponents:
|
||||
- type: NoiseDrivenDebrisSelector
|
||||
noiseChannel: WreckRare
|
||||
@@ -203,5 +215,35 @@
|
||||
prob: 0.3
|
||||
orGroup: wreck
|
||||
- id: MonoDroneSpawnerT2Middle
|
||||
prob: 2.5
|
||||
prob: 1.5
|
||||
orGroup: wreck
|
||||
|
||||
|
||||
- type: spaceBiome
|
||||
id: MonoWorldgenVeryFarT2Far
|
||||
parent: MonoWorldgenVeryFarT1
|
||||
priority: -4
|
||||
distanceRange: null
|
||||
chunkComponents:
|
||||
- type: DebrisFeaturePlacerController
|
||||
densityNoiseChannel: DensityVeryRare
|
||||
- type: NoiseDrivenDebrisSelector
|
||||
debrisTable:
|
||||
- id: NFWreckDebrisSmall
|
||||
prob: 0.5
|
||||
orGroup: wreck
|
||||
- id: NFWreckDebrisMedium
|
||||
prob: 1
|
||||
orGroup: wreck
|
||||
- id: NFWreckDebrisLarge
|
||||
prob: 0.5
|
||||
orGroup: wreck
|
||||
- id: NFWreckDebrisBrassLarge
|
||||
prob: 0.3
|
||||
orGroup: wreck
|
||||
- id: NFWreckDebrisBrassExtraLarge
|
||||
prob: 0.9
|
||||
orGroup: wreck
|
||||
- id: MonoDroneSpawnerT2Far
|
||||
prob: 1
|
||||
orGroup: wreck
|
||||
|
||||
@@ -1,3 +1,34 @@
|
||||
#region Random Spawners
|
||||
|
||||
- type: entity
|
||||
id: SpawnDroneBase
|
||||
parent: MarkerBase
|
||||
abstract: true
|
||||
components:
|
||||
- type: GridSpawner
|
||||
addComponents:
|
||||
- type: IFF
|
||||
flags: AlwaysShowColor
|
||||
color: "#9a2020"
|
||||
- type: GridCleanupGrid
|
||||
cleanupAcceleration: 3
|
||||
ignorePowered: true
|
||||
ignoreIFF: true
|
||||
ignorePrice: true
|
||||
distanceOverride: 1024 # so it doesn't despawn while in view
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- DroneTitle
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
|
||||
- type: entity
|
||||
id: MonoDroneSpawnerT1
|
||||
parent: MarkerBase
|
||||
@@ -31,53 +62,77 @@
|
||||
table: !type:NestedSelector
|
||||
tableId: DroneSpawnTableT2Middle
|
||||
|
||||
- type: entity
|
||||
id: MonoDroneSpawnerT2Far
|
||||
parent: MarkerBase
|
||||
categories: [Spawner]
|
||||
components:
|
||||
- type: EntityTableSpawner
|
||||
table: !type:NestedSelector
|
||||
tableId: DroneSpawnTableT2Far
|
||||
|
||||
#endregion
|
||||
|
||||
#region Tables
|
||||
|
||||
- type: entityTable
|
||||
id: DroneTableT21
|
||||
table: !type:GroupSelector
|
||||
children:
|
||||
- id: SpawnDroneWasp
|
||||
weight: 10
|
||||
- id: SpawnDroneCrown
|
||||
weight: 10
|
||||
- id: SpawnDroneGust
|
||||
weight: 10
|
||||
- id: SpawnDronePiercer
|
||||
weight: 10
|
||||
|
||||
- type: entityTable
|
||||
id: DroneTableT22
|
||||
table: !type:GroupSelector
|
||||
children:
|
||||
- id: SpawnDroneMedusa
|
||||
weight: 10
|
||||
- id: SpawnDroneAssembly
|
||||
weight: 10
|
||||
- id: SpawnDroneBracket
|
||||
weight: 10
|
||||
|
||||
- type: entityTable
|
||||
id: DroneTableT23
|
||||
table: !type:GroupSelector
|
||||
children:
|
||||
- id: SpawnDroneMauler
|
||||
weight: 10
|
||||
|
||||
- type: entityTable
|
||||
id: DroneSpawnTableT2Middle
|
||||
table: !type:GroupSelector
|
||||
children:
|
||||
# T2 small
|
||||
- id: SpawnDroneWasp
|
||||
weight: 20
|
||||
- id: SpawnDroneCrown
|
||||
weight: 20
|
||||
- id: SpawnDroneGust
|
||||
weight: 20
|
||||
- id: SpawnDronePiercer
|
||||
- !type:NestedSelector
|
||||
tableId: DroneTableT21
|
||||
weight: 20
|
||||
# T2 medium
|
||||
- id: SpawnDroneMedusa
|
||||
weight: 10
|
||||
- id: SpawnDroneAssembly
|
||||
- !type:NestedSelector
|
||||
tableId: DroneTableT22
|
||||
weight: 10
|
||||
|
||||
- type: entity
|
||||
id: SpawnDroneBase
|
||||
parent: MarkerBase
|
||||
abstract: true
|
||||
components:
|
||||
- type: GridSpawner
|
||||
addComponents:
|
||||
- type: IFF
|
||||
flags: AlwaysShowColor
|
||||
color: "#9a2020"
|
||||
- type: GridCleanupGrid
|
||||
cleanupAcceleration: 3
|
||||
ignorePowered: true
|
||||
ignoreIFF: true
|
||||
ignorePrice: true
|
||||
distanceOverride: 1024 # so it doesn't despawn while in view
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- DroneTitle
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
- type: entityTable
|
||||
id: DroneSpawnTableT2Far
|
||||
table: !type:GroupSelector
|
||||
children:
|
||||
# T2 medium
|
||||
- !type:NestedSelector
|
||||
tableId: DroneTableT22
|
||||
weight: 20
|
||||
# T2 large
|
||||
- !type:NestedSelector
|
||||
tableId: DroneTableT23
|
||||
weight: 10
|
||||
|
||||
#endregion
|
||||
|
||||
#region Debug
|
||||
|
||||
@@ -87,6 +142,19 @@
|
||||
components:
|
||||
- type: GridSpawner
|
||||
path: /Maps/_Mono/Shuttles/World/needle.yml
|
||||
addComponents:
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- "NEEDLE"
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
|
||||
- type: entity
|
||||
id: SpawnDroneWedge
|
||||
@@ -94,16 +162,22 @@
|
||||
components:
|
||||
- type: GridSpawner
|
||||
path: /Maps/_Mono/Shuttles/World/wedge.yml
|
||||
addComponents:
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- "WEDGE"
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
|
||||
#region T1
|
||||
|
||||
- type: entity
|
||||
id: SpawnDroneGust
|
||||
parent: SpawnDroneBase
|
||||
components:
|
||||
- type: GridSpawner
|
||||
path: /Maps/_Mono/Shuttles/World/gust.yml
|
||||
|
||||
- type: entity
|
||||
id: SpawnDroneBasicSmall
|
||||
parent: SpawnDroneBase
|
||||
@@ -124,6 +198,19 @@
|
||||
components:
|
||||
- type: GridSpawner
|
||||
path: /Maps/_Mono/Shuttles/World/mpulsar.yml
|
||||
addComponents:
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- "PULSAR"
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
|
||||
- type: entity
|
||||
id: SpawnDroneLance
|
||||
@@ -131,15 +218,61 @@
|
||||
components:
|
||||
- type: GridSpawner
|
||||
path: /Maps/_Mono/Shuttles/World/lance.yml
|
||||
addComponents:
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- "LANCE"
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
|
||||
#region T2-1
|
||||
|
||||
- type: entity
|
||||
id: SpawnDroneGust
|
||||
parent: SpawnDroneBase
|
||||
components:
|
||||
- type: GridSpawner
|
||||
path: /Maps/_Mono/Shuttles/World/gust.yml
|
||||
addComponents:
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- "GUST"
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
|
||||
- type: entity
|
||||
id: SpawnDroneWasp
|
||||
parent: SpawnDroneBase
|
||||
components:
|
||||
- type: GridSpawner
|
||||
path: /Maps/_Mono/Shuttles/World/wasp.yml
|
||||
addComponents:
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- "WASP"
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
|
||||
- type: entity
|
||||
id: SpawnDroneCrown
|
||||
@@ -147,6 +280,19 @@
|
||||
components:
|
||||
- type: GridSpawner
|
||||
path: /Maps/_Mono/Shuttles/World/crown.yml
|
||||
addComponents:
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- "CROWN"
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
|
||||
- type: entity
|
||||
id: SpawnDronePiercer
|
||||
@@ -154,6 +300,19 @@
|
||||
components:
|
||||
- type: GridSpawner
|
||||
path: /Maps/_Mono/Shuttles/World/piercer.yml
|
||||
addComponents:
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- "PIERCER"
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
|
||||
#region T2-2
|
||||
|
||||
@@ -163,6 +322,19 @@
|
||||
components:
|
||||
- type: GridSpawner
|
||||
path: /Maps/_Mono/Shuttles/World/medusa.yml
|
||||
addComponents:
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- "MEDUSA"
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
|
||||
- type: entity
|
||||
id: SpawnDroneAssembly
|
||||
@@ -170,3 +342,59 @@
|
||||
components:
|
||||
- type: GridSpawner
|
||||
path: /Maps/_Mono/Shuttles/World/assembly.yml
|
||||
addComponents:
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- "ASSEMBLY"
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
|
||||
- type: entity
|
||||
id: SpawnDroneBracket
|
||||
parent: SpawnDroneBase
|
||||
components:
|
||||
- type: GridSpawner
|
||||
path: /Maps/_Mono/Shuttles/World/bracket.yml
|
||||
addComponents:
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- "BRACKET"
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
|
||||
#region T2-3
|
||||
|
||||
- type: entity
|
||||
id: SpawnDroneMauler
|
||||
parent: SpawnDroneBase
|
||||
components:
|
||||
- type: GridSpawner
|
||||
path: /Maps/_Mono/Shuttles/World/mauler.yml
|
||||
addComponents:
|
||||
- type: RandomMetadata
|
||||
nameSeparator: ""
|
||||
nameSegments:
|
||||
- "MAULER"
|
||||
- " 0x"
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
- DroneHex
|
||||
nameGrid: false
|
||||
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
- type: gridModifier
|
||||
id: DegradedHull
|
||||
modifiers:
|
||||
- !type:GridModEntityReplace
|
||||
comp: Occluder
|
||||
data:
|
||||
- chance: 0.25
|
||||
whitelist:
|
||||
tags:
|
||||
- WallT2
|
||||
replaceWith: WallSolid
|
||||
- chance: 0.6
|
||||
whitelist:
|
||||
tags:
|
||||
- WallT3
|
||||
replaceWith: WallReinforced
|
||||
- chance: 1
|
||||
whitelist:
|
||||
tags:
|
||||
- WallT4
|
||||
replaceWith: WallPlastitanium
|
||||
|
||||
- type: gridModifier
|
||||
id: DestroyedHull
|
||||
modifiers:
|
||||
- !type:GridModEntityReplace
|
||||
comp: Occluder
|
||||
data:
|
||||
- chance: 0.7
|
||||
toReplace: WallSolid
|
||||
replaceWith: Girder
|
||||
- chance: 0.25
|
||||
whitelist:
|
||||
tags:
|
||||
- WallT2
|
||||
replaceWith: ReinforcedGirder
|
||||
- chance: 0.4
|
||||
whitelist:
|
||||
tags:
|
||||
- WallT2
|
||||
replaceWith: WallSolid
|
||||
- chance: 0.8
|
||||
whitelist:
|
||||
tags:
|
||||
- WallT3
|
||||
replaceWith: WallReinforced
|
||||
- chance: 1
|
||||
whitelist:
|
||||
tags:
|
||||
- WallT4
|
||||
replaceWith: WallReinforced
|
||||
|
||||
- type: gridModifier
|
||||
id: ReinforcedHull
|
||||
modifiers:
|
||||
- !type:GridModEntityReplace
|
||||
comp: Occluder
|
||||
data:
|
||||
- chance: 0.8
|
||||
toReplace: WallSolid
|
||||
replaceWith: WallReinforced
|
||||
- chance: 0.45
|
||||
whitelist:
|
||||
tags:
|
||||
- WallT2
|
||||
replaceWith: WallPlastitanium
|
||||
- chance: 0.25
|
||||
whitelist:
|
||||
tags:
|
||||
- WallT3
|
||||
replaceWith: WallPlastitaniumCapital
|
||||
|
||||
- type: gridModifier
|
||||
id: DamagedThrusters
|
||||
modifiers:
|
||||
- !type:GridModEntityReplace
|
||||
comp: Thruster
|
||||
data:
|
||||
- chance: 0.25
|
||||
whitelist:
|
||||
components:
|
||||
- Thruster
|
||||
replaceWith: MachineFrameDestroyed
|
||||
|
||||
@@ -491,6 +491,19 @@
|
||||
- type: Tag
|
||||
id: Dragoon
|
||||
|
||||
# Walls
|
||||
|
||||
- type: Tag
|
||||
id: WallT1
|
||||
|
||||
- type: Tag
|
||||
id: WallT2
|
||||
|
||||
- type: Tag
|
||||
id: WallT3
|
||||
|
||||
- type: Tag
|
||||
id: WallT4
|
||||
# Bomb Collars
|
||||
|
||||
- type: Tag
|
||||
|
||||
@@ -91,14 +91,18 @@
|
||||
startingCharge: 4000
|
||||
- type: HitscanBatteryAmmoProvider
|
||||
proto: RedLaser
|
||||
fireCost: 80
|
||||
fireCost: 32
|
||||
- type: Gun
|
||||
selectedMode: FullAuto
|
||||
availableModes:
|
||||
- Burst
|
||||
- FullAuto
|
||||
fireRate: 8
|
||||
minAngle: 1
|
||||
maxAngle: 10
|
||||
burstFireRate: 12
|
||||
shotsPerBurst: 5
|
||||
burstCooldown: 0.5
|
||||
soundGunshot:
|
||||
path: /Audio/_DV/Weapons/Guns/Gunshots/laser.ogg
|
||||
soundEmpty:
|
||||
@@ -135,6 +139,14 @@
|
||||
- state: inhand-right
|
||||
- state: inhand-right-unshaded
|
||||
shader: unshaded
|
||||
- type: Gun
|
||||
burstCooldown: 0.75
|
||||
burstFireRate: 3
|
||||
shotsPerBurst: 3
|
||||
selectedMode: SemiAuto
|
||||
availableModes:
|
||||
- SemiAuto
|
||||
- Burst
|
||||
- type: StaticPrice # Mono
|
||||
price: 150
|
||||
|
||||
|
||||
@@ -163,6 +163,17 @@
|
||||
- WeaponLaserCarbine
|
||||
categories: [ HideSpawnMenu ]
|
||||
id: WeaponLaserCarbineExpedition
|
||||
components:
|
||||
- type: Gun
|
||||
burstCooldown: 0.5
|
||||
burstFireRate: 3
|
||||
shotsPerBurst: 3
|
||||
selectedMode: SemiAuto
|
||||
availableModes:
|
||||
- SemiAuto
|
||||
- Burst
|
||||
- FullAuto
|
||||
|
||||
|
||||
- type: entity
|
||||
parent:
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
offState: off
|
||||
brokenState: broken
|
||||
normalState: normal-unshaded
|
||||
requiresCash: true
|
||||
# ejectState: eject-unshaded No sprite, see chefvend/dinnerware/BODA/etc for expamples
|
||||
- type: Advertise
|
||||
pack: CuddlyCritterAds
|
||||
@@ -40,6 +41,7 @@
|
||||
offState: off
|
||||
brokenState: broken
|
||||
normalState: normal-unshaded
|
||||
requiresCash: true
|
||||
# ejectState: eject-unshaded No sprite, see chefvend/dinnerware/BODA/etc for expamples
|
||||
- type: Advertise
|
||||
pack: AstroVendAds
|
||||
@@ -79,6 +81,7 @@
|
||||
normalState: normal-unshaded
|
||||
ejectState: eject-unshaded
|
||||
denyState: deny-unshaded
|
||||
requiresCash: true
|
||||
# - type: Advertise
|
||||
# pack: FlatpackVendAds
|
||||
- type: Sprite
|
||||
@@ -190,6 +193,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: BountyVendPOIInventory
|
||||
requiresCash: true
|
||||
|
||||
- type: entity
|
||||
id: VendingMachineArcadia
|
||||
@@ -204,6 +208,7 @@
|
||||
offState: off
|
||||
brokenState: broken
|
||||
normalState: normal-unshaded
|
||||
requiresCash: true
|
||||
# ejectState: eject-unshaded No sprite, see chefvend/dinnerware/BODA/etc for expamples
|
||||
# denyState: deny-unshaded
|
||||
ejectDelay: 3
|
||||
@@ -264,6 +269,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: LessLethalVendPOIInventory
|
||||
requiresCash: true
|
||||
|
||||
- type: entity
|
||||
parent: VendingMachine
|
||||
@@ -281,6 +287,7 @@
|
||||
ejectState: eject-unshaded
|
||||
denyState: deny-unshaded
|
||||
ejectDelay: 3
|
||||
requiresCash: true
|
||||
- type: Advertise
|
||||
pack: LessLethalVendAds
|
||||
- type: Sprite
|
||||
@@ -311,6 +318,7 @@
|
||||
normalState: normal-unshaded
|
||||
ejectState: eject-unshaded
|
||||
denyState: deny-unshaded
|
||||
requiresCash: true
|
||||
# - type: Advertise
|
||||
# pack: AutoTuneVendAds
|
||||
- type: Sprite
|
||||
@@ -360,6 +368,7 @@
|
||||
normalState: normal-unshaded
|
||||
ejectState: eject-unshaded
|
||||
denyState: deny-unshaded
|
||||
requiresCash: true
|
||||
- type: Advertise
|
||||
pack: MegaSeedAds
|
||||
- type: Sprite
|
||||
@@ -390,6 +399,7 @@
|
||||
offState: off
|
||||
brokenState: broken
|
||||
normalState: normal-unshaded
|
||||
requiresCash: true
|
||||
- type: Advertise
|
||||
pack: NfsdDrobeAds
|
||||
- type: Sprite
|
||||
@@ -440,6 +450,7 @@
|
||||
offState: off
|
||||
brokenState: broken
|
||||
normalState: normal-unshaded
|
||||
requiresCash: true
|
||||
- type: Advertise
|
||||
pack: NfsdDrobeAds
|
||||
- type: Sprite
|
||||
@@ -462,6 +473,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: NFPTechInventory
|
||||
requiresCash: true
|
||||
- type: AccessReader
|
||||
access: [["HeadOfPersonnel"]]
|
||||
- type: MarketModifier
|
||||
@@ -562,6 +574,7 @@
|
||||
ejectState: eject-unshaded
|
||||
denyState: deny-unshaded
|
||||
ejectDelay: 2.1
|
||||
requiresCash: true
|
||||
- type: Advertise
|
||||
pack: FuelVendAds
|
||||
- type: SpeakOnUIClosed
|
||||
@@ -586,6 +599,7 @@
|
||||
offState: off
|
||||
brokenState: broken
|
||||
normalState: normal-unshaded
|
||||
requiresCash: true
|
||||
# ejectState: eject-unshaded No sprite, see chefvend/dinnerware/BODA/etc for expamples
|
||||
- type: Advertise
|
||||
pack: CiviMedAds
|
||||
@@ -634,6 +648,7 @@
|
||||
offState: off
|
||||
brokenState: broken
|
||||
normalState: normal-unshaded
|
||||
requiresCash: true
|
||||
# ejectState: eject-unshaded No sprite, see chefvend/dinnerware/BODA/etc for expamples
|
||||
- type: Advertise
|
||||
pack: ValetDrobeAds
|
||||
@@ -667,6 +682,7 @@
|
||||
offState: off
|
||||
brokenState: broken
|
||||
normalState: normal-unshaded
|
||||
requiresCash: true
|
||||
# ejectState: eject-unshaded No sprite, see chefvend/dinnerware/BODA/etc for expamples
|
||||
- type: Advertise
|
||||
pack: MailVendAds
|
||||
@@ -696,6 +712,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: WeaponryWorksVendPOIInventory
|
||||
requiresCash: true
|
||||
|
||||
- type: entity
|
||||
parent: [VendingMachineEngivend, BaseStructureDisableAnchoring]
|
||||
@@ -704,6 +721,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: EngiVendPOIInventory
|
||||
requiresCash: true
|
||||
|
||||
- type: entity
|
||||
parent: [VendingMachineVendomat, BaseStructureDisableAnchoring]
|
||||
@@ -712,6 +730,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: VendomatPOIInventory
|
||||
requiresCash: true
|
||||
|
||||
- type: entity
|
||||
parent: [VendingMachineYouTool, BaseStructureDisableAnchoring]
|
||||
@@ -720,6 +739,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: YouToolPOIInventory
|
||||
requiresCash: true
|
||||
|
||||
- type: entity
|
||||
parent: [VendingMachineSalvage, BaseStructureDisableAnchoring]
|
||||
@@ -728,6 +748,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: NFSalvageEquipmentPOIInventory
|
||||
requiresCash: true
|
||||
|
||||
- type: entity
|
||||
parent: [VendingMachineMediDrobe, BaseStructureDisableAnchoring]
|
||||
@@ -736,6 +757,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: MediDrobeInventory
|
||||
requiresCash: true
|
||||
|
||||
- type: entity
|
||||
parent: [VendingMachinePottedPlantVend, BaseStructureDisableAnchoring]
|
||||
@@ -744,6 +766,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: PottedPlantVendInventory
|
||||
requiresCash: true
|
||||
|
||||
- type: entity
|
||||
parent: [VendingMachineGames, BaseStructureDisableAnchoring]
|
||||
@@ -752,6 +775,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: GoodCleanFunInventory
|
||||
requiresCash: true
|
||||
|
||||
- type: entity
|
||||
parent: [VendingMachineCigs, BaseStructureDisableAnchoring]
|
||||
@@ -760,6 +784,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: CigaretteMachineInventory
|
||||
requiresCash: true
|
||||
|
||||
- type: entity
|
||||
parent: [VendingMachineBooze, BaseStructureDisableAnchoring]
|
||||
@@ -768,6 +793,7 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: BoozeOMatInventory
|
||||
requiresCash: true
|
||||
|
||||
# Gas Tank Dispenser
|
||||
|
||||
@@ -778,3 +804,4 @@
|
||||
components:
|
||||
- type: VendingMachine
|
||||
pack: TankDispenserEVAPOIInventory
|
||||
requiresCash: true
|
||||
|
||||
@@ -10,3 +10,4 @@
|
||||
- MonoWorldgenVeryFarT1 # Mono
|
||||
- MonoWorldgenVeryFarT2Inner # Mono
|
||||
- MonoWorldgenVeryFarT2Middle # Mono
|
||||
- MonoWorldgenVeryFarT2Far # Mono
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
Players must have valid in-character reasons to kill or attack another player.
|
||||
|
||||
- Any conflict is allowed with a [color=red][bold]proper, reasonable RP reason[/bold][/color]. A stolen magazine may be reasoning for a fistfight, but not a meatgrinder.
|
||||
-- Vessel crew is allowed to KOS anyone who hacks or breaks their locked doors under "Castle doctrine".
|
||||
-- Vessel crew is allowed to KOS anyone who hacks or breaks their locked doors under "Castle doctrine".
|
||||
- Combat should arise naturally through roleplay, with proper escalation and meaningful interaction.
|
||||
-- Combat escalation should be stated in local, shortband, or broadband chat/radio channels and must be clearly declared to those involved. (ex. "It's over Jackson, die fucker!!" in local chat, or shortband)
|
||||
- Escalation to combat immediately is allowed in select circumstances such as command bounties, confirmed pirates, chimera/ADC, etc.
|
||||
|
||||
Reference in New Issue
Block a user