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); }
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; }
public void ClearModifier(string targetID, Noun n, ImpressionModifier newDM) { if (!m_relationshipsByID.ContainsKey(targetID)) { return; } m_relationshipsByID[targetID].ClearModifier(n, newDM); }
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); }
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); } }
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); } }
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); } }
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); }