Нерф генокрадов (#381)
* makao sprite security Signed-off-by: pacable <igor.mamaev1@gmail.com> * нерф генокрада Количество биомассы повышено с 30 до 50 единиц. Голод генокрадов уменьшен. Невидимость генокрада теперь тратит химикаты когда активна. Нахождение в стазисе тратит биомассу. Уменьшен урон руки-клинка. Для покупки руки-клинка теперь необходимо съесть 2 жертвы. Укус фальшивой руки-клинка теперь действует 30 секунд вместо 60. Поглощение тела наносит 180 генетического урона вместо 200 Исправлен баг с перегружением мышц. Signed-off-by: pacable <igor.mamaev1@gmail.com> * Revert "makao sprite security" This reverts commit aa9d52447a415142003c75c81151cc720d6c4414. * реверт хуйни Signed-off-by: pacable <igor.mamaev1@gmail.com> * снижено количество очков для покупки разума улья Signed-off-by: pacable <igor.mamaev1@gmail.com> --------- Signed-off-by: pacable <igor.mamaev1@gmail.com>
This commit is contained in:
parent
3bbae85466
commit
ad5808d0d0
7 changed files with 84 additions and 29 deletions
|
|
@ -125,7 +125,7 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
|
||||
UpdateBiomass(uid, comp, comp.MaxBiomass - comp.TotalAbsorbedEntities);
|
||||
|
||||
var dmg = new DamageSpecifier(_proto.Index(AbsorbedDamageGroup), 200);
|
||||
var dmg = new DamageSpecifier(_proto.Index(AbsorbedDamageGroup), 180);
|
||||
_damage.TryChangeDamage(target, dmg, false, false);
|
||||
_blood.ChangeBloodReagent(target, "FerrochromicAcid");
|
||||
_blood.SpillAllSolutions(target);
|
||||
|
|
@ -217,6 +217,8 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
|
||||
comp.Chemicals = 0f;
|
||||
|
||||
ToggleChameleonSkin(uid, comp, false);
|
||||
|
||||
if (_mobState.IsAlive(uid))
|
||||
{
|
||||
// fake our death
|
||||
|
|
@ -231,6 +233,8 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
_mobState.ChangeMobState(uid, MobState.Dead);
|
||||
|
||||
comp.IsInStasis = true;
|
||||
|
||||
args.Handled = true;
|
||||
}
|
||||
private void OnExitStasis(EntityUid uid, ChangelingComponent comp, ref ExitStasisEvent args)
|
||||
{
|
||||
|
|
@ -260,6 +264,8 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
_popup.PopupEntity(Loc.GetString("changeling-stasis-exit"), uid, uid);
|
||||
|
||||
comp.IsInStasis = false;
|
||||
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
@ -341,7 +347,7 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
}
|
||||
private void OnToggleStrainedMuscles(EntityUid uid, ChangelingComponent comp, ref ToggleStrainedMusclesEvent args)
|
||||
{
|
||||
if (!TryUseAbility(uid, comp, args))
|
||||
if (!TryUseAbility(uid, comp, args) || _gravity.IsWeightless(uid))
|
||||
return;
|
||||
|
||||
ToggleStrainedMuscles(uid, comp);
|
||||
|
|
@ -350,13 +356,13 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
{
|
||||
if (!comp.StrainedMusclesActive)
|
||||
{
|
||||
_speed.ChangeBaseSpeed(uid, 125f, 150f, 1f);
|
||||
_speed.ChangeBaseSpeed(uid, 4f, 7.5f, 20f);
|
||||
_popup.PopupEntity(Loc.GetString("changeling-muscles-start"), uid, uid);
|
||||
comp.StrainedMusclesActive = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
_speed.ChangeBaseSpeed(uid, 100f, 100f, 1f);
|
||||
_speed.ChangeBaseSpeed(uid, 2.5f, 4.5f, 20f);
|
||||
_popup.PopupEntity(Loc.GetString("changeling-muscles-end"), uid, uid);
|
||||
comp.StrainedMusclesActive = false;
|
||||
}
|
||||
|
|
@ -444,7 +450,7 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
|
||||
#region Utilities
|
||||
|
||||
public void OnAnatomicPanacea(EntityUid uid, ChangelingComponent comp, ref ActionAnatomicPanaceaEvent args)
|
||||
private void OnAnatomicPanacea(EntityUid uid, ChangelingComponent comp, ref ActionAnatomicPanaceaEvent args)
|
||||
{
|
||||
if (!TryUseAbility(uid, comp, args))
|
||||
return;
|
||||
|
|
@ -460,7 +466,8 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
else return;
|
||||
PlayMeatySound(uid, comp);
|
||||
}
|
||||
public void OnAugmentedEyesight(EntityUid uid, ChangelingComponent comp, ref ActionAugmentedEyesightEvent args)
|
||||
|
||||
private void OnAugmentedEyesight(EntityUid uid, ChangelingComponent comp, ref ActionAugmentedEyesightEvent args)
|
||||
{
|
||||
if (!TryUseAbility(uid, comp, args))
|
||||
return;
|
||||
|
|
@ -474,7 +481,8 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
EnsureComp<FlashImmunityComponent>(uid);
|
||||
_popup.PopupEntity(Loc.GetString("changeling-passive-activate"), uid, uid);
|
||||
}
|
||||
public void OnBiodegrade(EntityUid uid, ChangelingComponent comp, ref ActionBiodegradeEvent args)
|
||||
|
||||
private void OnBiodegrade(EntityUid uid, ChangelingComponent comp, ref ActionBiodegradeEvent args)
|
||||
{
|
||||
if (!TryUseAbility(uid, comp, args))
|
||||
return;
|
||||
|
|
@ -501,24 +509,38 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
}
|
||||
_puddle.TrySplashSpillAt(uid, Transform(uid).Coordinates, soln, out _);
|
||||
}
|
||||
public void OnChameleonSkin(EntityUid uid, ChangelingComponent comp, ref ActionChameleonSkinEvent args)
|
||||
|
||||
private void OnChameleonSkin(EntityUid uid, ChangelingComponent comp, ref ActionChameleonSkinEvent args)
|
||||
{
|
||||
if (!TryUseAbility(uid, comp, args))
|
||||
return;
|
||||
|
||||
if (HasComp<StealthComponent>(uid) && HasComp<StealthOnMoveComponent>(uid))
|
||||
if (comp.StealthEnabled && HasComp<StealthComponent>(uid) && HasComp<StealthOnMoveComponent>(uid))
|
||||
ToggleChameleonSkin(uid, comp, false);
|
||||
else
|
||||
ToggleChameleonSkin(uid, comp, true);
|
||||
}
|
||||
|
||||
public void ToggleChameleonSkin(EntityUid uid, ChangelingComponent comp, bool toState)
|
||||
{
|
||||
if (!toState)
|
||||
{
|
||||
RemComp<StealthComponent>(uid);
|
||||
RemComp<StealthOnMoveComponent>(uid);
|
||||
_popup.PopupEntity(Loc.GetString("changeling-chameleon-end"), uid, uid);
|
||||
return;
|
||||
comp.StealthEnabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
EnsureComp<StealthComponent>(uid);
|
||||
var stealthonmove = EnsureComp<StealthOnMoveComponent>(uid);
|
||||
stealthonmove.PassiveVisibilityRate = -0.37f;
|
||||
_popup.PopupEntity(Loc.GetString("changeling-chameleon-start"), uid, uid);
|
||||
comp.StealthEnabled = true;
|
||||
}
|
||||
|
||||
EnsureComp<StealthComponent>(uid);
|
||||
EnsureComp<StealthOnMoveComponent>(uid);
|
||||
_popup.PopupEntity(Loc.GetString("changeling-chameleon-start"), uid, uid);
|
||||
}
|
||||
public void OnEphedrineOverdose(EntityUid uid, ChangelingComponent comp, ref ActionEphedrineOverdoseEvent args)
|
||||
|
||||
private void OnEphedrineOverdose(EntityUid uid, ChangelingComponent comp, ref ActionEphedrineOverdoseEvent args)
|
||||
{
|
||||
if (!TryUseAbility(uid, comp, args))
|
||||
return;
|
||||
|
|
@ -539,7 +561,7 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
}
|
||||
}
|
||||
// john space made me do this
|
||||
public void OnHealUltraSwag(EntityUid uid, ChangelingComponent comp, ref ActionFleshmendEvent args)
|
||||
private void OnHealUltraSwag(EntityUid uid, ChangelingComponent comp, ref ActionFleshmendEvent args)
|
||||
{
|
||||
if (!TryUseAbility(uid, comp, args))
|
||||
return;
|
||||
|
|
@ -551,7 +573,8 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
};
|
||||
if (TryInjectReagents(uid, reagents))
|
||||
_popup.PopupEntity(Loc.GetString("changeling-fleshmend"), uid, uid);
|
||||
else return;
|
||||
else
|
||||
return;
|
||||
PlayMeatySound(uid, comp);
|
||||
}
|
||||
public void OnLastResort(EntityUid uid, ChangelingComponent comp, ref ActionLastResortEvent args)
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ using Content.Shared.Mobs.Components;
|
|||
using Content.Server.Stunnable;
|
||||
using Content.Shared.Jittering;
|
||||
using System.Linq;
|
||||
using Content.Shared.Radio;
|
||||
|
||||
namespace Content.Server.Changeling;
|
||||
|
||||
|
|
@ -220,13 +221,36 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
}
|
||||
private void UpdateAbilities(EntityUid uid, ChangelingComponent comp)
|
||||
{
|
||||
var stamina = EnsureComp<StaminaComponent>(uid);
|
||||
if (comp.StrainedMusclesActive)
|
||||
{
|
||||
var stamina = EnsureComp<StaminaComponent>(uid);
|
||||
_stamina.TakeStaminaDamage(uid, 7.5f, visual: false);
|
||||
if (stamina.StaminaDamage >= stamina.CritThreshold || _gravity.IsWeightless(uid))
|
||||
ToggleStrainedMuscles(uid, comp);
|
||||
}
|
||||
|
||||
if (comp.StealthEnabled)
|
||||
{
|
||||
if (comp.Chemicals > comp.StealthDrain)
|
||||
comp.Chemicals -= comp.StealthDrain;
|
||||
else
|
||||
{
|
||||
_stamina.TakeStaminaDamage(uid, 35f, visual: false);
|
||||
if (stamina.StaminaDamage >= stamina.CritThreshold)
|
||||
ToggleChameleonSkin(uid, comp, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (comp.IsInStasis)
|
||||
{
|
||||
if (comp.Biomass > comp.StasisDrain)
|
||||
comp.Biomass -= comp.StasisDrain;
|
||||
else
|
||||
{
|
||||
comp.IsInStasis = false;
|
||||
_mobState.ChangeMobState(uid, MobState.Dead);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region Helper Methods
|
||||
|
|
|
|||
|
|
@ -49,6 +49,14 @@ public sealed partial class ChangelingComponent : Component
|
|||
|
||||
public bool IsInLesserForm = false;
|
||||
|
||||
public bool StealthEnabled = false;
|
||||
|
||||
[DataField]
|
||||
public float StealthDrain = 1.5f;
|
||||
|
||||
[DataField]
|
||||
public float StasisDrain = 0.2f;
|
||||
|
||||
|
||||
public Dictionary<string, EntityUid?> Equipment = new();
|
||||
|
||||
|
|
@ -56,13 +64,13 @@ public sealed partial class ChangelingComponent : Component
|
|||
/// Amount of biomass changeling currently has.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public float Biomass = 30f;
|
||||
public float Biomass = 50f;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum amount of biomass a changeling can have.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public float MaxBiomass = 30f;
|
||||
public float MaxBiomass = 50f;
|
||||
|
||||
/// <summary>
|
||||
/// How much biomass should be removed per cycle.
|
||||
|
|
|
|||
|
|
@ -145,7 +145,8 @@
|
|||
state: armblade
|
||||
event: !type:ToggleArmbladeEvent {}
|
||||
- type: ChangelingAction
|
||||
chemicalCost: 15
|
||||
chemicalCost: 30
|
||||
requireAbsorbed: 2
|
||||
|
||||
- type: entity
|
||||
id: ActionCreateBoneShard
|
||||
|
|
@ -247,7 +248,7 @@
|
|||
state: strained_muscles
|
||||
event: !type:ToggleStrainedMusclesEvent {}
|
||||
- type: ChangelingAction
|
||||
chemicalCost: 0
|
||||
chemicalCost: 30
|
||||
useInLesserForm: true
|
||||
|
||||
# stings
|
||||
|
|
|
|||
|
|
@ -333,7 +333,7 @@
|
|||
icon: { sprite: Changeling/changeling_abilities.rsi, state: hivemind_access }
|
||||
productAction: ActionHivemindAccess
|
||||
cost:
|
||||
EvolutionPoint: 4
|
||||
EvolutionPoint: 2
|
||||
categories:
|
||||
- ChangelingAbilityUtility
|
||||
conditions:
|
||||
|
|
|
|||
|
|
@ -12,8 +12,7 @@
|
|||
attackRate: 0.75
|
||||
damage:
|
||||
types:
|
||||
Blunt: 5
|
||||
Slash: 12.5
|
||||
Slash: 7.5
|
||||
Piercing: 10
|
||||
Structural: 10
|
||||
soundHit:
|
||||
|
|
@ -45,4 +44,4 @@
|
|||
Piercing: 1
|
||||
Structural: 1
|
||||
- type: TimedDespawn
|
||||
lifetime: 60
|
||||
lifetime: 30
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
Slash: 8
|
||||
Piercing: 10
|
||||
- type: StaminaDamageOnCollide
|
||||
damage: 45
|
||||
damage: 30
|
||||
- type: StaminaDamageOnEmbed
|
||||
damage: 10
|
||||
damage: 5
|
||||
|
||||
- type: entity
|
||||
parent: ThrowingStar
|
||||
|
|
@ -63,4 +63,4 @@
|
|||
- state: icon
|
||||
map: ["base"]
|
||||
- type: TimedDespawn
|
||||
lifetime: 30
|
||||
lifetime: 30
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue