Inheritance: MonoBehaviour
    //get rock paper scissor damage multiplier
    public static float spellResistanceMultiplier(GameObject player, SpellElement spellElem)
    {
        Transform defensiveSpell;
        SpellProperties properties;
        DefensiveSpellBehaviour dSpellBehave;

        if(defensiveSpell = player.transform.Find("defensiveSpell")){
            properties = defensiveSpell.GetComponent<SpellProperties>();
            dSpellBehave = defensiveSpell.GetComponent<DefensiveSpellBehaviour>();
            switch(properties.spellElem){
                case SpellElement.fire:
                    if(spellElem == SpellElement.earth)
                        return dSpellBehave.strongAgainstMultiplier;
                    else if(spellElem == SpellElement.water)
                        return dSpellBehave.weakAgainstMultiplier;
                    else
                        return 1.0f;
                case SpellElement.water:
                    if(spellElem == SpellElement.fire)
                        return dSpellBehave.strongAgainstMultiplier;
                    else if(spellElem == SpellElement.earth)
                        return dSpellBehave.weakAgainstMultiplier;
                    else
                        return 1.0f;
                case SpellElement.earth:
                    if(spellElem == SpellElement.water)
                        return dSpellBehave.strongAgainstMultiplier;
                    else if(spellElem == SpellElement.fire)
                        return dSpellBehave.weakAgainstMultiplier;
                    else
                        return 1.0f;
            }
        }
        return 1.0f;
    }
Esempio n. 2
0
 public Fireball(GameObject fireball, SpellProperties properties)
 {
     _fireball        = fireball;
     _initailPosition = _fireball.transform.position;
     _destination     = Vector3.Normalize(properties.Destination - _initailPosition) * range;
     Caster           = properties.Caster;
 }
 public void Damage(SpellProperties properties)
 {
     //aplly damage to health
     float resistanceMultiplier = DefensiveSpellBehaviour.spellResistanceMultiplier(gameObject, properties.spellElem);
     this.Health -= resistanceMultiplier * properties.spellDamage;
     //Sets a bool in the players UI to draw the damage indicator
     myPlayerUI.bDrawDamage = true;
 }
Esempio n. 4
0
 private void ThrowFireball()
 {
     if (spellCooldown != null)
     {
         Vector3         hitPoint   = _cameraRaycaster.hit.point;
         GameObject      fireball   = Instantiate(_fireballPrefab, gameObject.transform.position, Quaternion.identity);
         SpellProperties properties = fireball.GetComponent <SpellProperties>();
         properties.Destination = hitPoint;
         properties.Caster      = gameObject;
         spellCooldown          = 1f / spellSpeed;
     }
 }
    //multiply damage if offensive spell type is defensive spell type
    public static float spellDamageMultiplier(GameObject player, SpellElement spellElem)
    {
        Transform defensiveSpell;
        SpellProperties properties;
        DefensiveSpellBehaviour dSpellBehave;

        if(defensiveSpell = player.transform.Find("defensiveSpell")){
            properties = defensiveSpell.GetComponent<SpellProperties>();
            if(properties.spellElem == spellElem){
                dSpellBehave = defensiveSpell.GetComponent<DefensiveSpellBehaviour>();
                return dSpellBehave.damageMultiplier;
            }
        }
        return 1.0f;
    }
    // Use this for initialization
    void Start()
    {
        //start position is used to destroy object after a certain Distance
        startPos = transform.position;
        properties = GetComponent<SpellProperties>();

        GameObject[] players = GameObject.FindGameObjectsWithTag("Player");
        foreach(GameObject gameObj in players){
            if(gameObj.name != properties.parent.name
                && Vector3.Angle(transform.forward, (gameObj.transform.position - transform.position)) < maxAngle)
                    target = gameObj.transform;
        }

        rigidbody.velocity = transform.forward * movementSpeed;
    }
Esempio n. 7
0
 public void SetProps(SpellBase spell)
 {
     _spell = spell;
     _props = spell.SpellProps;
 }
 void Start()
 {
     properties = GetComponent<SpellProperties>();
     StartCoroutine("applyTexture");
 }
Esempio n. 9
0
    public void LoadSpell(SpellCard s)
    {
        if (s == null)
        {
            return;
        }

        spell = s;

        if (requiresType == true)
        {
            s.spellType.OnSetType(this);
        }

        if (damageHolder != null)
        {
            if (s.spellLogic.showPower == true)
            {
                damageHolder.GetComponent <TextMeshProUGUI>().text = s.spellLogic.power[0].ToString();
            }
            else
            {
                damageHolder.GetComponent <TextMeshProUGUI>().text = "";
            }
        }

        if (manaHolder != null)
        {
            manaHolder.GetComponent <TextMeshProUGUI>().text = s.spellLogic.mana.ToString();
        }

        for (int i = 0; i < s.properties.Count; i++)
        {
            SpellProperties sp = s.properties[i];

            SpellVisualsProperties p = GetProperty(sp.spellElement);



            if (p == null)
            {
                continue;
            }

            if (sp.spellElement is SpellElementInt)
            {
                p.textUI.text = sp.intValue.ToString();
            }
            else if (sp.spellElement is SpellElementText)
            {
                p.textUI.text = sp.stringValue;
            }
            else if (sp.spellElement is SpellElementImage)
            {
                p.img.sprite = sp.sprite;
            }
            else if (sp.spellElement is SpellElementSprite)
            {
                p.spr.sprite = sp.sprite;
            }
            else if (sp.spellElement is SpellElementCombatText)
            {
                p.text.text = sp.stringValue;
            }
        }
    }
Esempio n. 10
0
    // Use this for initialization
    void Start()
    {
        SpellProperties properties = gameObject.GetComponent <SpellProperties>();

        _fireball = new Fireball(gameObject, properties);
    }