Ejemplo n.º 1
0
    public override float cast(gameChar source, gameChar target, int currentRound)
    {
        float effectingVal = 0;
        int   chance       = Random.Range(0, 100);

        if (chance < 40)
        {
            return(0);
        }

        effectingVal = effectVal * (source.getAttVal() + source.getAttMod()) - (target.getDefVal() + target.getDefMod());
        //damage = val * att - def
        if (effectingVal <= 0)
        {
            effectingVal = 1;                           //if no damage, set damage to 1
        }
        effectingVal = -(effectingVal);
        if (Mathf.Abs(effectingVal) >= target.getCurrentHP())
        {
            effectingVal = -(target.getCurrentHP());
        }
        //if damage > current health, set difference = currentHP (currentHP - currentHP = 0)
        setTargetParam(target, 0, (int)(effectingVal));
        return(-(effectingVal));                //effectingVal must be <0 and negate it
    }
Ejemplo n.º 2
0
    public void randomEquipment(int lvCap, gameChar ownedChar)                  //random setter with known lv and owner
    {
        eqName      = "random equipment";
        description = "random equipment";
        eqtype      = (eqType)(Random.Range(0, gameChar.wearingNum));
        owner       = ownedChar;
        lv          = lvCap;
        int randNum = Random.Range(0, 100);                     // rand a number and distribute percentage

        if (randNum < 20)
        {
            rank = 1;
        }
        else if (randNum < 60)
        {
            rank = 2;
        }
        else if (randNum < 90)
        {
            rank = 3;
        }
        else
        {
            rank = 4;
        }
        for (int i = 0; i < rank; i++)
        {
            attribute attr    = (attribute)(Random.Range(0, 5f));
            float     attrVal = (Random.Range(1, 10) * lv);
            attributePair[i] = new Pair <attribute, float>(attr, attrVal);
        }
    }
Ejemplo n.º 3
0
    public override float cast(gameChar source, gameChar target, int currentRound)
    {
        float sourceMP = source.getCurrentMP();

        if (sourceMP < cost)
        {
            return(-1);
        }
        source.setCurrentMP(sourceMP - cost);

        float effectingVal = 0;
        float magicDef     = target.getIntVal() + target.getIntMod();

        effectingVal = effectVal * (source.getIntVal() + source.getIntMod()) * 1 + magicDef;
        //value = -(spellAmount * intelligence * amplifier - targetIntelligence)
        if (effectingVal <= 0)
        {
            effectingVal = 1;                                   //if no damage, set damage to 1
        }
        effectingVal = -(effectingVal);
        if (Mathf.Abs(effectingVal) >= target.getCurrentHP())
        {
            effectingVal = -(target.getCurrentHP());
        }
        //if damage > current health, set difference = currentHP (currentHP - currentHP = 0)
        base.setTargetParam(target, 0, (int)(effectingVal));
        return(-(effectingVal));                //effectingVal must be <0 and negate it
    }
Ejemplo n.º 4
0
    public float attackChar(gameChar target)            //attack function
    {
        float ownAttack     = getAttVal() + attMod;
        float targetDefense = target.getDefVal() + target.getDefMod();
        float damage        = (ownAttack - targetDefense) * 1.5f;

        if (damage <= 0)
        {
            damage = 1;
        }
        return(damage);
    }
Ejemplo n.º 5
0
    public void setTargetParam(gameChar target, int field, int effectVal)
    {
        switch (field)
        {
        case 0: target.setCurrentHP(target.getCurrentHP() + effectVal); break;

        case 1: target.setCurrentMP(target.getCurrentMP() + effectVal); break;

        case 2: target.setAttMod(target.getAttMod() + effectVal); break;

        case 3: target.setDefMod(target.getDefMod() + effectVal); break;

        case 4: target.setIntMod(target.getIntMod() + effectVal); break;
        }
    }
Ejemplo n.º 6
0
    public void setTargetParam(gameChar target, int field, int effectVal)
    {
        switch (field)
        {
        case 0: target.setAttr <float>("currentHP", target.getAttr <float>("currentHP") + effectVal); break;

        case 1: target.setAttr <float>("currentMP", target.getAttr <float>("currentMP") + effectVal); break;

        case 2: target.setAttr <float>("attMod", target.getAttr <float>("attMod") + effectVal); break;

        case 3: target.setAttr <float>("defMod", target.getAttr <float>("defMod") + effectVal); break;

        case 4: target.setAttr <float>("intMod", target.getAttr <float>("intMod") + effectVal); break;
        }
    }
Ejemplo n.º 7
0
    public override float cast(gameChar source, gameChar target, int currentRound)
    {
        float sourceMP = source.getCurrentMP();

        if (sourceMP < cost)
        {
            return(-1);
        }
        source.setCurrentMP(sourceMP - cost);

        float effectingVal = 0;

        effectingVal = effectVal * source.getIntVal() * 0.1f;
        target.decreaseAttr(field, effectingVal, currentRound);
        return(effectingVal);
    }
Ejemplo n.º 8
0
 public equipment(string name, gameChar ownedBy, string eqDescription, int lvCap, eqType equipType, int eqRank, Pair <attribute, float>[] attrPair)
 {
     eqtype      = equipType;
     eqName      = name;
     owner       = ownedBy;
     description = eqDescription;
     lv          = lvCap;
     if (eqRank > 4)
     {
         eqRank = 4;
     }
     rank = eqRank;
     for (int i = 0; i < 4; i++)
     {
         attributePair[i] = attrPair[i];
     }
 }
Ejemplo n.º 9
0
    public bool unEquipChar(gameChar equiped)
    {
        for (int i = 0; i < rank; i++)                  //for each rank, unset owner's attribute
        {
            float effectingVal = attributePair[i].second;
            switch ((int)(attributePair[i].first))
            {
            case 0: {
                equiped.setMaxHP(equiped.getMaxHP() - effectingVal);
                equiped.setCurrentHP(equiped.getCurrentHP() - effectingVal);
                break;
            }

            case 1: {
                equiped.setMaxMP(equiped.getMaxMP() - effectingVal);
                equiped.setCurrentMP(equiped.getCurrentMP() - effectingVal);
                break;
            }

            case 2: {
                equiped.setAttack(equiped.getAttack() - effectingVal);
                break;
            }

            case 3: {
                equiped.setDefense(equiped.getDefense() - effectingVal);
                break;
            }

            case 4: {
                equiped.setIntelligence(equiped.getIntelligence() - effectingVal);
                break;
            }

            default: {
                return(false);

                break;
            }
            }
        }
        return(true);
    }
Ejemplo n.º 10
0
    public bool equipChar(gameChar equiped)
    {
        for (int i = 0; i < rank; i++)                  //for each rank, set the owner's attribute
        {
            float effectingVal = attributePair[i].second;
            switch ((int)(attributePair[i].first))
            {
            case 0: {
                equiped.setAttr <float>("maxHP", equiped.getAttr <float>("maxHP") + effectingVal);
                equiped.setAttr <float>("currentHP", equiped.getAttr <float>("currentHP") + effectingVal);
                break;
            }

            case 1: {
                equiped.setAttr <float>("maxMP", equiped.getAttr <float>("maxMP") + effectingVal);
                equiped.setAttr <float>("currentMP", equiped.getAttr <float>("currentMP") + effectingVal);
                break;
            }

            case 2: {
                equiped.setAttr <float>("attack", equiped.getAttr <float>("attack") + effectingVal);
                break;
            }

            case 3: {
                equiped.setAttr <float>("defense", equiped.getAttr <float>("defense") + effectingVal);
                break;
            }

            case 4: {
                equiped.setAttr <float>("intelligence", equiped.getAttr <float>("intelligence") + effectingVal);
                break;
            }

            default: {
                return(false);

                break;
            }
            }
        }
        return(true);
    }
Ejemplo n.º 11
0
    public override float cast(gameChar source, gameChar target, int currentRound)
    {
        float sourceMP = source.getCurrentMP();

        if (sourceMP < cost)
        {
            return(-1);
        }
        source.setCurrentMP(sourceMP - cost);

        float effectingVal = 0;

        effectingVal = effectVal * (source.getIntVal() + source.getIntMod()) * 1;
        //value = spellAmount * intelligence * amplifier
        if ((target.getCurrentHP() + effectingVal) >= target.getMaxHP())
        {
            effectingVal = target.getMaxHP() - target.getCurrentHP();
        }
        //if amount + current health > max health, set difference = max hp - current hp
        setTargetParam(target, 0, (int)(effectingVal));
        return(effectingVal);                   //effectingVal must be <0 and negate it
    }
Ejemplo n.º 12
0
 public bool setOwner(gameChar ch)           //change owner
 {
     owner = ch;
     return(true);
 }
Ejemplo n.º 13
0
 public virtual void printEffect(gameChar source, gameChar target, float value)
 {
 }
Ejemplo n.º 14
0
 public virtual float cast(gameChar source, gameChar target, int currentRound)
 {
     return(0);
 }
Ejemplo n.º 15
0
 public override void printEffect(gameChar source, gameChar target, float value)
 {
     //cout << source.getName() << "has casted " << skillName << ", dealing " << value << " damage to " << target.getName() << endl;
 }