Exemple #1
0
 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);
 }
Exemple #2
0
 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);
 }
Exemple #3
0
 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);
 }
Exemple #4
0
 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);
 }
Exemple #5
0
 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);
 }
Exemple #6
0
 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;
 }
Exemple #7
0
 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);
 }
Exemple #8
0
    public void beginChilled(ObjectActor subject, ObjectInteractable source)
    {
        BurningEffect burning = subject.getBurningEffect();

        if (burning != null)
        {
            subject.endBurning();
            return;
        }
        beginCondition <ChilledEffect>(subject, source);
    }
Exemple #9
0
    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);
        }
    }
Exemple #10
0
    public void beginBurning(ObjectActor subject, ObjectInteractable source)
    {
        ChilledEffect chilled = subject.getChilledEffect();

        if (chilled != null)
        {
            subject.endChilled();
            return;
        }
        beginCondition <BurningEffect>(subject, source);
    }
Exemple #11
0
    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);
    }
Exemple #12
0
 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);
 }
Exemple #13
0
 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);
 }
Exemple #16
0
    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);
        }
    }
Exemple #17
0
 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>();
 }
Exemple #18
0
 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;
         }
     }
 }
Exemple #19
0
 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();
            }
        }
    }
Exemple #22
0
    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();
            }
        }
    }
Exemple #23
0
    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();
            }
        }
    }
Exemple #24
0
 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);
     }
 }
Exemple #25
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);
     }
 }
Exemple #26
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);
     }
 }
Exemple #28
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>();
 }
Exemple #29
0
    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);
    }
Exemple #30
0
    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);
    }