Ejemplo n.º 1
0
void Hero::onGiveHit(Object* to, int damage)
{
    Character::onGiveHit(to, damage);
    showStats();
    if (to->getObjectType() & OBJECT_TYPE_CHARACTER && damage)
    {
        Character* target = (Character*)to;

        int levelDiff = target->getLevel() - getLevel();
        float factor = levelDiff >= 0 ? levelDiff+1 : -1.0f/levelDiff;
        int dxp = damage * factor;

        addXp(dxp);

        if (target->getHp() <= 0)
        {
            addXp(target->getLevel() * 10 * factor);
        }
    }
}
Ejemplo n.º 2
0
void Player::add(LineInfo& lineInfo) {
    timeOfLastAction = lineInfo.time;
    if (startTime == 0) {
        // Set the start time on the first action made.
        startTime = lineInfo.time;
    }
    if (lineInfo.type == LineType::damage ||
		lineInfo.type == LineType::heal ||
		lineInfo.type == LineType::nano) {
        affectedPlayers->addToPlayers(lineInfo);
    }
    else if (lineInfo.type == LineType::nanoCast) {
        nanoPrograms.add(lineInfo);
    }
    else if (lineInfo.type == LineType::xp ||
             lineInfo.type == LineType::sk ||
             lineInfo.type == LineType::research ||
             lineInfo.type == LineType::aixp ||
             lineInfo.type == LineType::pvpSoloScore ||
             lineInfo.type == LineType::pvpTeamScore) {
        addXp(lineInfo);
    }
}