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 }
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); } }
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 }
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); }
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; } }
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; } }
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); }
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]; } }
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); }
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); }
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 }
public bool setOwner(gameChar ch) //change owner { owner = ch; return(true); }
public virtual void printEffect(gameChar source, gameChar target, float value) { }
public virtual float cast(gameChar source, gameChar target, int currentRound) { return(0); }
public override void printEffect(gameChar source, gameChar target, float value) { //cout << source.getName() << "has casted " << skillName << ", dealing " << value << " damage to " << target.getName() << endl; }