Ратвар Альфа 0.2 (#434)

* lalala

* Update VeilCultSystem.cs

* Update antagonist.yml

* nya

* commit crime

* Update magic.yml

* Update magic.yml

* Update magic.yml
This commit is contained in:
MartynDew
2026-06-07 09:22:45 +03:00
committed by GitHub
parent 99c437847a
commit 5d55961042
34 changed files with 256 additions and 94 deletions
@@ -29,7 +29,10 @@ public sealed partial class BloodCultSystem
if (HasComp<VeilCultistComponent>(args.EquipTarget) && ent.Comp.Cult == CultType.Veil)
return;
if (HasComp<AllowCultEquipmentComponent>(args.EquipTarget))
return;
_transform.SetCoordinates(ent, Transform(args.EquipTarget).Coordinates);
_transform.AttachToGridOrMap(ent);
_throwing.TryThrow(ent, _random.NextVector2(), 1);
@@ -48,6 +51,9 @@ public sealed partial class BloodCultSystem
if (HasComp<VeilCultistComponent>(args.User) && ent.Comp.Cult == CultType.Veil)
return;
if (HasComp<AllowCultEquipmentComponent>(args.User))
return;
args.Cancelled = true;
_transform.SetCoordinates(ent, Transform(args.User).Coordinates);
@@ -197,6 +197,9 @@ public sealed partial class BloodCultSystem : SharedBloodCultSystem
if (HasComp<VeilCultistComponent>(user) && entity.Comp.Cult == CultType.Veil)
return;
if (HasComp<AllowCultEquipmentComponent>(user))
return;
_popup.PopupEntity(Loc.GetString("blood-cult-failed-attack"), user, user, PopupType.SmallCaution);
var dropEvent = new DropHandItemsEvent();
@@ -62,19 +62,21 @@ public sealed partial class VeilCultSystem
SubscribeLocalEvent<EnchantedComponent, CrusherEnchantActionEvent>(OnActivateCrusher);
SubscribeLocalEvent<EnchantedComponent, ConfusionEnchantActionEvent>(OnActivateConfusion);
SubscribeLocalEvent<EnchantedComponent, KnockbackEnchantActionEvent>(OnActivateKnockback);
SubscribeLocalEvent<EnchantedComponent, DismantlingEnchantActionEvent>(OnActivateDismantling);
SubscribeLocalEvent<EnchantedComponent, SwordsmenEnchantActionEvent>(OnActivateSwordsmen);
SubscribeLocalEvent<EnchantedComponent, BloodshedEnchantActionEvent>(OnActivateBloodShed);
SubscribeLocalEvent<EnchantedComponent, HasteEnchantActionEvent>(OnActivateHaste);
SubscribeLocalEvent<EnchantedComponent, ReflectionEnchantActionEvent>(OnActivateReflection);
SubscribeLocalEvent<EnchantedComponent, CamouflageEnchantActionEvent>(OnActivateCamouflage);
SubscribeLocalEvent<EnchantedComponent, AbsorbEnchantActionEvent>(OnActivateAbsorb);
SubscribeLocalEvent<EnchantedComponent, FlashEnchantActionEvent>(OnActivateFlash);
SubscribeLocalEvent<EnchantedComponent, SmokeEnchantActionEvent>(OnActivateSmoke);
SubscribeLocalEvent<EnchantedComponent, HardenPlatesEnchantActionEvent>(OnActivateHardenPlates);
SubscribeLocalEvent<EnchantedComponent, NorthStarEnchantActionEvent>(OnActivateNorthStar);
SubscribeLocalEvent<EnchantedComponent, RedFlameEnchantActionEvent>(OnActivateRedFlame);
// Enchants
SubscribeLocalEvent<CrusherEnchantComponent, MeleeHitEvent>(CrusherOnMeleeHit);
SubscribeLocalEvent<DismantlingEnchantComponent, MeleeHitEvent>(DismantlingOnMeleeHit);
SubscribeLocalEvent<ConfusionEnchantComponent, MeleeHitEvent>(ConfusionOnMeleeHit);
SubscribeLocalEvent<KnockbackEnchantComponent, MeleeHitEvent>(KnockbackOnMeleeHit);
SubscribeLocalEvent<StunEnchantComponent, MeleeHitEvent>(StunOnMeleeHit);
@@ -91,7 +93,7 @@ public sealed partial class VeilCultSystem
SubscribeLocalEvent<TimeStopEnchantComponent, UseInHandEvent>(TimeStopOnUseInHand);
SubscribeLocalEvent<HidingsClockEnchantComponent, UseInHandEvent>(HidingCloacksOnUseInHand);
SubscribeLocalEvent<SealWoundsEnchantComponent, AfterInteractEvent>(SealWoundOnUse);
SubscribeLocalEvent<SealWoundsEnchantComponent, MeleeHitEvent>(SealWoundOnUse);
SubscribeLocalEvent<EnchantableComponent, EnchantingDoAfterEvent>(EnchantDoAfter);
}
@@ -116,12 +118,20 @@ public sealed partial class VeilCultSystem
args.Handled = true;
}
private void OnActivateDismantling(EntityUid uid, EnchantedComponent comp, DismantlingEnchantActionEvent args)
{
EnsureComp<DismantlingEnchantComponent>(uid);
args.Handled = true;
}
private void OnActivateKnockback(EntityUid uid, EnchantedComponent comp, KnockbackEnchantActionEvent args)
{
EnsureComp<KnockbackEnchantComponent>(uid, out var kb);
EnsureComp<MeleeThrowOnHitComponent>(uid, out var throwOnHit);
throwOnHit.Speed = kb.Speed;
throwOnHit.Distance = kb.Distance;
if (TryComp<StaminaDamageOnHitComponent>(uid, out var stam))
stam.Damage *= 2.5f;
args.Handled = true;
}
@@ -209,7 +219,7 @@ public sealed partial class VeilCultSystem
private void OnActivateCamouflage(EntityUid uid, EnchantedComponent comp, CamouflageEnchantActionEvent args)
{
EnsureComp<StealthComponent>(args.Performer, out var stealth);
stealth.LastVisibility = 0.2f;
stealth.LastVisibility = 0.15f;
Dirty(args.Performer, stealth);
Timer.Spawn(TimeSpan.FromSeconds(10), () =>
{
@@ -221,24 +231,12 @@ public sealed partial class VeilCultSystem
args.Handled = true;
}
private void OnActivateFlash(EntityUid uid, EnchantedComponent comp, FlashEnchantActionEvent args)
private void OnActivateSmoke(EntityUid uid, EnchantedComponent comp, SmokeEnchantActionEvent args)
{
var nearbyCultists = _entityLookup.GetEntitiesInRange<VeilCultistComponent>(Transform(uid).Coordinates, 10f);
foreach (var cultist in nearbyCultists)
{
EnsureComp<FlashImmunityComponent>(cultist.Owner);
Timer.Spawn(TimeSpan.FromSeconds(1), () => RemComp<FlashImmunityComponent>(cultist.Owner));
}
var nearbyConstruct = _entityLookup.GetEntitiesInRange<VeilCultConstructComponent>(Transform(uid).Coordinates, 10f);
foreach (var construct in nearbyConstruct)
{
EnsureComp<FlashImmunityComponent>(construct.Owner);
Timer.Spawn(TimeSpan.FromSeconds(1), () => RemComp<FlashImmunityComponent>(construct.Owner));
}
_flash.FlashArea(args.Performer, args.Performer, 10f, TimeSpan.FromSeconds(3));
RemComp<FlashEnchantComponent>(uid);
var effect = _random.Prob(0.75f) ? "AdminInstantEffectSmoke3" : "AdminInstantEffectSmoke10";
Spawn(effect, Transform(uid).Coordinates);
RemComp<SmokeEnchantComponent>(uid);
RemComp<EnchantedComponent>(uid);
args.Handled = true;
@@ -253,9 +251,9 @@ public sealed partial class VeilCultSystem
var oldPiercing = armor.Modifiers.Coefficients["Piercing"];
var oldSlash = armor.Modifiers.Coefficients["Slash"];
var oldBlunt = armor.Modifiers.Coefficients["Blunt"];
armor.Modifiers.Coefficients["Blunt"] = 0.3f;
armor.Modifiers.Coefficients["Slash"] = 0.3f;
armor.Modifiers.Coefficients["Piercing"] = 0.4f;
armor.Modifiers.Coefficients["Blunt"] = 0.5f;
armor.Modifiers.Coefficients["Slash"] = 0.5f;
armor.Modifiers.Coefficients["Piercing"] = 0.35f;
armor.Modifiers.Coefficients["Heat"] = 0.4f;
Timer.Spawn(plate.Time, () =>
{
@@ -278,7 +276,7 @@ public sealed partial class VeilCultSystem
{
var oldRate = weapon.AttackRate;
weapon.AttackRate = enchant.AttackRate;
Timer.Spawn(TimeSpan.FromSeconds(6), () =>
Timer.Spawn(TimeSpan.FromSeconds(7), () =>
{
weapon.AttackRate = oldRate;
RemComp<EnchantedComponent>(uid);
@@ -293,7 +291,7 @@ public sealed partial class VeilCultSystem
{
EnsureComp<RedFlameEnchantComponent>(uid, out var enchant);
EnsureComp<IgniteOnMeleeHitComponent>(uid, out var flame);
flame.FireStacks = 1;
flame.FireStacks = 2;
Timer.Spawn(enchant.Time, () =>
{
RemComp<RedFlameEnchantComponent>(uid);
@@ -314,6 +312,8 @@ public sealed partial class VeilCultSystem
RemComp<KnockbackEnchantComponent>(uid);
RemComp<MeleeThrowOnHitComponent>(uid);
RemComp<EnchantedComponent>(uid);
if (TryComp<StaminaDamageOnHitComponent>(uid, out var stam))
stam.Damage /= 2.5f;
}
}
@@ -323,17 +323,29 @@ public sealed partial class VeilCultSystem
{
if (wield.Wielded && args.HitEntities != null)
{
args.BonusDamage += new DamageSpecifier { DamageDict = { { "Blunt", 40 } } };
args.BonusDamage += new DamageSpecifier { DamageDict = { { "Blunt", 30 } } };
foreach (var target in args.HitEntities)
{
var selectedInjury = _random.Pick(new[] { "OpenFracture", "ClosedFracture" });
_surgery.TryAddInternalDamage(target, selectedInjury);
}
RemComp<CrusherEnchantComponent>(uid);
RemComp<EnchantedComponent>(uid);
}
}
}
private void DismantlingOnMeleeHit(EntityUid uid, DismantlingEnchantComponent comp, MeleeHitEvent args)
{
if (TryComp<WieldableComponent>(uid, out var wield))
{
if (wield.Wielded && args.HitEntities != null)
{
args.BonusDamage += new DamageSpecifier { DamageDict = { { "Structural", 800 } } };
RemComp<DismantlingEnchantComponent>(uid);
RemComp<EnchantedComponent>(uid);
}
}
RemComp<CrusherEnchantComponent>(uid);
RemComp<EnchantedComponent>(uid);
}
private void ConfusionOnMeleeHit(EntityUid uid, ConfusionEnchantComponent comp, MeleeHitEvent args)
@@ -378,15 +390,18 @@ public sealed partial class VeilCultSystem
{
foreach (var target in args.HitEntities)
{
if (HasComp<StaminaComponent>(target))
if (comp.Knockout)
_stun.TryKnockdown(target, comp.StunTime, true, true, true);
else
_stun.TryUpdateParalyzeDuration(target, comp.StunTime);
if (comp.Mute)
{
if (HasComp<MutedComponent>(target))
continue;
EnsureComp<MutedComponent>(target);
Timer.Spawn(comp.MuteTime, () => RemComp<MutedComponent>(target));
if (!HasComp<MutedComponent>(target))
{
EnsureComp<MutedComponent>(target);
Timer.Spawn(comp.MuteTime, () => RemComp<MutedComponent>(target));
}
}
if (comp.EmpBorgs && HasComp<BorgChassisComponent>(target) || HasComp<AndroidComponent>(target))
@@ -548,7 +563,7 @@ public sealed partial class VeilCultSystem
foreach (var cultist in nearbyCultists)
{
EnsureComp<PacifiedComponent>(cultist);
Timer.Spawn(TimeSpan.FromSeconds(3), () => RemComp<PacifiedComponent>(cultist));
Timer.Spawn(TimeSpan.FromSeconds(4), () => RemComp<PacifiedComponent>(cultist));
}
Spawn("Chronofield", Transform(args.User).Coordinates);
@@ -601,18 +616,23 @@ public sealed partial class VeilCultSystem
}
}
private void SealWoundOnUse(EntityUid uid, SealWoundsEnchantComponent comp, AfterInteractEvent args)
private void SealWoundOnUse(EntityUid uid, SealWoundsEnchantComponent comp, MeleeHitEvent args)
{
if (args.Target != null && HasComp<VeilCultistComponent>(args.Target.Value))
if (args.HitEntities != null)
{
var damage = new DamageSpecifier { DamageDict = { { "Blunt", -15 }, { "Slash", -15 }, { "Piercing", -20 }, { "Heat", -30 } } };
_damage.TryChangeDamage(args.Target.Value, damage, true);
foreach (var target in args.HitEntities)
{
if (!HasComp<VeilCultistComponent>(target))
continue;
var damage = new DamageSpecifier { DamageDict = { { "Blunt", -10 }, { "Slash", -10 }, { "Piercing", -15 }, { "Heat", -20 } } };
_damage.TryChangeDamage(target, damage, true);
if (TryComp<BloodstreamComponent>(args.Target.Value, out var bloodstream))
_blood.TryModifyBleedAmount((args.Target.Value, bloodstream), -5f);
RemComp<EnchantedComponent>(args.Used);
RemComp<SealWoundsEnchantComponent>(args.Used);
if (TryComp<BloodstreamComponent>(target, out var bloodstream))
_blood.TryModifyBleedAmount((target, bloodstream), -5f);
}
RemComp<EnchantedComponent>(uid);
RemComp<SealWoundsEnchantComponent>(uid);
}
}
}
@@ -91,11 +91,11 @@ public sealed partial class VeilCultSystem : SharedVeilCultSystem
if (beaconComponent.NextTimeTick <= 0 && transform.Anchored)
{
beaconComponent.NextTimeTick = 5;
var nearbyCultists = _entityLookup.GetEntitiesInRange<VeilCultistComponent>(transform.Coordinates, 11f)
var nearbyCultists = _entityLookup.GetEntitiesInRange<VeilCultistComponent>(transform.Coordinates, 6f)
.Where(cultist => !_mobState.IsDead(cultist))
.ToList();
var nearbyConstruct = _entityLookup.GetEntitiesInRange<VeilCultConstructComponent>(transform.Coordinates, 11f)
var nearbyConstruct = _entityLookup.GetEntitiesInRange<VeilCultConstructComponent>(transform.Coordinates, 6f)
.Where(cultist => !_mobState.IsDead(cultist))
.ToList();
@@ -179,7 +179,7 @@ public sealed partial class VeilCultSystem : SharedVeilCultSystem
private void OnAnchor(EntityUid uid, VeilCultBeaconComponent component, AnchorAttemptEvent args)
{
var beacons = _entityLookup.GetEntitiesInRange<VeilCultBeaconComponent>(Transform(uid).Coordinates, 20f);
var beacons = _entityLookup.GetEntitiesInRange<VeilCultBeaconComponent>(Transform(uid).Coordinates, 10f);
if (beacons.Count > 1)
{
@@ -206,7 +206,7 @@ public sealed partial class VeilCultSystem : SharedVeilCultSystem
private void OnInit(EntityUid uid, VeilCultBeaconComponent component, ComponentInit args)
{
var beacons = _entityLookup.GetEntitiesInRange<VeilCultBeaconComponent>(
Transform(uid).Coordinates, 20f);
Transform(uid).Coordinates, 10f);
if (beacons.Count > 1)
{
@@ -261,9 +261,6 @@ public sealed partial class VeilCultSystem : SharedVeilCultSystem
}
else
{
if (HasComp<MindShieldComponent>(target) || HasComp<BibleUserComponent>(target))
continue;
if (!TryComp<MindContainerComponent>(target, out var mindContainer) || mindContainer.Mind == null)
continue;
@@ -62,6 +62,9 @@ public sealed partial class CultEquipmentComponent : Component
public CultType Cult = default!;
}
[RegisterComponent]
public sealed partial class AllowCultEquipmentComponent : Component;
[RegisterComponent]
public sealed partial class BloodDaggerComponent : Component
{
@@ -30,7 +30,10 @@ public abstract partial class SharedTeleportationEnchantSystem : EntitySystem
private void Teleport(EntityUid user, NetEntity beacon, EntityUid used)
{
var doAfterEventArgs = new DoAfterArgs(EntityManager, user, TimeSpan.FromSeconds(4),
new VeilCultTeleportDoAfterEvent(beacon), user, used)
new VeilCultTeleportDoAfterEvent() { Beacon = beacon },
eventTarget: user,
used: used
)
{
BreakOnMove = false,
BreakOnDamage = true,
@@ -123,11 +123,14 @@ public sealed partial class AbsorbedByVeilComponent : Component;
[RegisterComponent, NetworkedComponent]
public sealed partial class StunEnchantComponent : Component
{
[DataField]
public bool Knockout = false;
[DataField]
public TimeSpan StunTime = TimeSpan.FromSeconds(5);
[DataField]
public TimeSpan MuteTime = TimeSpan.FromSeconds(10);
public TimeSpan MuteTime = TimeSpan.FromSeconds(8);
[DataField]
public bool Mute = true;
@@ -186,6 +189,9 @@ public sealed partial class ConfusionEnchantComponent : Component
[RegisterComponent, NetworkedComponent]
public sealed partial class CrusherEnchantComponent : Component;
[RegisterComponent, NetworkedComponent]
public sealed partial class DismantlingEnchantComponent : Component;
[RegisterComponent, NetworkedComponent]
public sealed partial class KnockbackEnchantComponent : Component
{
@@ -236,7 +242,7 @@ public sealed partial class CamouflageEnchantComponent : Component;
public sealed partial class AbsorbEnchantComponent : Component;
[RegisterComponent, NetworkedComponent]
public sealed partial class FlashEnchantComponent : Component;
public sealed partial class SmokeEnchantComponent : Component;
[RegisterComponent, NetworkedComponent]
public sealed partial class HardenPlatesEnchantComponent : Component
@@ -263,7 +269,7 @@ public sealed partial class RedFlameEnchantComponent : Component
public sealed partial class TimeStopEnchantComponent : Component
{
[DataField]
public TimeSpan Time = TimeSpan.FromSeconds(5);
public TimeSpan Time = TimeSpan.FromSeconds(7);
}
[RegisterComponent, NetworkedComponent]
@@ -38,6 +38,10 @@ public sealed partial class CrusherEnchantActionEvent : InstantActionEvent
{
}
public sealed partial class DismantlingEnchantActionEvent : InstantActionEvent
{
}
public sealed partial class ConfusionEnchantActionEvent : InstantActionEvent
{
}
@@ -70,7 +74,7 @@ public sealed partial class AbsorbEnchantActionEvent : InstantActionEvent
{
}
public sealed partial class FlashEnchantActionEvent : InstantActionEvent
public sealed partial class SmokeEnchantActionEvent : InstantActionEvent
{
}
@@ -8,8 +8,8 @@ ent-ActionVeilCultActivateNorthStar = Активировать Зачарова
.desc = Активирует зачарование "Северная Звезда".
ent-ActionVeilCultActivateHardenPlates = Активировать Зачарование
.desc = Активирует зачарование "Защитные Пластины".
ent-ActionVeilCultActivateFlash = Активировать Зачарование
.desc = Активирует зачарование "Вспышка".
ent-ActionVeilCultActivateSmoke = Активировать Зачарование
.desc = Активирует зачарование "Дымовая завеса".
ent-ActionVeilCultActivateAbsorb = Активировать Зачарование
.desc = Активирует зачарование "Поглощение".
ent-ActionVeilCultActivateCamouflage = Активировать Зачарование
@@ -25,4 +25,6 @@ ent-ActionVeilCultActivateSwordsmen = Активировать Зачарова
ent-ActionVeilCultActivateKnockback = Активировать Зачарование
.desc = Активирует зачарование "Отдача".
ent-ActionVeilCultActivateConfusion = Активировать Зачарование
.desc = Активирует зачарование "Запутанность".
.desc = Активирует зачарование "Запутанность".
ent-ActionVeilCultActivateDismantling = Активировать Зачарование
.desc = Активирует зачарование "Демонтаж".
@@ -35,6 +35,6 @@ ent-VeilCultBrassCuirassAbsorb = { ent-VeilCultBrassCuirass }
ent-VeilCultBrassCuirassReflection = { ent-VeilCultBrassCuirass }
.desc = { ent-VeilCultBrassCuirass.desc }
.suffix = Отражение
ent-VeilCultBrassCuirassFlash = { ent-VeilCultBrassCuirass }
ent-VeilCultBrassCuirassSmoke = { ent-VeilCultBrassCuirass }
.desc = { ent-VeilCultBrassCuirass.desc }
.suffix = Вспышка
.suffix = Дымовая завеса
@@ -62,5 +62,8 @@ ent-WeaponClockHammerCrusher = { ent-WeaponClockHammer }
ent-WeaponClockHammerKnockback = { ent-WeaponClockHammer }
.desc = { ent-WeaponClockHammer.desc }
.suffix = Отдача
ent-WeaponClockHammerDismantling = { ent-WeaponClockHammer }
.desc = { ent-WeaponClockHammer.desc }
.suffix = Демонтаж
ent-VeilCultMidasTouch = касание Мидаса
.desc = По легендам, превращает всё в золото.
@@ -115,6 +115,7 @@
baseWalkSpeed: 30
# Corvax-End
- type: AdminMindLinkListener # Corvax-Wega-MindChat
- type: AllowCultEquipment # Corvax-Wega-Cults
- type: entity
abstract: true
@@ -28,6 +28,21 @@
- type: LimitedCharges
maxCharges: 1
- type: entity
parent: BaseAction
id: ActionVeilCultActivateDismantling
name: Activate Enchant
description: Toggle enchant of this item.
components:
- type: Action
itemIconStyle: BigItem
priority: -20
useDelay: 1
- type: InstantAction
event: !type:DismantlingEnchantActionEvent
- type: LimitedCharges
maxCharges: 1
- type: entity
parent: BaseAction
id: ActionVeilCultActivateConfusion
@@ -150,7 +165,7 @@
- type: entity
parent: BaseAction
id: ActionVeilCultActivateFlash
id: ActionVeilCultActivateSmoke
name: Activate Enchant
description: Toggle enchant of this item.
components:
@@ -159,7 +174,7 @@
priority: -20
useDelay: 1
- type: InstantAction
event: !type:FlashEnchantActionEvent
event: !type:SmokeEnchantActionEvent
- type: LimitedCharges
maxCharges: 1
@@ -97,7 +97,7 @@
- type: IdentityBlocker
coverage: EYES
# VeilCult
# VeilCults
- type: entity
parent: ClothingEyesBase
id: ClothingEyesJudicialVisor
@@ -118,6 +118,9 @@
coverage: EYES
- type: NightVision
tint: "#c242bb00"
brightness: 0.5
luminanceThreshold: 0.05
noiseAmount: 0.02
- type: ItemToggle
soundActivate: /Audio/_Wega/Items/activate.ogg
soundDeactivate: /Audio/_Wega/Items/deactivate.ogg
@@ -130,7 +133,6 @@
enum.ToggleableVisuals.Layer:
True: { state: "icon" }
False: { state: "icon-off" }
- type: FlashImmunity
- type: ShowHealthBars
- type: EyeProtection
- type: CultEquipment
@@ -221,6 +221,10 @@
Slash: 0.8
Piercing: 0.9
Heat: 0.85
- type: FireProtection
reduction: 0.95
- type: TemperatureProtection
heatingCoefficient: 0.9
- type: Sprite
sprite: _Wega/Clothing/Hands/clockwork_gauntlets.rsi
state: icon
@@ -200,6 +200,9 @@
categories: [ HideSpawnMenu ]
name: clockwork robe's hood
components:
- type: HideLayerClothing
slots:
- HeadTop
- type: Sprite
sprite: _Wega/Clothing/Head/Hoods/Coat/clockwork_hood.rsi
- type: Clothing
@@ -286,6 +286,13 @@
Slash: 0.6
Piercing: 0.6
Heat: 0.55
- type: ExplosionResistance
damageCoefficient: 0.6
- type: FireProtection
reduction: 0.65
- type: TemperatureProtection
heatingCoefficient: 0.6
coolingCoefficient: 0.8
- type: GroupExamine
- type: ToggleableClothing
clothingPrototype: ClothingHeadHelmetClockworkCuirass
@@ -296,4 +303,4 @@
- VeilCultBrassCuirassHardenPlates
- VeilCultBrassCuirassReflection
- VeilCultBrassCuirassAbsorb
- VeilCultBrassCuirassFlash
- VeilCultBrassCuirassSmoke
@@ -237,7 +237,12 @@
Piercing: 0.7
Heat: 0.7
- type: ExplosionResistance
damageCoefficient: 0.9
damageCoefficient: 0.8
- type: FireProtection
reduction: 0.75
- type: TemperatureProtection
heatingCoefficient: 0.7
coolingCoefficient: 0.7
- type: Enchantable
enchants:
- ClothingOuterVeilCultRobesCamouflage
@@ -48,8 +48,8 @@
- type: entity
parent: VeilCultBrassCuirass
id: VeilCultBrassCuirassFlash
suffix: Flash
id: VeilCultBrassCuirassSmoke
suffix: Smoke
components:
- type: Sprite
sprite: _Wega/Clothing/OuterClothing/Armor/cuirass.rsi
@@ -59,13 +59,13 @@
shader: unshaded
visible: true
- type: Enchanted
- type: FlashEnchant
- type: SmokeEnchant
- type: ActionGrant
actions:
- ActionVeilCultActivateFlash
- ActionVeilCultActivateSmoke
- type: ItemActionGrant
actions:
- ActionVeilCultActivateFlash
- ActionVeilCultActivateSmoke
activeIfWorn: true
- type: entity
@@ -37,8 +37,8 @@
sprite: _Wega/Clothing/Shoes/Boots/clockwork_treads.rsi
# equipSound: /Audio/Mecha/mechmove03.ogg FOR FUTURE SOUNDS
# unequipSound: /Audio/Mecha/mechmove03.ogg FOR FUTURE SOUNDS
equipDelay: 3
unequipDelay: 3
equipDelay: 1.5
unequipDelay: 1.5
- type: ClothingSlowOnDamageModifier
modifier: 0.35
@@ -104,6 +104,12 @@
- type: MovementSpeedModifier
baseWalkSpeed : 2.5
baseSprintSpeed : 5
- type: MeleeWeapon
damage:
types:
Piercing: 5
- type: StaminaDamageOnHit
damage: 15
- type: Damageable
damageModifierSet: Metallic
- type: Injurable
@@ -47,6 +47,8 @@
visible: true
- type: Enchanted
- type: StunEnchant
knockout: true
stunTime: 4
- type: entity
id: VeilCultClockworkSlabTeleportation
@@ -125,6 +125,27 @@
- ActionVeilCultActivateCrusher
activeIfWorn: false
- type: entity
id: WeaponClockHammerDismantling
parent: WeaponClockHammer
suffix: Dismantling
components:
- type: Sprite
sprite: _Wega/Objects/Weapons/Melee/clock_hammer.rsi
layers:
- state: icon
- state: dismantling
shader: unshaded
visible: true
- type: Enchanted
- type: ActionGrant
actions:
- ActionVeilCultActivateDismantling
- type: ItemActionGrant
actions:
- ActionVeilCultActivateDismantling
activeIfWorn: false
# GLOVES
- type: entity
@@ -187,4 +208,4 @@
- type: StunEnchant
mute: false
empBorgs: false
stunTime: 3
stunTime: 2
@@ -593,6 +593,8 @@
- 0,0,0,2
- type: CultWeapon
cult: Veil
- type: CultEquipment
cult: Veil
- type: MeleeWeapon
wideAnimationRotation: -135
# resistanceBypassPercentage: 0.1 # for future
@@ -618,6 +620,11 @@
- type: Sprite
sprite: _Wega/Objects/Weapons/Melee/clockwork_sword.rsi
state: icon
- type: Clothing
quickEquip: false
slots:
- back
- suitStorage
- type: Item
storedRotation: -45
size: Normal
@@ -629,7 +636,7 @@
attackRate: 1
damage:
types:
Slash: 20
Slash: 25
soundHit:
path: /Audio/Weapons/bladeslice.ogg
- type: DisarmMalus
@@ -643,15 +650,21 @@
- type: Sprite
sprite: _Wega/Objects/Weapons/Melee/clock_hammer.rsi
state: icon
- type: Clothing
quickEquip: false
slots:
- back
- type: Item
storedRotation: -45
size: Large
- type: CultWeapon
cult: Veil
- type: CultEquipment
cult: Veil
- type: MeleeWeapon
# resistanceBypassPercentage: 0.4 #for future
wideAnimationRotation: -135
attackRate: 0.7
attackRate: 0.8
damage:
types:
Blunt: 10
@@ -661,27 +674,28 @@
- type: IncreaseDamageOnWield
damage:
types:
Blunt: 15
Structural: 40
Blunt: 20
Structural: 50
- type: Reflect
reflectProb: 0.2
reflectProb: 0.15
spread: 90
- type: DamageOtherOnHit
damage:
types:
Blunt: 25
Blunt: 15
- type: StaminaDamageOnHit
damage: 25
- type: StaminaDamageOnCollide
damage: 25
damage: 15
- type: HeldSpeedModifier
walkModifier: 0.8
sprintModifier: 0.8
walkModifier: 0.9
sprintModifier: 0.85
- type: Wieldable
- type: Enchantable
enchants:
- WeaponClockHammerKnockback
- WeaponClockHammerCrusher
- WeaponClockHammerDismantling
- type: entity
parent: BaseEnchantable
@@ -713,19 +727,28 @@
- type: Clothing
quickEquip: false
slots:
- back
- suitStorage
- belt
- type: Item
size: Normal
shape:
- 0,0,0,3
- 0,0,0,4 # Теперь нельзя носить в сумке.
- type: Wieldable
- type: CultWeapon
cult: Veil
- type: CultEquipment
cult: Veil
- type: EmbeddableProjectile
sound: /Audio/Weapons/star_hit.ogg
offset: -0.15,0.0
removalTime: 3
- type: MeleeWeapon
wideAnimationRotation: -135
range: 2
damage:
types:
Piercing: 15
Piercing: 10
angle: 0
animation: WeaponArcThrust
soundHit:
@@ -734,11 +757,11 @@
# resistanceBypassPercentage: 0.4 # for future
damage:
types:
Piercing: 50
Piercing: 35
- type: IncreaseDamageOnWield
damage:
types:
Piercing: 10
Piercing: 15
- type: Enchantable
enchants:
- WeaponRatvarianSpearElectricalTouch
@@ -52,7 +52,7 @@
При нажатии на дверь, стеклянную дверь или шкаф открывает их, снимая доступы, действует как ЕМАГ. Работает через удар на ЛКМ.
- [bold]Излечивание:[/bold]
Позволяет лечить собратьев-Праведников, себя и конструктов Ратвара. Работает через взаймодействие.
Позволяет лечить собратьев-Праведников, себя и конструктов Ратвара. Работает через удар.
- [bold]Сокрытие шестерней:[/bold]
Маскирует постройки праведников, делая их невидимыми. Работает через использование в руках. Имеет 2 заряда
@@ -65,6 +65,9 @@
- [bold]Крушитель:[/bold]
После удара (необходимо держать молот в обеих руках) гарантированно останется перелом. Также повышает урон при ударе на 40 единиц.
- [bold]Демонтаж:[/bold]
При ударе (необходимо держать молот в обеих руках) структурный урон молота повышается на 800 единиц, работает 1 раз.
- [bold]Отдача:[/bold]
После удара (необходимо держать молот в обеих руках) отбросит противника на небольшое расстояние. Работает несколько раз.
@@ -90,8 +93,8 @@
- [bold]Защитные пластины:[/bold]
Укрепляет пластины у Кирасы на 12 секунд, повышая её защиту по всем показателям.
- [bold]Вспышка:[/bold]
Испускает белое свечение, что ослепляет заблудших. Не действует на праведников и боргов.
- [bold]Дымовая завеса:[/bold]
При использовании создаётся дымка (75% - на 3 секунды, 25% - на 10.).
- [bold]Северная Звезда:[/bold]
После активации наделяет перчатки эффектом Кулака Полярной Звезды, троекратно повышая скорость атаки кулаками/когтями. Эффект длится 6 секунд.
Binary file not shown.

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 B

@@ -27,10 +27,17 @@
"directions": 4
},
{
"name": "crusher"
"name": "equipped-BACK",
"directions": 4
},
{
"name": "knockback"
"name": "crusher"
},
{
"name": "dismantling"
},
{
"name": "knockback"
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

@@ -14,6 +14,14 @@
"name": "equipped-BELT",
"directions": 4
},
{
"name": "equipped-SUITSTORAGE",
"directions": 4
},
{
"name": "equipped-BACK",
"directions": 4
},
{
"name": "inhand-left",
"directions": 4
Binary file not shown.

After

Width:  |  Height:  |  Size: 567 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 B

@@ -14,6 +14,14 @@
"name": "inhand-left",
"directions": 4
},
{
"name": "equipped-SUITSTORAGE",
"directions": 4
},
{
"name": "equipped-BACK",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4