public virtual MyObjectBuilder_EntityStatRegenEffect GetObjectBuilder() { var builder = new MyObjectBuilder_EntityStatRegenEffect(); builder.TickAmount = m_amount; builder.Interval = m_interval; builder.MaxRegenRatio = m_maxRegenRatio; builder.MinRegenRatio = m_minRegenRatio; builder.Duration = m_duration; builder.AliveTime = AliveTime; return builder; }
private void InitPermanentEffects() { var effectBuilder = new MyObjectBuilder_EntityStatRegenEffect(); var health = Health; if (health != null) { effectBuilder.TickAmount = SpaceStatEffect.MyEffectConstants.HealthTick; effectBuilder.Interval = SpaceStatEffect.MyEffectConstants.HealthInterval; effectBuilder.MaxRegenRatio = 0.7f; effectBuilder.MinRegenRatio = 0; m_healthEffectId = health.AddEffect(effectBuilder); } }
public void Consume(MyFixedPoint amount, MyConsumableItemDefinition definition) { if (definition == null) return; MyEntityStat stat; var regenEffect = new MyObjectBuilder_EntityStatRegenEffect(); regenEffect.Interval = 1.0f; regenEffect.MaxRegenRatio = 1.0f; regenEffect.MinRegenRatio = 0.0f; foreach (var statValue in definition.Stats) { if (Stats.TryGetValue(MyStringHash.GetOrCompute(statValue.Name), out stat)) { regenEffect.TickAmount = statValue.Value*(float)amount; regenEffect.Duration = statValue.Time; stat.AddEffect(regenEffect); } } }
public int AddEffect(MyObjectBuilder_EntityStatRegenEffect objectBuilder) { var effect = MyEntityStatEffectFactory.CreateInstance(objectBuilder); effect.Init(objectBuilder, this); int nextId = 0; for (; nextId < m_effects.Count; ++nextId) { if (!m_effects.ContainsKey(nextId)) break; } m_effects.Add(nextId, effect); return nextId; }
public int AddEffect(float amount, float interval, float duration = -1.0f, float minRegenRatio = 0.0f, float maxRegenRatio = 1.0f) { var builder = new MyObjectBuilder_EntityStatRegenEffect() { TickAmount = amount, Interval = interval, Duration = duration, MinRegenRatio = minRegenRatio, MaxRegenRatio = maxRegenRatio, }; return AddEffect(builder); }
public void Consume(MyFixedPoint amount, MyConsumableItemDefinition definition) { MyEntityStat stat; var regenEffect = new MyObjectBuilder_EntityStatRegenEffect(); regenEffect.Interval = 1; regenEffect.MaxRegenRatio = 1.0f; regenEffect.MinRegenRatio = 0.0f; foreach (var statValue in definition.Stats) { if (m_stats.TryGetValue(MyStringHash.GetOrCompute(statValue.Name), out stat)) { regenEffect.TickAmount = statValue.Value; regenEffect.Duration = statValue.Time; stat.AddEffect(regenEffect); } } // MW:TODO change/remove when there is syncing of consuming items if (Entity is MyCharacter) (Entity as MyCharacter).StartSecondarySound(definition.EatingSound, true); }
public static MyEntityStatRegenEffect CreateInstance(MyObjectBuilder_EntityStatRegenEffect builder) { var obj = m_objectFactory.CreateInstance(builder.TypeId); return obj; }