• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

TFS 1.X+ Weapon damage and distance 'miss' hit

roriscrave

Advanced OT User
Joined
Dec 7, 2011
Messages
1,210
Solutions
35
Reaction score
207
Where in source i can change damage of weapons, and edit 'miss' for distance weapons?
I'm using tfs1.3
 
could someone explain it for me?
C++:
uint32_t skill = player->getSkillLevel(SKILL_DISTANCE);

what this chance means? what formula return?

C:
int32_t chance;
    if (it.hitChance == 0) {
        //hit chance is based on distance to target and distance skill
        uint32_t skill = player->getSkillLevel(SKILL_DISTANCE);
        const Position& playerPos = player->getPosition();
        const Position& targetPos = target->getPosition();
        uint32_t distance = std::max<uint32_t>(Position::getDistanceX(playerPos, targetPos), Position::getDistanceY(playerPos, targetPos));

        uint32_t maxHitChance;
        if (it.maxHitChance != -1) {
            maxHitChance = it.maxHitChance;
        } else if (it.ammoType != AMMO_NONE) {
            //hit chance on two-handed weapons is limited to 90%
            maxHitChance = 90;
        } else {
            //one-handed is set to 75%
            maxHitChance = 75;
        }

        if (maxHitChance == 75) {
            //chance for one-handed weapons
            switch (distance) {
                case 1:
                case 5:
                    chance = std::min<uint32_t>(skill, 74) + 1;
                    break;
                case 2:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 28) * 2.40f) + 8;
                    break;
                case 3:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 45) * 1.55f) + 6;
                    break;
                case 4:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 58) * 1.25f) + 3;
                    break;
                case 6:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 90) * 0.80f) + 3;
                    break;
                case 7:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 104) * 0.70f) + 2;
                    break;
                default:
                    chance = it.hitChance;
                    break;
            }
        } else if (maxHitChance == 90) {
            //formula for two-handed weapons
            switch (distance) {
                case 1:
                case 5:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 74) * 1.20f) + 1;
                    break;
                case 2:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 28) * 3.20f);
                    break;
                case 3:
                    chance = std::min<uint32_t>(skill, 45) * 2;
                    break;
                case 4:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 58) * 1.55f);
                    break;
                case 6:
                case 7:
                    chance = std::min<uint32_t>(skill, 90);
                    break;
                default:
                    chance = it.hitChance;
                    break;
            }
        } else if (maxHitChance == 100) {
            switch (distance) {
                case 1:
                case 5:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 73) * 1.35f) + 1;
                    break;
                case 2:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 30) * 3.20f) + 4;
                    break;
                case 3:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 48) * 2.05f) + 2;
                    break;
                case 4:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 65) * 1.50f) + 2;
                    break;
                case 6:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 87) * 1.20f) - 4;
                    break;
                case 7:
                    chance = static_cast<uint32_t>(std::min<uint32_t>(skill, 90) * 1.10f) + 1;
                    break;
                default:
                    chance = it.hitChance;
                    break;
            }
        } else {
            chance = maxHitChance;
        }
    } else {
        chance = it.hitChance;
    }
 

Similar threads

Replies
3
Views
460
Back
Top