public virtual void OnUpdate(RHSpeaker speaker, RHListener listener, RHConversation conversation, float scaledDelta) { float modValue = 0; switch (m_resourceType) { case RHResourceType.POSITIVE: modValue = scaledDelta * PositiveScaleValue * Mathf.Min(3, m_Amount); conversation.ModifyListenerPersuasion(listener, modValue); break; case RHResourceType.NEGATIVE: modValue = scaledDelta * NegativeScaleValue * Mathf.Min(3, m_Amount); conversation.ModifyListenerPersuasion(listener, modValue); break; case RHResourceType.QUESTION: modValue = scaledDelta * QuestionInterestScale * Mathf.Min(3, m_Amount); conversation.ModifyInterestTime(modValue); break; case RHResourceType.PERSONAL: modValue = scaledDelta * StoryInterestScale * Mathf.Min(3, m_Amount); conversation.ModifyInterestTime(modValue); break; case RHResourceType.BLUNDER: break; } }
public void ModifyStat(RHSpeaker s, RHConversation c, RHStat stat, float value, bool permanent = false) { if (stat == RHStat.CURRENT_PERSUASION_LEVEL) { c.ModifyListenerPersuasion(this, value); return; } if (stat == RHStat.EMOTIONS) { m_emotionalIntensity += value; return; } string label = getModifierString(s, c, permanent); ImpressionModifier i = new ImpressionModifier(label, value); if (!permanent) { if (!m_temporaryModifiers.ContainsKey(stat)) { m_temporaryModifiers[stat] = new List <ImpressionModifier>(); } m_temporaryModifiers[stat].Add(i); } GetComponent <Observer>().AddModifier(s.gameObject.name, RHStatToNoun(stat), i); }