Некоторые балансные изменения (#72)
* - balance: Chainsaw can only be crafted using advanced saw.
* - balance: Tweak some melee weapon damage and sizes.
* - balance: Tweak stun baton.
* - balance: No flash heavy attack.
* - balance: Tweak modifier sets.
* - tweak: Stunprod and snatcherprod tweaks.
* - tweak: Auto cycle tweaks.
* - balance: Nerf flamethrower.
* - tweak: Remove old stunprod construction.
* - balance: Tweak shotgun ammo.
* - tweak: Cartridge ejecting tweaks.
* - fix: Fix stunprod held prefix.
* Revert "Makes external & shuttle airlocks bump-openable (#22706)"
This reverts commit 6a73aed6d5.
* - balance: Tweak modifier sets once again.
* - balance: Tweak IED timer.
* - tweak: Chemical explosions can't create vacuum.
This commit is contained in:
@@ -113,7 +113,7 @@ public sealed partial class MeleeWeaponSystem : SharedMeleeWeaponSystem
|
||||
}
|
||||
|
||||
// Heavy attack.
|
||||
if (altDown == BoundKeyState.Down)
|
||||
if (altDown == BoundKeyState.Down && weapon.CanHeavyAttack) // WD EDIT
|
||||
{
|
||||
// If it's an unarmed attack then do a disarm
|
||||
if (weapon.AltDisarm && weaponUid == entity)
|
||||
|
||||
@@ -28,9 +28,6 @@ public sealed partial class GunSystem
|
||||
if (!Timing.IsFirstTimePredicted)
|
||||
return;
|
||||
|
||||
if (!component.IsCycled)
|
||||
return;
|
||||
|
||||
EntityUid? ent = null;
|
||||
|
||||
// TODO: Combine with TakeAmmo
|
||||
@@ -39,9 +36,12 @@ public sealed partial class GunSystem
|
||||
var existing = component.Entities[^1];
|
||||
component.Entities.RemoveAt(component.Entities.Count - 1);
|
||||
|
||||
if (Containers.CanRemove(existing, component.Container)) // WD EDIT
|
||||
{
|
||||
Containers.Remove(existing, component.Container);
|
||||
EnsureShootable(existing);
|
||||
}
|
||||
}
|
||||
else if (component.UnspawnedCount > 0)
|
||||
{
|
||||
component.UnspawnedCount--;
|
||||
@@ -54,6 +54,5 @@ public sealed partial class GunSystem
|
||||
|
||||
var cycledEvent = new GunCycledEvent();
|
||||
RaiseLocalEvent(uid, ref cycledEvent);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,8 @@ namespace Content.Server.Chemistry.ReactionEffects
|
||||
ExplosionType,
|
||||
intensity,
|
||||
IntensitySlope,
|
||||
MaxIntensity);
|
||||
MaxIntensity,
|
||||
canCreateVacuum: false); // WD EDIT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,9 +12,6 @@ public sealed partial class GunSystem
|
||||
|
||||
protected override void Cycle(EntityUid uid, BallisticAmmoProviderComponent component, MapCoordinates coordinates)
|
||||
{
|
||||
if (!component.IsCycled)
|
||||
return;
|
||||
|
||||
EntityUid? ent = null;
|
||||
|
||||
// TODO: Combine with TakeAmmo
|
||||
|
||||
@@ -179,10 +179,12 @@ public sealed partial class GunSystem : SharedGunSystem
|
||||
{
|
||||
userImpulse = false;
|
||||
Audio.PlayPredicted(gun.SoundEmpty, gunUid, user);
|
||||
break; // WD EDIT
|
||||
}
|
||||
|
||||
// Something like ballistic might want to leave it in the container still
|
||||
if (!cartridge.DeleteOnSpawn && !Containers.IsEntityInContainer(ent!.Value))
|
||||
if (!cartridge.DeleteOnSpawn && !Containers.IsEntityInContainer(ent!.Value) &&
|
||||
(!TryComp(gunUid, out BallisticAmmoProviderComponent? ballistic) || ballistic.AutoCycle)) // WD EDIT
|
||||
EjectCartridge(ent.Value, angle);
|
||||
|
||||
Dirty(ent!.Value, cartridge);
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
namespace Content.Server._White.Snatcherprod;
|
||||
|
||||
[RegisterComponent, Access(typeof(SnatcherprodSystem))]
|
||||
public sealed partial class SnatcherprodComponent : Component
|
||||
{
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("energyPerUse")]
|
||||
public float EnergyPerUse { get; set; } = 36;
|
||||
}
|
||||
6
Content.Server/_White/Stunprod/SnatcherprodComponent.cs
Normal file
6
Content.Server/_White/Stunprod/SnatcherprodComponent.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
namespace Content.Server._White.Stunprod;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class SnatcherprodComponent : Component
|
||||
{
|
||||
}
|
||||
56
Content.Server/_White/Stunprod/SnatcherprodSystem.cs
Normal file
56
Content.Server/_White/Stunprod/SnatcherprodSystem.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
using System.Linq;
|
||||
using Content.Shared.Damage.Events;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Item.ItemToggle;
|
||||
|
||||
namespace Content.Server._White.Stunprod;
|
||||
|
||||
public sealed class SnatcherprodSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedHandsSystem _hands = default!;
|
||||
[Dependency] private readonly SharedItemToggleSystem _itemToggle = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<SnatcherprodComponent, StaminaMeleeHitEvent>(OnHit);
|
||||
}
|
||||
|
||||
|
||||
private void OnHit(EntityUid uid, SnatcherprodComponent component, StaminaMeleeHitEvent args)
|
||||
{
|
||||
if (!_itemToggle.IsActivated(uid) || args.HitList.Count == 0)
|
||||
return;
|
||||
|
||||
var entity = args.HitList.First().Entity;
|
||||
|
||||
if (entity == uid || !TryComp(entity, out HandsComponent? hands))
|
||||
return;
|
||||
|
||||
EntityUid? heldEntity = null;
|
||||
|
||||
if (hands.ActiveHandEntity != null)
|
||||
heldEntity = hands.ActiveHandEntity;
|
||||
else
|
||||
{
|
||||
foreach (var hand in hands.Hands)
|
||||
{
|
||||
if (hand.Value.HeldEntity == null)
|
||||
continue;
|
||||
|
||||
heldEntity = hand.Value.HeldEntity;
|
||||
break;
|
||||
}
|
||||
|
||||
if (heldEntity == null)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_hands.TryDrop(entity, heldEntity.Value, null, false, false, handsComp: hands))
|
||||
return;
|
||||
|
||||
_hands.PickupOrDrop(args.User, heldEntity.Value, false);
|
||||
}
|
||||
}
|
||||
11
Content.Server/_White/Stunprod/StunprodComponent.cs
Normal file
11
Content.Server/_White/Stunprod/StunprodComponent.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace Content.Server._White.Stunprod;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class StunprodComponent : Component
|
||||
{
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public float EnergyPerUse { get; set; } = 72;
|
||||
|
||||
[DataField]
|
||||
public bool HasHeldPrefix = true;
|
||||
}
|
||||
@@ -1,27 +1,25 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using Content.Server.Popups;
|
||||
using Content.Server.Power.Components;
|
||||
using Content.Server.Power.EntitySystems;
|
||||
using Content.Shared.Damage.Events;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Item;
|
||||
using Content.Shared.Item.ItemToggle;
|
||||
using Content.Shared.Item.ItemToggle.Components;
|
||||
using Content.Shared.Toggleable;
|
||||
using Robust.Shared.Containers;
|
||||
|
||||
namespace Content.Server._White.Snatcherprod;
|
||||
namespace Content.Server._White.Stunprod;
|
||||
|
||||
public sealed class SnatcherprodSystem : EntitySystem
|
||||
public sealed class StunprodSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||
[Dependency] private readonly SharedContainerSystem _containers = default!;
|
||||
[Dependency] private readonly BatterySystem _battery = default!;
|
||||
[Dependency] private readonly PopupSystem _popup = default!;
|
||||
[Dependency] private readonly SharedHandsSystem _hands = default!;
|
||||
[Dependency] private readonly SharedItemToggleSystem _itemToggle = default!;
|
||||
[Dependency] private readonly SharedItemSystem _item = default!;
|
||||
|
||||
private const string CellSlot = "cell_slot";
|
||||
|
||||
@@ -29,16 +27,15 @@ public sealed class SnatcherprodSystem : EntitySystem
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<SnatcherprodComponent, ExaminedEvent>(OnExamined);
|
||||
SubscribeLocalEvent<SnatcherprodComponent, StaminaDamageOnHitAttemptEvent>(OnStaminaHitAttempt);
|
||||
SubscribeLocalEvent<SnatcherprodComponent, StaminaMeleeHitEvent>(OnHit);
|
||||
SubscribeLocalEvent<SnatcherprodComponent, EntRemovedFromContainerMessage>(OnEntRemoved);
|
||||
SubscribeLocalEvent<SnatcherprodComponent, EntInsertedIntoContainerMessage>(OnEntInserted);
|
||||
SubscribeLocalEvent<SnatcherprodComponent, ItemToggleActivateAttemptEvent>(TryTurnOn);
|
||||
SubscribeLocalEvent<SnatcherprodComponent, ItemToggledEvent>(ToggleDone);
|
||||
SubscribeLocalEvent<StunprodComponent, ExaminedEvent>(OnExamined);
|
||||
SubscribeLocalEvent<StunprodComponent, StaminaDamageOnHitAttemptEvent>(OnStaminaHitAttempt);
|
||||
SubscribeLocalEvent<StunprodComponent, EntRemovedFromContainerMessage>(OnEntRemoved);
|
||||
SubscribeLocalEvent<StunprodComponent, EntInsertedIntoContainerMessage>(OnEntInserted);
|
||||
SubscribeLocalEvent<StunprodComponent, ItemToggleActivateAttemptEvent>(TryTurnOn);
|
||||
SubscribeLocalEvent<StunprodComponent, ItemToggledEvent>(ToggleDone);
|
||||
}
|
||||
|
||||
private void OnEntInserted(EntityUid uid, SnatcherprodComponent component, EntInsertedIntoContainerMessage args)
|
||||
private void OnEntInserted(EntityUid uid, StunprodComponent component, EntInsertedIntoContainerMessage args)
|
||||
{
|
||||
_itemToggle.TryDeactivate(uid, predicted: false);
|
||||
|
||||
@@ -48,7 +45,7 @@ public sealed class SnatcherprodSystem : EntitySystem
|
||||
}
|
||||
}
|
||||
|
||||
private void OnEntRemoved(EntityUid uid, SnatcherprodComponent component, EntRemovedFromContainerMessage args)
|
||||
private void OnEntRemoved(EntityUid uid, StunprodComponent component, EntRemovedFromContainerMessage args)
|
||||
{
|
||||
if (TerminatingOrDeleted(uid))
|
||||
return;
|
||||
@@ -64,42 +61,8 @@ public sealed class SnatcherprodSystem : EntitySystem
|
||||
_itemToggle.TryDeactivate(uid, predicted: false);
|
||||
}
|
||||
|
||||
private void OnHit(EntityUid uid, SnatcherprodComponent component, StaminaMeleeHitEvent args)
|
||||
{
|
||||
if (!_itemToggle.IsActivated(uid) || args.HitList.Count == 0)
|
||||
return;
|
||||
|
||||
var entity = args.HitList.First().Entity;
|
||||
|
||||
if (!TryComp(entity, out HandsComponent? hands))
|
||||
return;
|
||||
|
||||
EntityUid? heldEntity = null;
|
||||
|
||||
if (hands.ActiveHandEntity != null)
|
||||
heldEntity = hands.ActiveHandEntity;
|
||||
else
|
||||
{
|
||||
foreach (var hand in hands.Hands)
|
||||
{
|
||||
if (hand.Value.HeldEntity == null)
|
||||
continue;
|
||||
|
||||
heldEntity = hand.Value.HeldEntity;
|
||||
break;
|
||||
}
|
||||
|
||||
if (heldEntity == null)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_hands.TryDrop(entity, heldEntity.Value, null, false, false, handsComp: hands))
|
||||
return;
|
||||
|
||||
_hands.PickupOrDrop(args.User, heldEntity.Value, false);
|
||||
}
|
||||
|
||||
private void OnStaminaHitAttempt(EntityUid uid, SnatcherprodComponent component, ref StaminaDamageOnHitAttemptEvent args)
|
||||
private void OnStaminaHitAttempt(EntityUid uid, StunprodComponent component,
|
||||
ref StaminaDamageOnHitAttemptEvent args)
|
||||
{
|
||||
if (!_itemToggle.IsActivated(uid) || !TryGetBatteryComponent(uid, out var battery, out var batteryUid) ||
|
||||
!_battery.TryUseCharge(batteryUid.Value, component.EnergyPerUse, battery))
|
||||
@@ -114,23 +77,26 @@ public sealed class SnatcherprodSystem : EntitySystem
|
||||
}
|
||||
}
|
||||
|
||||
private void OnExamined(EntityUid uid, SnatcherprodComponent comp, ExaminedEvent args)
|
||||
private void OnExamined(EntityUid uid, StunprodComponent comp, ExaminedEvent args)
|
||||
{
|
||||
var msg = _itemToggle.IsActivated(uid)
|
||||
? Loc.GetString("comp-snatcherprod-examined-on")
|
||||
: Loc.GetString("comp-snatcherprod-examined-off");
|
||||
? Loc.GetString("comp-stunprod-examined-on")
|
||||
: Loc.GetString("comp-stunprod-examined-off");
|
||||
args.PushMarkup(msg);
|
||||
}
|
||||
|
||||
private void ToggleDone(Entity<SnatcherprodComponent> entity, ref ItemToggledEvent args)
|
||||
private void ToggleDone(Entity<StunprodComponent> entity, ref ItemToggledEvent args)
|
||||
{
|
||||
if (entity.Comp.HasHeldPrefix && TryComp<ItemComponent>(entity, out var item))
|
||||
_item.SetHeldPrefix(entity.Owner, args.Activated ? "on" : "off", component: item);
|
||||
|
||||
if (TryGetBatteryComponent(entity, out _, out _) || !TryComp<AppearanceComponent>(entity, out var appearance))
|
||||
return;
|
||||
|
||||
_appearance.SetData(entity, ToggleVisuals.Toggled, "nocell", appearance);
|
||||
}
|
||||
|
||||
private void TryTurnOn(Entity<SnatcherprodComponent> entity, ref ItemToggleActivateAttemptEvent args)
|
||||
private void TryTurnOn(Entity<StunprodComponent> entity, ref ItemToggleActivateAttemptEvent args)
|
||||
{
|
||||
if (TryGetBatteryComponent(entity, out var battery, out _) &&
|
||||
battery.CurrentCharge >= entity.Comp.EnergyPerUse)
|
||||
@@ -60,6 +60,10 @@ public sealed partial class MeleeWeaponComponent : Component
|
||||
[ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public bool Attacking = false;
|
||||
|
||||
// WD
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField]
|
||||
public bool CanHeavyAttack = true;
|
||||
|
||||
/// <summary>
|
||||
/// If true, attacks will be repeated automatically without requiring the mouse button to be lifted.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using Content.Server.Stunnable.Components;
|
||||
using Content.Shared.ActionBlocker;
|
||||
using Content.Shared.Administration.Logs;
|
||||
using Content.Shared.CombatMode;
|
||||
@@ -218,13 +217,6 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
|
||||
return;
|
||||
}
|
||||
|
||||
// WD EDIT START
|
||||
if (TryComp<StunbatonComponent>(weaponUid, out _))
|
||||
{
|
||||
return;
|
||||
}
|
||||
// WD EDIT END
|
||||
|
||||
AttemptAttack(args.SenderSession.AttachedEntity.Value, weaponUid, weapon, msg, args.SenderSession);
|
||||
}
|
||||
|
||||
|
||||
@@ -256,14 +256,22 @@ public abstract partial class SharedGunSystem
|
||||
entity = component.Entities[^1];
|
||||
|
||||
args.Ammo.Add((entity, EnsureShootable(entity)));
|
||||
if (component.AutoCycle && (!TryComp(entity, out CartridgeAmmoComponent? cartridge) || !cartridge.Spent)) // WD EDIT
|
||||
{
|
||||
component.Entities.RemoveAt(component.Entities.Count - 1);
|
||||
Containers.Remove(entity, component.Container);
|
||||
}
|
||||
}
|
||||
else if (component.UnspawnedCount > 0)
|
||||
{
|
||||
component.UnspawnedCount--;
|
||||
entity = Spawn(component.Proto, args.Coordinates);
|
||||
args.Ammo.Add((entity, EnsureShootable(entity)));
|
||||
if (!component.AutoCycle && HasComp<CartridgeAmmoComponent>(entity)) // WD EDIT
|
||||
{
|
||||
component.Entities.Add(entity);
|
||||
Containers.Insert(entity, component.Container);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
comp-snatcherprod-examined-on = Хваталка [color=darkgreen]включена[/color].
|
||||
comp-snatcherprod-examined-off = Хваталка [color=darkred]выключена[/color].
|
||||
@@ -0,0 +1,2 @@
|
||||
comp-stunprod-examined-on = Она [color=darkgreen]включена[/color].
|
||||
comp-stunprod-examined-off = Она [color=darkred]выключена[/color].
|
||||
@@ -331,21 +331,3 @@
|
||||
flatReductions:
|
||||
# can't punch the endoskeleton to death
|
||||
Blunt: 5
|
||||
|
||||
- type: damageModifierSet
|
||||
id: Harpy
|
||||
coefficients:
|
||||
Blunt: 1.15
|
||||
Slash: 1.15
|
||||
Piercing: 1.15
|
||||
|
||||
- type: damageModifierSet
|
||||
id: CultRobe
|
||||
coefficients:
|
||||
Blunt: 1.45
|
||||
Slash: 1.45
|
||||
Piercing: 1.45
|
||||
Shock: 1.45
|
||||
Cold: 1.45
|
||||
Heat: 1.45
|
||||
Laser: 1.45
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
friction: 0.2
|
||||
- type: Construction
|
||||
deconstructionTarget: null
|
||||
graph: SnatcherprodGraph
|
||||
graph: StunprodGraph
|
||||
node: rod
|
||||
|
||||
- type: entity
|
||||
|
||||
@@ -78,6 +78,8 @@
|
||||
rating: 1
|
||||
- type: Tag
|
||||
tags:
|
||||
- DroneUsable
|
||||
- PowerCell
|
||||
- PowerCellSmall
|
||||
|
||||
- type: entity
|
||||
|
||||
@@ -218,10 +218,6 @@
|
||||
qualities:
|
||||
- Sawing
|
||||
speed: 1.5
|
||||
- type: Construction
|
||||
deconstructionTarget: null
|
||||
graph: ChainsawGraph
|
||||
node: circular
|
||||
|
||||
- type: entity
|
||||
name: advanced circular saw
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
params:
|
||||
volume: 1
|
||||
- type: RandomTimerTrigger
|
||||
min: 0
|
||||
max: 60
|
||||
min: 3
|
||||
max: 8
|
||||
- type: Explosive # Weak explosion in a very small radius. Doesn't break underplating.
|
||||
explosionType: Default
|
||||
totalIntensity: 20
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
- type: entity
|
||||
- type: entity
|
||||
id: BaseShellShotgun
|
||||
name: shell (.50)
|
||||
parent: BaseCartridge
|
||||
@@ -145,7 +145,7 @@
|
||||
map: [ "enum.AmmoVisualLayers.Base" ]
|
||||
- type: CartridgeAmmo
|
||||
count: 10
|
||||
spread: 45 #deadly if you can get up close... otherwise, good luck doing any kind of real damage
|
||||
spread: 35 #deadly if you can get up close... otherwise, good luck doing any kind of real damage
|
||||
proto: PelletShotgunImprovised
|
||||
- type: SpentAmmoVisuals
|
||||
state: "improvised"
|
||||
@@ -164,8 +164,6 @@
|
||||
- state: depleted-uranium
|
||||
map: [ "enum.AmmoVisualLayers.Base" ]
|
||||
- type: CartridgeAmmo
|
||||
count: 5
|
||||
spread: 6
|
||||
proto: PelletShotgunUranium
|
||||
- type: SpentAmmoVisuals
|
||||
state: "depleted-uranium"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
- type: entity
|
||||
- type: entity
|
||||
id: PelletShotgunSlug
|
||||
name: pellet (.50 slug)
|
||||
noSpawn: true
|
||||
@@ -85,8 +85,8 @@
|
||||
- type: Projectile
|
||||
damage:
|
||||
types:
|
||||
Piercing: 5
|
||||
Slash: 5 #remember, it's metal shrapnel!
|
||||
Piercing: 4
|
||||
Slash: 4 #remember, it's metal shrapnel!
|
||||
|
||||
- type: entity
|
||||
id: PelletShotgunTranquilizer
|
||||
|
||||
@@ -118,6 +118,7 @@
|
||||
fireRate: 2
|
||||
- type: BallisticAmmoProvider
|
||||
capacity: 2
|
||||
autoCycle: true
|
||||
- type: Construction
|
||||
graph: ShotgunSawn
|
||||
node: start
|
||||
@@ -196,6 +197,7 @@
|
||||
fireRate: 4
|
||||
- type: BallisticAmmoProvider
|
||||
capacity: 2
|
||||
autoCycle: true
|
||||
- type: Construction
|
||||
graph: ShotgunSawn
|
||||
node: shotgunsawn
|
||||
|
||||
@@ -64,7 +64,6 @@
|
||||
- CartridgeAntiMateriel
|
||||
capacity: 5
|
||||
proto: CartridgeAntiMateriel
|
||||
autoCycle: true
|
||||
- type: Wieldable
|
||||
wieldTime: 0
|
||||
forceTwoHanded: True
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
Slash: 4
|
||||
Structural: 4
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: Huge
|
||||
sprite: Objects/Weapons/Melee/chainsaw.rsi
|
||||
- type: DisarmMalus
|
||||
- type: RefillableSolution
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
soundHit:
|
||||
path: /Audio/Weapons/bladeslice.ogg
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: Huge
|
||||
- type: Clothing
|
||||
sprite: Objects/Weapons/Melee/cult_blade.rsi
|
||||
slots:
|
||||
|
||||
@@ -206,11 +206,6 @@
|
||||
components:
|
||||
- type: EnergySword
|
||||
- type: ItemToggleMeleeWeapon
|
||||
activatedDamage:
|
||||
types:
|
||||
Slash: 10
|
||||
Heat: 12
|
||||
deactivatedSecret: true
|
||||
- type: ItemToggleDisarmMalus
|
||||
activatedDisarmMalus: 0.6
|
||||
- type: Sprite
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
attackRate: 1.5
|
||||
damage:
|
||||
types:
|
||||
Slash: 13
|
||||
Slash: 12
|
||||
- type: Item
|
||||
size: Normal
|
||||
sprite: Objects/Weapons/Melee/cleaver.rsi
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Melee/stunprod.rsi
|
||||
layers:
|
||||
- state: stunprod_off
|
||||
- state: stunprod_nocell
|
||||
map: [ "enum.ToggleVisuals.Layer" ]
|
||||
- type: ItemToggle
|
||||
soundActivate:
|
||||
@@ -26,24 +26,22 @@
|
||||
activatedDamage:
|
||||
types:
|
||||
Blunt: 0
|
||||
- type: Stunbaton
|
||||
energyPerUse: 70
|
||||
- type: Stunprod
|
||||
- type: MeleeWeapon
|
||||
attackRate: 1.25
|
||||
canHeavyAttack: false
|
||||
wideAnimationRotation: -135
|
||||
damage:
|
||||
types:
|
||||
Blunt: 9
|
||||
angle: 60
|
||||
angle: 0
|
||||
animation: WeaponArcThrust
|
||||
- type: StaminaDamageOnHit
|
||||
damage: 20
|
||||
damage: 30
|
||||
sound: /Audio/Weapons/egloves.ogg
|
||||
- type: StaminaDamageOnCollide
|
||||
damage: 20
|
||||
damage: 30
|
||||
sound: /Audio/Weapons/egloves.ogg
|
||||
- type: Battery
|
||||
maxCharge: 360
|
||||
startingCharge: 360
|
||||
- type: UseDelay
|
||||
- type: Item
|
||||
heldPrefix: off
|
||||
@@ -60,10 +58,21 @@
|
||||
visuals:
|
||||
enum.ToggleVisuals.Toggled:
|
||||
enum.ToggleVisuals.Layer:
|
||||
nocell: {state: stunprod_nocell}
|
||||
True: {state: stunprod_on}
|
||||
False: {state: stunprod_off}
|
||||
- type: StaticPrice
|
||||
price: 100
|
||||
- type: PowerCellSlot
|
||||
cellSlotId: cell_slot
|
||||
- type: ItemSlots
|
||||
slots:
|
||||
cell_slot:
|
||||
name: power-cell-slot-component-slot-name-default
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
cell_slot: !type:ContainerSlot {}
|
||||
- type: Construction
|
||||
graph: makeshiftstunprod
|
||||
node: msstunprod
|
||||
deconstructionTarget: rod
|
||||
graph: StunprodGraph
|
||||
node: stunprod
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
path: /Audio/White/Items/handling/sabre_drop.ogg
|
||||
# WD edit sounds start
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: Large
|
||||
sprite: Objects/Weapons/Melee/captain_sabre.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
@@ -50,7 +50,7 @@
|
||||
soundHit:
|
||||
path: /Audio/Weapons/bladeslice.ogg
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: Large
|
||||
sprite: Objects/Weapons/Melee/katana.rsi
|
||||
- type: DisarmMalus
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
types:
|
||||
Slash: 30
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: Large
|
||||
sprite: Objects/Weapons/Melee/energykatana.rsi
|
||||
- type: EnergyKatana
|
||||
- type: DashAbility
|
||||
@@ -106,7 +106,7 @@
|
||||
soundHit:
|
||||
path: /Audio/Weapons/bladeslice.ogg
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: Large
|
||||
sprite: Objects/Weapons/Melee/machete.rsi
|
||||
- type: DisarmMalus
|
||||
- type: Construction
|
||||
@@ -129,11 +129,11 @@
|
||||
attackRate: 0.75
|
||||
damage:
|
||||
types:
|
||||
Slash: 33
|
||||
Slash: 30
|
||||
soundHit:
|
||||
path: /Audio/Weapons/bladeslice.ogg
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: Huge
|
||||
- type: Clothing
|
||||
sprite: Objects/Weapons/Melee/claymore.rsi
|
||||
slots:
|
||||
@@ -161,11 +161,11 @@
|
||||
wideAnimationRotation: -135
|
||||
damage:
|
||||
types:
|
||||
Slash: 16
|
||||
Slash: 20
|
||||
soundHit:
|
||||
path: /Audio/Weapons/bladeslice.ogg
|
||||
- type: Item
|
||||
size: Normal
|
||||
size: Large
|
||||
sprite: Objects/Weapons/Melee/cutlass.rsi
|
||||
- type: DisarmMalus
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
types:
|
||||
Blunt: 0
|
||||
- type: MeleeWeapon
|
||||
attackRate: 1.25
|
||||
canHeavyAttack: false
|
||||
wideAnimationRotation: -135
|
||||
damage:
|
||||
types:
|
||||
@@ -38,10 +40,10 @@
|
||||
angle: 60
|
||||
animation: WeaponArcSlash
|
||||
- type: StaminaDamageOnHit
|
||||
damage: 35
|
||||
damage: 40
|
||||
sound: /Audio/Weapons/egloves.ogg
|
||||
- type: StaminaDamageOnCollide
|
||||
damage: 35
|
||||
damage: 40
|
||||
sound: /Audio/Weapons/egloves.ogg
|
||||
- type: Battery
|
||||
maxCharge: 1000
|
||||
@@ -134,6 +136,7 @@
|
||||
maxCharges: 5
|
||||
charges: 5
|
||||
- type: MeleeWeapon
|
||||
canHeavyAttack: false
|
||||
wideAnimationRotation: 180
|
||||
damage:
|
||||
types:
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
parent: Airlock
|
||||
id: AirlockExternal
|
||||
suffix: External
|
||||
description: It opens, it closes, it might crush you, and there might be only space behind it.
|
||||
description: It opens, it closes, it might crush you, and there might be only space behind it. Has to be manually activated.
|
||||
components:
|
||||
- type: Door
|
||||
bumpOpen: false
|
||||
crushDamage:
|
||||
types:
|
||||
Blunt: 15
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
- type: Wires
|
||||
layoutId: Docking
|
||||
- type: Door
|
||||
bumpOpen: false
|
||||
closeTimeTwo: 0.4
|
||||
openTimeTwo: 0.4
|
||||
crushDamage:
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
- type: constructionGraph
|
||||
id: makeshiftstunprod
|
||||
start: start
|
||||
graph:
|
||||
- node: start
|
||||
edges:
|
||||
- to: msstunprod
|
||||
steps:
|
||||
- material: MetalRod
|
||||
amount: 1
|
||||
- material: Cable
|
||||
amount: 15
|
||||
- tag: DrinkSpaceGlue
|
||||
name: Drink Space Glue
|
||||
icon:
|
||||
sprite: Objects/Consumable/Drinks/glue-tube.rsi
|
||||
state: icon
|
||||
- tag: PowerCellSmall
|
||||
name: Power Cell Small
|
||||
icon:
|
||||
sprite: Objects/Power/power_cells.rsi
|
||||
state: small
|
||||
- tag: CapacitorStockPart
|
||||
name: Capacitor Stock Part
|
||||
icon:
|
||||
sprite: Objects/Misc/stock_parts.rsi
|
||||
state: capacitor
|
||||
doAfter: 20
|
||||
- node: msstunprod
|
||||
entity: Stunprod
|
||||
|
||||
#- type: constructionGraph
|
||||
# id: makeshiftstunprod
|
||||
# start: start
|
||||
# graph:
|
||||
# - node: start
|
||||
# edges:
|
||||
# - to: msstunprod
|
||||
# steps:
|
||||
# - material: MetalRod
|
||||
# amount: 1
|
||||
# - material: Cable
|
||||
# amount: 15
|
||||
# - tag: DrinkSpaceGlue
|
||||
# name: Drink Space Glue
|
||||
# icon:
|
||||
# sprite: Objects/Consumable/Drinks/glue-tube.rsi
|
||||
# state: icon
|
||||
# - tag: PowerCellSmall
|
||||
# name: Power Cell Small
|
||||
# icon:
|
||||
# sprite: Objects/Power/power_cells.rsi
|
||||
# state: small
|
||||
# - tag: CapacitorStockPart
|
||||
# name: Capacitor Stock Part
|
||||
# icon:
|
||||
# sprite: Objects/Misc/stock_parts.rsi
|
||||
# state: capacitor
|
||||
# doAfter: 20
|
||||
# - node: msstunprod
|
||||
# entity: Stunprod
|
||||
#
|
||||
|
||||
@@ -35,16 +35,16 @@
|
||||
icon: { sprite: Objects/Misc/cablecuffs.rsi, state: cuff }
|
||||
objectType: Item
|
||||
|
||||
- type: construction
|
||||
name: makeshift stunprod
|
||||
id: makeshiftstunprod
|
||||
graph: makeshiftstunprod
|
||||
startNode: start
|
||||
targetNode: msstunprod
|
||||
category: construction-category-weapons
|
||||
description: "Homemade stunprod."
|
||||
icon: { sprite: Objects/Weapons/Melee/stunprod.rsi, state: stunprod_off }
|
||||
objectType: Item
|
||||
#- type: construction
|
||||
# name: makeshift stunprod
|
||||
# id: makeshiftstunprod
|
||||
# graph: makeshiftstunprod
|
||||
# startNode: start
|
||||
# targetNode: msstunprod
|
||||
# category: construction-category-weapons
|
||||
# description: "Homemade stunprod."
|
||||
# icon: { sprite: Objects/Weapons/Melee/stunprod.rsi, state: stunprod_off }
|
||||
# objectType: Item
|
||||
|
||||
- type: construction
|
||||
name: muzzle
|
||||
|
||||
@@ -1,5 +1,31 @@
|
||||
- type: damageModifierSet
|
||||
- type: damageModifierSet
|
||||
id: Felinid
|
||||
coefficients:
|
||||
Blunt: 1.1
|
||||
Slash: 1.1
|
||||
Blunt: 1.15
|
||||
Slash: 1.15
|
||||
Piercing: 1.15
|
||||
|
||||
- type: damageModifierSet
|
||||
id: Dwarf
|
||||
coefficients:
|
||||
Blunt: 0.7
|
||||
Slash: 1.2
|
||||
Piercing: 1.2
|
||||
|
||||
- type: damageModifierSet
|
||||
id: Harpy
|
||||
coefficients:
|
||||
Blunt: 1.15
|
||||
Slash: 1.15
|
||||
Piercing: 1.15
|
||||
|
||||
- type: damageModifierSet
|
||||
id: CultRobe
|
||||
coefficients:
|
||||
Blunt: 1.45
|
||||
Slash: 1.45
|
||||
Piercing: 1.45
|
||||
Shock: 1.45
|
||||
Cold: 1.45
|
||||
Heat: 1.45
|
||||
Laser: 1.45
|
||||
|
||||
@@ -27,6 +27,6 @@
|
||||
- Impassable
|
||||
- BulletImpassable
|
||||
- type: IgnitionSource
|
||||
temperature: 4000
|
||||
temperature: 2000
|
||||
- type: Ammo
|
||||
muzzleFlash: null
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
types:
|
||||
Blunt: 0
|
||||
- type: MeleeWeapon
|
||||
attackRate: 1.25
|
||||
canHeavyAttack: false
|
||||
wideAnimationRotation: -135
|
||||
damage:
|
||||
types:
|
||||
Blunt: 9
|
||||
@@ -37,9 +40,16 @@
|
||||
sound: /Audio/Weapons/egloves.ogg
|
||||
- type: StaminaDamageOnCollide
|
||||
damage: 30
|
||||
sound: /Audio/Weapons/egloves.ogg
|
||||
- type: UseDelay
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Clothing
|
||||
quickEquip: false
|
||||
slots:
|
||||
- back
|
||||
- type: DisarmMalus
|
||||
malus: 0.225
|
||||
- type: Appearance
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
@@ -48,6 +58,8 @@
|
||||
nocell: {state: snatcherprod_nocell}
|
||||
True: {state: snatcherprod_on}
|
||||
False: {state: snatcherprod_off}
|
||||
- type: StaticPrice
|
||||
price: 100
|
||||
- type: PowerCellSlot
|
||||
cellSlotId: cell_slot
|
||||
- type: ItemSlots
|
||||
@@ -58,13 +70,15 @@
|
||||
containers:
|
||||
cell_slot: !type:ContainerSlot {}
|
||||
- type: Snatcherprod
|
||||
- type: Stunprod
|
||||
hasHeldPrefix: false
|
||||
- type: Construction
|
||||
deconstructionTarget: null
|
||||
graph: SnatcherprodGraph
|
||||
deconstructionTarget: rod
|
||||
graph: StunprodGraph
|
||||
node: snatcherprod
|
||||
|
||||
- type: entity
|
||||
name: палка
|
||||
name: обмотанный стержень
|
||||
parent: BaseItem
|
||||
id: ProdUnfinished
|
||||
description: Стержень с проводами.
|
||||
@@ -75,6 +89,6 @@
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Construction
|
||||
deconstructionTarget: null
|
||||
graph: SnatcherprodGraph
|
||||
deconstructionTarget: rod
|
||||
graph: StunprodGraph
|
||||
node: unfinished
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
entity: WeaponPoweredCrossbow
|
||||
|
||||
- type: constructionGraph
|
||||
id: SnatcherprodGraph
|
||||
id: StunprodGraph
|
||||
start: rod
|
||||
graph:
|
||||
- node: rod
|
||||
@@ -81,14 +81,28 @@
|
||||
- node: unfinished
|
||||
entity: ProdUnfinished
|
||||
edges:
|
||||
- to: capacitor
|
||||
- to: Igniter
|
||||
steps:
|
||||
- tag: CapacitorStockPart
|
||||
- node: capacitor
|
||||
- tag: Igniter
|
||||
- to: rod
|
||||
steps:
|
||||
- tool: Cutting
|
||||
doAfter: 5
|
||||
- node: Igniter
|
||||
edges:
|
||||
- to: snatcherprod
|
||||
steps:
|
||||
- material: Telecrystal
|
||||
- to: stunprod
|
||||
steps:
|
||||
- tag: PowerCell
|
||||
- to: rod
|
||||
steps:
|
||||
- tool: Cutting
|
||||
doAfter: 5
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: Igniter
|
||||
- node: snatcherprod
|
||||
entity: Snatcherprod
|
||||
edges:
|
||||
@@ -99,6 +113,19 @@
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: Telecrystal1
|
||||
- !type:SpawnPrototype
|
||||
prototype: Igniter
|
||||
- !type:EmptyAllContainers
|
||||
- node: stunprod
|
||||
entity: Stunprod
|
||||
edges:
|
||||
- to: rod
|
||||
steps:
|
||||
- tool: Cutting
|
||||
doAfter: 5
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: Igniter
|
||||
- !type:EmptyAllContainers
|
||||
|
||||
- type: constructionGraph
|
||||
|
||||
Reference in New Issue
Block a user