示例#1
0
    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;
        }
    }
示例#2
0
    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);
    }