Esempio n. 1
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);
    }
Esempio n. 2
0
    public void ClearModifier(Noun i, ImpressionModifier newDM)
    {
        if (!m_typeLookup.ContainsKey(i.GetType()))
        {
            return;
        }
        Debug.Log("Attempting to remove: " + i.GetType());
        if (m_typeLookup[i.GetType()] == null)
        {
            m_typeLookup[i.GetType()] = i;
        }
        i = m_typeLookup[i.GetType()];

        Debug.Log("Found: " + i);
        updateImpressionModifiers();

        List <ImpressionModifier> newL = new List <ImpressionModifier>();

        if (!m_impressionEvaluation.ContainsKey(i))
        {
            m_impressionEvaluation[i] = newL;
            return;
        }

        foreach (ImpressionModifier dm in m_impressionEvaluation[i])
        {
            if (dm.ID != newDM.ID)
            {
                newL.Add(dm);
            }
        }
        m_isDirty = true;
        m_impressionEvaluation[i] = newL;
    }
Esempio n. 3
0
 public void ClearModifier(string targetID, Noun n, ImpressionModifier newDM)
 {
     if (!m_relationshipsByID.ContainsKey(targetID))
     {
         return;
     }
     m_relationshipsByID[targetID].ClearModifier(n, newDM);
 }
Esempio n. 4
0
 public void AddModifier(string targetID, Noun n, ImpressionModifier newDM)
 {
     if (!m_relationshipsByID.ContainsKey(targetID))
     {
         m_relationshipsByID[targetID] = new Relationship(this);
     }
     m_relationshipsByID[targetID].AddModifier(n, newDM);
 }
Esempio n. 5
0
 protected void OnAttackPerson(AIEVHitConfirm ev, Observer obs)
 {
     if (LogicManager.IsA(ev.ObjectHit, typeof(VBAttack), obs))
     {
         float severity = Mathf.Max(-0.2f, ev.MyHitInfo.Damage * 0.05f);
         ImpressionModifier m_weaponEquipped = new ImpressionModifier("sawAttacking", severity, 10, 3, 2);
         obs.AddModifier(ev.ObservedObj.name, this, m_weaponEquipped);
     }
 }
Esempio n. 6
0
 protected void OnItemGet(AIEVItemGet ev, Observer obs)
 {
     if (ev.Slot != null && ev.Slot.SlotType == InventorySlotType.EQUIPMENT &&
         LogicManager.IsA(ev.NewItem.gameObject, typeof(NOUNWeapon), obs))
     {
         ImpressionModifier m_weaponEquipped = new ImpressionModifier("sawHoldingWeapon", -0.2f, 20, 5, 3);
         obs.AddModifier(ev.ObservedObj.name, this, m_weaponEquipped);
     }
 }
Esempio n. 7
0
 protected void OnAttackAction(AIEVObservedAction ev, Observer obs)
 {
     if (LogicManager.IsA(ev.ObservedAction, typeof(VBAttack), obs))
     {
         ImpressionModifier m_weaponEquipped = new ImpressionModifier("sawAttacking", -0.25f, 10, 3, 2);
         obs.AddModifier(ev.ObservedObj.name, this, m_weaponEquipped);
     }
     else if (LogicManager.IsA(ev.ObservedAction, typeof(VBGunshot), obs))
     {
         ImpressionModifier m_weaponEquipped = new ImpressionModifier("sawGunshot", -1f, 120);
         obs.AddModifier(ev.ObservedObj.name, this, m_weaponEquipped);
     }
 }
Esempio n. 8
0
 public void AddModifier(Noun i, ImpressionModifier newDM)
 {
     if (!m_typeLookup.ContainsKey(i.GetType()))
     {
         Debug.Log("Adding: " + i.GetType());
         m_typeLookup[i.GetType()] = i;
         m_impressionEvaluation[i] = new List <ImpressionModifier>();
     }
     i = m_typeLookup[i.GetType()];
     Debug.Log("I is: " + i);
     updateImpressionModifiers();
     foreach (ImpressionModifier dm in m_impressionEvaluation[i])
     {
         if (dm.ID == newDM.ID)
         {
             m_isDirty = m_isDirty || dm.attempt_stack(newDM.CurrentStack);
             return;
         }
     }
     m_isDirty = true;
     m_impressionEvaluation[i].Add(newDM);
     Debug.Log("I is: " + i);
 }