public void setup( ObjectActor subject, ObjectInteractable source, string name, string desc, float duration, float value ) { this.subject = subject; // order passed in. this.source = source; skillName = name; briefSkillDescription = desc; this.duration = duration; this.value = value; setEnd(duration); obs1 = subject.gameObject.AddComponent <FloatAdjuster>(); obs1.setupObserver(subtractDamage); subject.piercingDamageSubscribe(obs1); obs2 = subject.gameObject.AddComponent <FloatAdjuster>(); obs2.setupObserver(subtractDamage); subject.bludgeoningDamageSubscribe(obs2); obs3 = subject.gameObject.AddComponent <FloatAdjuster>(); obs3.setupObserver(subtractDamage); subject.slashingDamageSubscribe(obs3); instanceList = new List <GameObject>(); }