public override void setup(ObjectActor subject, ObjectInteractable source) { duration = SHATTEREDDURATION; effectName = "Shattered"; description = string.Format("Physical armor value reduced by {0}.", ARMORLOSS); MAXMULTIPLIER = 3; conditionID = 3; base.setup(subject, source); subject.physicalArmorValueChange(-ARMORLOSS); }
public override void setup(ObjectActor subject, ObjectInteractable source) { effectName = "Burning"; description = string.Format("Lose {0} health per second.", DEGENSPEED * multiple); conditionID = 1; duration = BURNINGDURATION; multiple = 1; MAXMULTIPLIER = 3; base.setup(subject, source); }
public override void setup(ObjectActor subject, ObjectInteractable source) { duration = WEAKENEDDURATION; MAXMULTIPLIER = 3; effectName = "Weakened"; description = string.Format("Basic attack power reduced by {0}%.", ATTACKLOSS * 100); subject.attackModChange(-ATTACKLOSS); conditionID = 6; base.setup(subject, source); }
public override void setup(ObjectActor subject, ObjectInteractable source) { duration = SCARREDDURATION; effectName = "Arcane Scarred"; description = string.Format("Magic armor value decreased by {0}.", ARMORLOSS); MAXMULTIPLIER = 3; subject.magicArmorValueChange(-ARMORLOSS); conditionID = 7; base.setup(subject, source); }
public void newInteractableTarget(ObjectInteractable Target, string name) { effectsObject.SetActive(false); panel.SetActive(true); resetTargetPanel(); this.TargetInteractable = Target; targetType = 1; TargetName.text = name; TargetHealthBarObject.SetActive(false); TargetEnergyBarObject.SetActive(false); }
public void setup(ObjectActor subject, ObjectInteractable source) { instanceList = new List <GameObject>(); timed = true; duration = BLEEDDURATION; endTime = duration + Time.time; effectName = "Bleed"; description = string.Format("Lose {0} health per second.", DEGENSPEED * multiple); this.subject = subject; this.source = source; }
public override void setup(ObjectActor subject, ObjectInteractable source) { duration = CHILLEDDURATION; effectName = "Burning"; description = string.Format("Skill activation takes {0}x longer.", 1.0f + SPEEDLOSS); obs = subject.gameObject.AddComponent <FloatAdjuster>(); obs.setupObserver(change); subject.skillStartSubscribe(obs); conditionID = 2; base.setup(subject, source); }
public void beginChilled(ObjectActor subject, ObjectInteractable source) { BurningEffect burning = subject.getBurningEffect(); if (burning != null) { subject.endBurning(); return; } beginCondition <ChilledEffect>(subject, source); }
protected void newInstance <Condition>(ObjectActor subject, ObjectInteractable source) where Condition : BaseCondition { Condition newCondition = gameObject.AddComponent <Condition>(); newCondition.setup(subject, source); subject.applyNewEffect(newCondition); foreach (effectObserver obs in conditionBeginObservers) { obs.trigger(newCondition); } }
public void beginBurning(ObjectActor subject, ObjectInteractable source) { ChilledEffect chilled = subject.getChilledEffect(); if (chilled != null) { subject.endChilled(); return; } beginCondition <BurningEffect>(subject, source); }
public override void setup(ObjectActor subject, ObjectInteractable source) { duration = CONCUSSIONDURATION; effectName = "Concussed"; description = string.Format("Easily interrupted."); GameObjectObserver obs = subject.gameObject.AddComponent <GameObjectObserver>(); obs.setupObserver(trigger); subject.rawHitSubscribe(obs); conditionID = 4; base.setup(subject, source); }
public void setup(ObjectActor subject, ObjectInteractable source) { Debug.Log("WARNING. SENTENCED EFFECT NOT FULLY IMPLEMENTED"); instanceList = new List <GameObject>(); timed = true; duration = SENTENCEDDURATION; endTime = duration + Time.time; effectName = "Crippled"; description = string.Format("Speed reduced by {0}%.", SPEEDLOSS * 100); this.subject = subject; this.source = source; speedChanged = subject.moveSpeedChangePercent(-SPEEDLOSS); }
public void Deactivate() { TargetActor = null; TargetCombatable = null; TargetInteractable = null; targetType = 0; TargetName.text = ""; panel.SetActive(false); TargetHealthBarObject.SetActive(false); if (queueObject != null) { queueObject.SetActive(false); } }
public void setup( ObjectActor subject, ObjectInteractable source, string name, string desc, float duration, float stackHealing ) { this.subject = subject; // order passed in. this.source = source; skillName = name; briefSkillDescription = desc; this.duration = duration; this.stackHealing = stackHealing; setEnd(duration); instanceList = new List <GameObject>(); }
public void setup(ObjectActor subject, ObjectInteractable source) { instanceList = new List <GameObject>(); timed = true; duration = CHILLEDDURATION; endTime = duration + Time.time; effectName = "Burning"; description = string.Format("Skill activation takes {0}x longer.", 1.0f + SPEEDLOSS); this.subject = subject; this.source = source; obs = subject.gameObject.AddComponent <FloatAdjuster>(); obs.setupObserver(change); subject.skillStartSubscribe(obs); }
public void beginCondition <Condition>(ObjectActor subject, ObjectInteractable source) where Condition : BaseCondition { //Break this up into smaller functions. BaseCondition preexisting = getCondition <Condition>(); if (preexisting == null) { newInstance <Condition>(subject, source); } else { applyStack(preexisting); } }
public void setup( ObjectActor subject, ObjectInteractable source, string name, string desc, float duration, float damage ) { this.subject = subject; // order passed in. this.source = source; skillName = name; briefSkillDescription = desc; this.duration = duration; this.damage = damage; setEnd(duration); obs = subject.gameObject.AddComponent <FloatAdjuster>(); obs.setupObserver(addDamage); subject.rawDamageSubscribe(obs); instanceList = new List <GameObject>(); }
public void takeDamageNoObs(float delta, ObjectInteractable source)//This should be for typeless damages; very rare. deltas should be positive. { if (!dead) { this.currentHealth -= delta; if (currentHealth <= 0) { currentHealth = 0; dead = true; notifyDeathSubscribers(source.gameObject, true); rend.material.color = deadColor; } else if (currentHealth > maxHealth) { currentHealth = maxHealth; } } }
public void takeHealingNoObs(float delta, ObjectInteractable source)//healing over time adds. deltas should be positive. { if (!dead) { this.currentHealth += delta; if (currentHealth <= 0) { currentHealth = 0; dead = true; notifyDeathSubscribers(source.gameObject, true); rend.material.color = deadColor; } else if (currentHealth > maxHealth) { currentHealth = maxHealth; } } }
public override void activate(ObjectActor self, ObjectCombatable target) { ObjectActor targetActor = target as ObjectActor; ObjectInteractable source = self as ObjectInteractable; if (targetActor != null) { GloriousDawn preexisting = target.gameObject.GetComponent <GloriousDawn>(); if (preexisting == null) { GloriousDawn regeneration = target.gameObject.AddComponent <GloriousDawn>(); regeneration.setup(targetActor, source, skillName, briefSkillDescription, duration, stackHealing); targetActor.applyNewEffect(regeneration); } else { preexisting.stack(); } } }
public override void activate(ObjectActor self, ObjectCombatable target) { ObjectActor targetActor = target as ObjectActor; ObjectInteractable source = self as ObjectInteractable; if (targetActor != null) { BarnardsExaltation preexisting = target.gameObject.GetComponent <BarnardsExaltation>(); if (preexisting == null) { BarnardsExaltation regeneration = target.gameObject.AddComponent <BarnardsExaltation>(); regeneration.setup(targetActor, source, skillName, briefSkillDescription, duration, REGENSPEED, DEGENSPEED); targetActor.applyNewEffect(regeneration); } else { preexisting.stack(); } } }
public override void activate(ObjectActor self, ObjectCombatable target) { //Debug.Log(energyCost); ObjectActor targetActor = target as ObjectActor; ObjectInteractable source = self as ObjectInteractable; if (targetActor != null) { CyphersPoisonSkill preexisting = target.gameObject.GetComponent <CyphersPoisonSkill>(); if (preexisting == null) { CyphersPoisonSkill cyphers = target.gameObject.AddComponent <CyphersPoisonSkill>(); cyphers.setup(targetActor, source, skillName, briefSkillDescription, duration, damage); targetActor.applyNewEffect(cyphers); } else { preexisting.stack(); } } }
public override void activate(ObjectActor self, ObjectCombatable target) { //Debug.Log(energyCost); ObjectActor targetActor = target as ObjectActor; ObjectInteractable source = self as ObjectInteractable; if (targetActor != null) { Shield preexisting = target.gameObject.GetComponent <Shield>(); if (preexisting == null) { Shield effect = target.gameObject.AddComponent <Shield>(); effect.setup(targetActor, source, skillName, briefSkillDescription, duration, value); targetActor.applyNewEffect(effect); } else { preexisting.stack(); } } }
public float takePoisonDamage(float delta, ObjectInteractable source)//Damage subtracts. deltas should be positive. { if (!dead && takesPoisonDamage) { if (delta >= 0.5f) { foreach (var observer in poisonHitObservers) { observer.trigger(source.gameObject); } foreach (var observer in poisonDamageObservers) { delta = observer.trigger(delta); } } return(takeRawDamage(applyArmor(poisonArmor, delta), source)); } else { return(0); } }
public float takeBludgeoningDamage(float delta, ObjectInteractable source)//Damage subtracts. deltas should be positive. { if (!dead && takesBludgeoningDamage) { if (delta >= 0.5f) { foreach (var observer in bludgeoningHitObservers) { observer.trigger(source.gameObject); } foreach (var observer in bludgeoningDamageObservers) { delta = observer.trigger(delta); } } return(takePhysicalDamage(applyArmor(bludgeoningArmor, delta), source)); } else { return(0); } }
/* * healing subscription */ public float takeMechHealing(float delta, ObjectInteractable source)//healing adds. deltas should be positive. { if (!dead) { if (delta >= 0.5f) { foreach (var observer in mechHealingHitObservers) { observer.trigger(source.gameObject); } foreach (var observer in mechHealingDamageObservers) { delta = observer.trigger(delta); } } return(takeRawHealing(delta, source)); } else { return(0); } }
public float takeOccultDamage(float delta, ObjectInteractable source)//Damage subtracts. deltas should be positive. { if (!dead && takesOccultDamage) { if (delta >= 0.5f) { foreach (var observer in occultHitObservers) { observer.trigger(source.gameObject); } foreach (var observer in occultDamageObservers) { delta = observer.trigger(delta); } } return(takeMagicDamage(delta, source)); } else { return(0); } }
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>(); }
public override bool activate(ObjectActor self, ObjectCombatable target, out string message) { ObjectActor targetActor = target as ObjectActor; ObjectInteractable source = self as ObjectInteractable; if (targetActor != null) { GrennsFire preexisting = target.gameObject.GetComponent <GrennsFire>(); if (preexisting == null) { GrennsFire grennsFire = target.gameObject.AddComponent <GrennsFire>(); grennsFire.setup(targetActor, source, skillName, briefSkillDescription, duration, DEGENSPEED); targetActor.applyNewEffect(grennsFire); targetActor.beginBurning(self); } else { preexisting.stack(); } } message = ""; return(false); }
public override bool activate(ObjectActor self, ObjectCombatable target, out string message) { ObjectActor targetActor = target as ObjectActor; ObjectInteractable source = self as ObjectInteractable; sourceActor = self; if (targetActor != null) { DelayedJolt preexisting = target.gameObject.GetComponent <DelayedJolt>(); if (preexisting == null) { DelayedJolt regeneration = target.gameObject.AddComponent <DelayedJolt>(); regeneration.setup(targetActor, source, sourceActor, skillName, briefSkillDescription, duration); targetActor.applyNewEffect(regeneration); } else { preexisting.stack(); } } message = ""; return(false); }