public void Init(IAbsorbingEntity owner, AbsorberTraitData data, KrbGameEvents.AbsorptionEvents absorbEvents) { _data = data; _activeAbsorptionData = _data.NoAbsorption; _owner = owner; _absorbEvents = absorbEvents; }
public void AbsorptionExpired(IAbsorbingEntity entity) { AbsorptionExpiredEvent evt = CreateEvent <AbsorptionExpiredEvent>(); evt.AbsorberName = entity.Name; evt.AbsorberCoords = entity.Coords; AddEvent(evt); }
public void AbsorptionHappened(IAbsorbableEntity absorbed, IAbsorbingEntity absorber, string[] attrs) { AbsorptionEvent evt = CreateEvent <AbsorptionEvent>(); evt.AbsorberName = absorber.Name; evt.AbsorberCoords = absorber.Coords; evt.Attributes = attrs; evt.AbsorbedName = absorbed.Name; evt.AbsorbedCoords = absorbed.Coords; AddEvent(evt); }
public bool CanBeAbsorbedBy(IAbsorbingEntity absorber) { if (_mapController.Distance(absorber.Coords, Coords) > absorber.AbsorberTrait.Data.AbsorbDistance) { return(false); } if (_absorptionData == absorber.AbsorberTrait.Data.NoAbsorption) { return(false); } return(_hpTrait.HPRatio <= absorber.AbsorberTrait.Data.HPPercentToEnableAbsorb); }
public void AbsorptionFailed(IAbsorbingEntity absorber, bool alreadyAbsorbing) { SimpleMessage msg = CreateEvent <SimpleMessage>(); msg.Text = $"{absorber.Name} try to absorb entity but failed."; if (alreadyAbsorbing) { msg.Text += $" It is already absorbing something else. Wait for it to dispel or press U\n"; } else { msg.Text += "\n"; } AddEvent(msg); }
public void BeAbsorbed(IAbsorbingEntity absorber) { TakeDamage(_hpTrait.HP); }
public void SendAbsorbFailed(IAbsorbingEntity absorber, bool alreadyAbsorbing) { AbsorbFailed?.Invoke(absorber, alreadyAbsorbing); }
public void SendAbsorptionCancelled(IAbsorbingEntity absorber) { AbsorptionCancelled?.Invoke(absorber); }
public void SendAbsorptionExpired(IAbsorbingEntity absorber) { AbsorptionExpired?.Invoke(absorber); }
public void SendAbsorptionHappened(IAbsorbableEntity target, IAbsorbingEntity absorber, string[] traitsGained) { WasAbsorbed?.Invoke(target, absorber, traitsGained); }