Skip to content

Commit

Permalink
a
Browse files Browse the repository at this point in the history
  • Loading branch information
Lyndomen committed Feb 4, 2025
1 parent e7faa92 commit 3103a87
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 36 deletions.
70 changes: 35 additions & 35 deletions Content.Server/_DV/Vampire/BloodSuckerSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -122,50 +122,50 @@ public void StartSuckDoAfter(EntityUid bloodsucker, EntityUid victim, BloodSucke
public bool TrySuck(EntityUid bloodsucker, EntityUid victim, BloodSuckerComponent? bloodsuckerComp = null)


{
var sharedBloodSuckerSystem = EntitySystem.Get<SharedBloodSuckerSystem>();
{
var sharedBloodSuckerSystem = EntitySystem.Get<SharedBloodSuckerSystem>();

if (!Resolve(bloodsucker, ref bloodsuckerComp))
return false;
if (!TryValidateVictim(victim))
return false;
if (!Resolve(bloodsucker, ref bloodsuckerComp))
return false;
if (!TryValidateVictim(victim))
return false;

if (!TryGetBloodsuckerStomach(bloodsucker, out var stomach))
return false;
if (!sharedBloodSuckerSystem.TryValidateSolution(bloodsucker))
return false;
if (!TryGetBloodsuckerStomach(bloodsucker, out var stomach))
return false;
if (!sharedBloodSuckerSystem.TryValidateSolution(bloodsucker))
return false;

sharedBloodSuckerSystem.PlayBloodSuckEffects(bloodsucker, victim);
return CompleteBloodSuck(bloodsucker, victim, stomach, bloodsuckerComp);
}
sharedBloodSuckerSystem.PlayBloodSuckEffects(bloodsucker, victim);
return CompleteBloodSuck(bloodsucker, victim, stomach, bloodsuckerComp);
}

private bool TryValidateVictim(EntityUid victim)
{
if (!TryComp<BloodstreamComponent>(victim, out var bloodstream) || bloodstream.BloodSolution == null)
return false;
return _bloodstreamSystem.GetBloodLevelPercentage(victim, bloodstream) != 0.0f;
}
private bool TryValidateVictim(EntityUid victim)
{
if (!TryComp<BloodstreamComponent>(victim, out var bloodstream) || bloodstream.BloodSolution == null)
return false;
return _bloodstreamSystem.GetBloodLevelPercentage(victim, bloodstream) != 0.0f;
}

private bool TryGetBloodsuckerStomach(EntityUid bloodsucker, out StomachComponent stomach)
{
stomach = _bodySystem.GetBodyOrganEntityComps<StomachComponent>(bloodsucker).FirstOrDefault();
return true;
}
private bool TryGetBloodsuckerStomach(EntityUid bloodsucker, out StomachComponent stomach)
{
stomach = _bodySystem.GetBodyOrganEntityComps<StomachComponent>(bloodsucker).FirstOrDefault();
return true;
}


private bool CompleteBloodSuck(EntityUid bloodsucker, EntityUid victim, StomachComponent stomach, BloodSuckerComponent bloodsuckerComp)
{
if (!TryComp<BloodstreamComponent>(victim, out var bloodstream) || bloodstream.BloodSolution == null)
return false;
private bool CompleteBloodSuck(EntityUid bloodsucker, EntityUid victim, StomachComponent stomach, BloodSuckerComponent bloodsuckerComp)
{
if (!TryComp<BloodstreamComponent>(victim, out var bloodstream) || bloodstream.BloodSolution == null)
return false;

var extractedBlood = _solutionSystem.SplitSolution(bloodstream.BloodSolution.Value, bloodsuckerComp.UnitsToSuck);
_stomachSystem.TryTransferSolution(bloodsucker, extractedBlood, stomach);
var extractedBlood = _solutionSystem.SplitSolution(bloodstream.BloodSolution.Value, bloodsuckerComp.UnitsToSuck);
_stomachSystem.TryTransferSolution(bloodsucker, extractedBlood, stomach);

DamageSpecifier damage = new();
damage.DamageDict.Add("Piercing", 1);
_damageableSystem.TryChangeDamage(victim, damage, true);
DamageSpecifier damage = new();
damage.DamageDict.Add("Piercing", 1);
_damageableSystem.TryChangeDamage(victim, damage, true);

return true;
}
return true;
}
}
}
2 changes: 1 addition & 1 deletion Content.Shared/_DV/Vampire/BloodSuckerSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public bool TryValidateSolution(EntityUid bloodsucker)
return false;
}

public void PlayBloodSuckEffects(EntityUid bloodsucker, EntityUid victim)
private void PlayBloodSuckEffects(EntityUid bloodsucker, EntityUid victim)
{
_adminLogger.Add(LogType.MeleeHit, LogImpact.Medium, $"{ToPrettyString(bloodsucker):player} sucked blood from {ToPrettyString(victim):target}");
_audio.PlayPvs("/Audio/Items/drink.ogg", bloodsucker);
Expand Down

0 comments on commit 3103a87

Please sign in to comment.