Всякое (#213)

* - tweak: Shotgun firerate standartization.

* - tweak: Less storage clothing size.

* - tweak: No spears for nukies.

* - tweak: Slightly buff ling armor.

* - tweak: Nerf tranquilizers.

* Revert "Tranquilizer balance (#23979)"

This reverts commit 9e1342f3e4.

* - remove: Disable whisper aspect.

* - fix: Borer fix on transform person.

* - fix: Items no longer get dropped on transform.

* - tweak: Reduce ling tentacle stun time.

* - tweak: Update chitinous armor desc.

* - fix: Transform sting range check.

* - tweak: More explosion resistance.

* - tweak: Fuel tanks can't create vacuum.

* - fix: Fix transform while being carried.

* - fix: Monkey form.

* - fix: I have no brain but I must live.

* - tweak: Update ling desc.

* - tweak: Fleshmend heals airloss.

* - fix: New wiki rules.

* - fix: Fix missing polymorph.

* - tweak: Structural damage now works better.

* - tweak: Less reflect prob.

* - fix: Popup fix.
This commit is contained in:
Aviu00
2024-03-21 04:54:07 +09:00
committed by GitHub
parent bd2768280a
commit 735ff4a00b
21 changed files with 103 additions and 54 deletions

View File

@@ -4,6 +4,8 @@ using Content.Server.Administration.Systems;
using Content.Server.Bible.Components;
using Content.Server.Body.Components;
using Content.Server.Body.Systems;
using Content.Server.Borer;
using Content.Server.Carrying;
using Content.Server.Cuffs;
using Content.Server.DoAfter;
using Content.Server.Emp;
@@ -23,6 +25,7 @@ using Content.Server.Temperature.Systems;
using Content.Shared._White.Chaplain;
using Content.Shared._White.Overlays;
using Content.Shared.Actions;
using Content.Shared.Borer;
using Content.Shared.Changeling;
using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Cuffs.Components;
@@ -35,6 +38,7 @@ using Content.Shared.Hands.EntitySystems;
using Content.Shared.Humanoid;
using Content.Shared.Humanoid.Markings;
using Content.Shared.Implants.Components;
using Content.Shared.Interaction;
using Content.Shared.Inventory;
using Content.Shared.Miracle.UI;
using Content.Shared.Mobs;
@@ -85,6 +89,8 @@ public sealed partial class ChangelingSystem
[Dependency] private readonly EmpSystem _empSystem = default!;
[Dependency] private readonly TransformSystem _transform = default!;
[Dependency] private readonly ContainerSystem _container = default!;
[Dependency] private readonly ServerBorerSystem _borer = default!;
[Dependency] private readonly CarryingSystem _carrying = default!;
private void InitializeAbilities()
{
@@ -377,6 +383,13 @@ public sealed partial class ChangelingSystem
var target = GetEntity(args.Target);
var user = GetEntity(args.Entity);
if (!Transform(user).Coordinates.InRange(EntityManager, _transform, Transform(target).Coordinates,
SharedInteractionSystem.InteractionRange))
{
_popup.PopupEntity(Loc.GetString("changeling-popup-transform-too-far"), user, user);
return;
}
if (!TryComp<ActorComponent>(uid, out var actorComponent))
return;
@@ -757,6 +770,8 @@ public sealed partial class ChangelingSystem
if (!TakeChemicals(uid, component, 5))
return;
BeforeTransform(args.User);
var polymorphEntity = _polymorph.PolymorphEntity(args.User, "MonkeyChangeling");
if (polymorphEntity == null)
@@ -883,6 +898,8 @@ public sealed partial class ChangelingSystem
if (!HasComp<HumanoidAppearanceComponent>(target) && !humanoidOverride)
return null;
BeforeTransform(target);
var polymorphEntity = _polymorph.PolymorphEntity(target, transformData.EntityPrototype.ID);
if (polymorphEntity == null)
@@ -927,6 +944,15 @@ public sealed partial class ChangelingSystem
return polymorphEntity;
}
private void BeforeTransform(EntityUid target)
{
if (TryComp(target, out BorerHostComponent? host) && host.BorerContainer.Count > 0)
_borer.GetOut(host.BorerContainer.ContainedEntities[0]);
if (TryComp(target, out BeingCarriedComponent? beingCarried))
_carrying.DropCarried(beingCarried.Carrier, target);
}
private void TransferComponents(EntityUid from, EntityUid to)
{
if (HasComp<BibleUserComponent>(from))

View File

@@ -46,11 +46,19 @@ namespace Content.Server.Inventory
return;
var enumerator = new InventorySlotEnumerator(source.Comp);
// WD EDIT START
List<(EntityUid, string)> items = new();
while (enumerator.NextItem(out var item, out var slot))
{
if (TryUnequip(source, slot.Name, true, true, inventory: source.Comp))
TryEquip(target, item, slot.Name , true, true, inventory: target.Comp);
items.Add((item, slot.Name));
}
foreach (var (item, name) in items)
{
TryUnequip(source, name, true, true, inventory: source.Comp);
TryEquip(target, item, name, true, true, inventory: target.Comp);
}
// WD EDIT END
}
}
}

View File

@@ -2,6 +2,7 @@ using Content.Server.Body.Systems;
using Content.Shared.Body.Organ;
using Content.Shared.Construction;
using Content.Shared._White.CheapSurgery;
using Content.Shared.Changeling;
namespace Content.Server._White.Construction.Completions;
@@ -20,7 +21,8 @@ public sealed partial class Surgery : IGraphAction
return;
}
if (entityManager.TryGetComponent<OrganComponent>(surgeryComponent.OrganUid, out var organComponent))
if (entityManager.TryGetComponent<OrganComponent>(surgeryComponent.OrganUid, out var organComponent) &&
!entityManager.HasComponent<ChangelingComponent>(uid))
bodySystem.RemoveOrgan(surgeryComponent.OrganUid, organComponent);
entityManager.RemoveComponent<ActiveSurgeryComponent>(uid);

View File

@@ -67,7 +67,7 @@ public sealed class CritSystem : EntitySystem
args.BonusDamage = new DamageSpecifier(_prototypeManager.Index<DamageTypePrototype>("Slash"),
damage - args.BaseDamage.GetTotal());
_popup.PopupEntity($@"Crit! {damage}", args.User, PopupType.MediumCaution);
_popup.PopupEntity($"Crit! {damage}", args.User, args.User, PopupType.MediumCaution);
}
}

View File

@@ -137,7 +137,7 @@ public abstract class SharedTentacleGun : EntitySystem
private bool PullMob(ProjectileEmbedEvent args)
{
var stunTime = _random.Next(TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(5));
var stunTime = _random.Next(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(3));
if (!_stunSystem.TryParalyze(args.Embedded, stunTime, true))
return false;

View File

@@ -52,6 +52,6 @@ public sealed class BackstabSystem : EntitySystem
return;
var message = Loc.GetString("backstab-damage-betrayal-dagger", ("damage", damage));
_popup.PopupClient(message, args.User, args.User, PopupType.MediumCaution);
_popup.PopupEntity(message, args.User, args.User, PopupType.MediumCaution);
}
}

View File

@@ -17,7 +17,7 @@ public sealed class WhiteCVars
*/
public static readonly CVarDef<string> RulesWiki =
CVarDef.Create("white.wiki_rules", "https://wiki.ss14.su/%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0",
CVarDef.Create("white.wiki_rules", "https://js.ss14.su/rules",
CVar.SERVER | CVar.REPLICATED);
/*

View File

@@ -1,4 +1,4 @@
chat-manager-changeling-channel-name = УЛЕЙ
chat-manager-changeling-channel-name = УЛЕЙ
hud-chatbox-select-channel-Changeling = Улей
chat-manager-send-changeling-chat-wrap-message = [bold]\[УЛЕЙ\][/bold] [font size=13][italic][bold]{ $player }[/bold] шипит, "{ $message }"[/italic][/font]
@@ -21,6 +21,7 @@ changeling-popup-cant-sting = Мы не можем ужалить это!
changeling-popup-transform-no-dna = У нас нет поглощенного ДНК!
changeling-popup-cant-transform-someone = Мы не можем превратит это!
changeling-popup-transform-not-effective = Вирус перевоплощения не сработал!
changeling-popup-transform-too-far = Цель слишком далеко!
changeling-popup-already-lesser-form = Мы уже заняли примитивную форму жизни!

View File

@@ -1,53 +1,53 @@
changeling-ability-fleshmend = Восстановление тканей
changeling-ability-fleshmend-desc = Быстро вылечить большую часть повреждений
changeling-ability-fleshmend-desc = Быстро вылечить большую часть повреждений. Стоит 20 химикатов.
changeling-ability-biodegrade = Биоразложение
changeling-ability-biodegrade-desc = Растворяет наручники и прочие сдерживающие элементы.
changeling-ability-biodegrade-desc = Растворяет наручники и прочие сдерживающие элементы. Стоит 30 химикатов.
changeling-ability-eyesight = Аугментация зрения
changeling-ability-eyesight-desc = Развивает переключаемое ночное зрение. Когда способность неактивна, защищает вас от флешек и яркого света, например от сварки.
changeling-ability-dissonant-shriek = Диссонирующий вопль
changeling-ability-dissonant-shriek-desc = Испускает заряд ЭМИ, который нарушает работу всего оборудования вокруг.
changeling-ability-dissonant-shriek-desc = Испускает заряд ЭМИ, который нарушает работу всего оборудования вокруг. Стоит 20 химикатов.
changeling-ability-void-adaptation = Пустотная адаптация
changeling-ability-void-adaptation-desc = Наделяет пассивной способностью, позволяющей сопротивляться холоду, низкому давлению и потребности в кислороде. При использовании замедляет регенерацию химикатов на 25%.
changeling-ability-adrenaline-sacks = Мешки с адреналином
changeling-ability-adrenaline-sacks-desc = Дает кратковременный прилив адреналина в крови.
changeling-ability-adrenaline-sacks-desc = Дает кратковременный прилив адреналина в крови. Стоит 30 химикатов.
changeling-ability-cryo-sting = Жало заморозки
changeling-ability-cryo-sting-desc = Вводит в кровь цели химикаты, которые со временем превращают её кровь в лед.
changeling-ability-cryo-sting-desc = Вводит в кровь цели химикаты, которые со временем превращают её кровь в лед. Стоит 15 химикатов.
changeling-ability-hallucination-sting = Жало галлюцинаций
changeling-ability-hallucination-sting-desc = Вводит в кровь цели химикаты, вызывающие сильные галлюцинации.
changeling-ability-hallucination-sting-desc = Вводит в кровь цели химикаты, вызывающие сильные галлюцинации. Стоит 5 химикатов.
changeling-ability-mute-sting = Жало безмолвия
changeling-ability-mute-sting-desc = Вводит в кровь цели химикаты, заставляющие цель замолчать за короткий срок.
changeling-ability-mute-sting-desc = Вводит в кровь цели химикаты, заставляющие цель замолчать за короткий срок. Стоит 20 химикатов.
changeling-ability-blind-sting = Жало слепоты
changeling-ability-blind-sting-desc = Вводит в кровь цели химикаты, заставляющие цель временно ослепнуть.
changeling-ability-blind-sting-desc = Вводит в кровь цели химикаты, заставляющие цель временно ослепнуть. Стоит 25 химикатов.
changeling-ability-transform-sting = Жало трансформации
changeling-ability-transform-sting-desc = Вводит в кровь цели вирус, заставляющий её превратиться в другое существо.
changeling-ability-transform-sting-desc = Вводит в кровь цели вирус, заставляющий её превратиться в другое существо. Стоит 50 химикатов.
changeling-ability-extraction-sting = Жало извлечения
changeling-ability-extraction-sting-desc = Безшумно и безопасно извлекает ДНК из цели.
changeling-ability-extraction-sting-desc = Безшумно и безопасно извлекает ДНК из цели. Стоит 25 химикатов.
changeling-ability-tentacle-arm = Рука-щупальце
changeling-ability-tentacle-arm-desc = Превращает одну из рук в щупальце, способное притягивать людей или забирать вещи из их рук.
changeling-ability-tentacle-arm-desc = Превращает одну из рук в щупальце, способное притягивать людей или забирать вещи из их рук. Стоит 10 химикатов.
changeling-ability-changeling-armor = Хитиновая броня
changeling-ability-changeling-armor-desc = Надувает тело, превращая его в крепкую хитиновую броню.
changeling-ability-changeling-armor-desc = Надувает тело, превращая его в крепкую хитиновую броню. При использовании замедляет регенерацию химикатов на 25%. Стоит 20 химикатов.
changeling-ability-changeling-shield = Органический щит
changeling-ability-changeling-shield-desc = Превращает одну из рук в крепкий органический щит.
changeling-ability-changeling-shield-desc = Превращает одну из рук в крепкий органический щит. Стоит 20 химикатов.
changeling-ability-changeling-armblade = Рука-клинок
changeling-ability-changeling-armblade-desc = Превращает одну из рук в клинок, созданный из костей и плоти.
changeling-ability-changeling-armblade-desc = Превращает одну из рук в клинок, созданный из костей и плоти. Стоит 20 химикатов.
changeling-ability-changeling-lesser-form = Примитивная форма
changeling-ability-changeling-lesser-form-desc = Превращает в самую примитивную форму. Полезно для побега из наручников.
changeling-ability-changeling-lesser-form-desc = Превращает в самую примитивную форму. Полезно для побега из наручников. Стоит 5 химикатов.
ent-ActionChangelingShop = Эволюции
.desc = Эволюционируйте и развивайтесь.
@@ -56,10 +56,10 @@ ent-ActionChangelingAbsorb = Поглотить
.desc = Поглотить существо.
ent-ActionChangelingTransform = Превращение
.desc = Превратиться в одну из поглощенных личностей.
.desc = Превратиться в одну из поглощенных личностей. Стоит 5 химикатов.
ent-ActionChangelingRegenerate = Регенерация
.desc = Войти в регенерирующий стазис.
.desc = Войти в регенерирующий стазис. Стоит 15 химикатов.
ent-OrganicShield = органический щит
.desc = Большой щит из плоти.

View File

@@ -16,26 +16,23 @@
Slash: 0.5
Piercing: 0.5
Shock: 1.2
Structural: 0.25
flatReductions:
Blunt: 10
Slash: 10
Piercing: 10
Heat: 10
Structural: 10
- type: damageModifierSet
id: StructuralMetallic
coefficients:
Shock: 1.2
Heat: 1.2
Structural: 0.5
flatReductions:
Blunt: 10
Slash: 10
Piercing: 10
Heat: 10
Structural: 10
- type: damageModifierSet
id: StructuralMetallic
coefficients:
Shock: 1.2
Heat: 1.2
flatReductions:
Blunt: 10
Slash: 10
Piercing: 10
Heat: 10
- type: damageModifierSet
id: Rock
@@ -113,7 +110,6 @@
Slash: 5
Piercing: 5
Heat: 5
Structural: 5
- type: damageModifierSet
id: RGlass
@@ -123,13 +119,11 @@
Piercing: 0.6
Heat: 0.5
Shock: 0
Structural: 0.5
flatReductions:
Blunt: 5
Slash: 5
Piercing: 5
Heat: 5
Structural: 10
- type: damageModifierSet
id: Wood

View File

@@ -165,12 +165,12 @@
- type: Armor
modifiers:
coefficients:
Blunt: 0.5
Slash: 0.5
Piercing: 0.6
Heat: 0.5
Blunt: 0.4
Slash: 0.4
Piercing: 0.5
Heat: 0.4
- type: ExplosionResistance
damageCoefficient: 0.9
damageCoefficient: 0.5
- type: GroupExamine
- type: Unremoveable
deleteOnDrop: true

View File

@@ -17,7 +17,7 @@
id: ClothingOuterBaseLarge
components:
- type: Item
size: Huge
size: Large
- type: Clothing
slots:
- outerClothing
@@ -155,4 +155,4 @@
id: ClothingOuterBaseMedium
components:
- type: Item
size: Huge
size: Large

View File

@@ -125,7 +125,7 @@
ammo:
reagents:
- ReagentId: ChloralHydrate
Quantity: 7
Quantity: 5
- type: SolutionTransfer
maxTransferAmount: 7
- type: SpentAmmoVisuals

View File

@@ -194,7 +194,7 @@
sprite: Objects/Weapons/Guns/Shotguns/inhands_64x.rsi
heldPrefix: sawn
- type: Gun
fireRate: 4
fireRate: 2
- type: BallisticAmmoProvider
capacity: 2
autoCycle: true

View File

@@ -34,6 +34,7 @@
- type: Explosive
explosionType: Default
totalIntensity: 120 # ~ 5 tile radius
canCreateVacuum: false
- type: entity
id: WeldingFuelTankFull
@@ -76,6 +77,7 @@
- type: Explosive
explosionType: Default
totalIntensity: 140
canCreateVacuum: false
# Water

View File

@@ -340,6 +340,17 @@
allowRepeatedMorphs: true
inventory: Transfer
- type: polymorph
id: MobHumanGhost
configuration:
entity: MobHuman
forced: true
revertOnCrit: false
revertOnDeath: false
transferDamage: true
allowRepeatedMorphs: true
inventory: Transfer
- type: polymorph
id: MobGingerbread
configuration:

View File

@@ -145,6 +145,7 @@
groups:
Burn: -5
Brute: -5
Airloss: -5 # for lings
Toxin: -2
types:
Bloodloss: -5

View File

@@ -248,8 +248,6 @@
Plastic: 15
Steel: 10
Glass: 5
Plasma: 10
Silver: 5
- type: latheRecipe
id: TargetHuman

View File

@@ -258,6 +258,7 @@
weight: 3
startAudio:
path: /Audio/White/Aspects/accent.ogg
forbidden: true
- type: WhisperAspect
- type: entity

View File

@@ -87,6 +87,11 @@
Telecrystal: 12
categories:
- UplinkImplants
conditions:
- !type:StoreWhitelistCondition
blacklist:
tags:
- NukeOpsUplink
# Night Vision
- type: listing

View File

@@ -202,7 +202,7 @@
slots:
- back
- type: Reflect
reflectProb: 0.4
reflectProb: 0.33
- type: Item
sprite: White/Objects/Weapons/Chaplain/hfrequency.rsi