Recent content by K700

  1. K700

    Warband Script Enhancer 2 (v1.1.2.0)

  2. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    WSE2 does not change the gameplay of the vanilla warband. All new features should be used by modders in their mods.
  3. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    Hi there, I remember that in old version (I Don't remember but like 3-5 months ago) I can edit the weapons proficiency and it doesn't change when i hit enemy but now it's return to 1,000 cap again. i wonder if there are any setting rgl_config i can change like the attribute one ? Thanks a lot !

    (P.S The proficiency cap working for all the module btw)
    Proficiency can't be set above 1000
  4. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    Hello.K700 can you show how code about native calculate base party speed?
    I want to know what can affect it.
    https://earendil_ardamire.gitlab.io/modding-guide/Subpages/Documentation_Module_System/Module_Parties.html#Party_Speed
  5. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    Could you please add the comparison between the original formulas and the ones these options use:
    - bAdjustedAttackHoldFactor
    - bAdjustedCrushthrough
    - bAdjustedTwoHandedAndPolearmPenalties
    - bAdjustedShieldSkillDamage
    - bAdjustedStagger
    - bAdjustedKnockdown
    - bParry
    Also could you please add the code for chamber success calculation? I have been testing it for bots and it seems to work in most cases but I feel like I'm still missing something important
    Code:
    chamber
    
    if (defendPhase < 0)
    {
        if (dstAttackPhase != ap_ready)
            return 0;
    
        float progress = dstAgent->m_actionChannels[1].m_progress;
    
        if (srcAttackType == at_overswing)
        {
            if (dstAttackType != at_overswing)
                return 0;
        }
        else if (srcAttackType == at_swing_left)
        {
            if (dstAttackType != at_swing_right)
                return 0;
        }
        else if (srcAttackType == at_swing_right)
        {
            if (dstAttackType != at_swing_left)
                return 0;
        }
        else
        {
            if (dstAttackType == at_overswing)
            {
                if (hasUpperStab)
                    return 0;
            }
            else if (dstAttackType != at_thrust)
            {
                return 0;
            }
        }
    
        if (rglBetween(progress, 0.3f, 0.7f) && (rglConfig::Battle::bCouchedLanceChambered || !srcAgent->isCouching()))
            return mct_chambered;
    
        return 0;
    }
    
    bAdjustedAttackHoldFactor
    
    float mbAttack::getHoldFactor()
    {
        float factor;
    
        if (rglConfig::Battle::bAdjustedAttackHoldFactor)
        {
            if (m_holdTime < 0.5f)
                factor = m_holdTime + 1.0f;
            else if (m_holdTime < 0.6f)
                factor = 1.5f;
            else if (m_holdTime < 1.1f)
                factor = 1.2f + (1.1f - m_holdTime) * 0.6f;
            else
                factor = 1.2f - (m_holdTime - 1.1f) * 0.3f;
    
            return rglClamp(factor, 0.5f, 1.5f);
        }
        else
        {
            if (m_holdTime < 0.5f)
                factor = m_holdTime + 1.0f;
            else if (m_holdTime < 0.6f)
                factor = 1.5f;
            else if (m_holdTime < 1.1f)
                factor = 1.2f + (1.1f - m_holdTime) * 0.6f;
            else
                factor = 1.2f;
    
            return rglClamp(factor, 1.0f, 2.0f);
        }
    }
    
    bAdjustedCrushthrough
    
    bool mbMission::checkCrushthrough(int agentNo, mbBlow &blow, mbAttack &attack)
    {
        float crushFactor = blow.m_damageType != dt_cut ? 3.0f : 2.0f;
        float defendFactor = 1.0f;
    
        mbAgent *defendAgent = getAgent(agentNo);
        mbItem defendItem = defendAgent->getWieldedItem(ah_secondary);
    
        if (!defendItem.isValid() || defendItem.isNotShield())
            defendItem = defendAgent->getWieldedItem(ah_primary);
    
        if (rglConfig::Battle::bAdjustedCrushthrough)
        {
            crushFactor *= (blow.m_rawDamage + 40.0f) / 40.0f * 0.4f;
    
            if (blow.m_item.isValid())
            {
                mbItemKind *itemKind = blow.m_item.getItemKind();
    
                if (!(itemKind->m_properties & itp_crush_through))
                    return false;
    
                if (itemKind->m_properties & itp_two_handed)
                    crushFactor *= 1.5f;
    
                crushFactor *= (itemKind->m_weight + 10.0f) / 10.0f;
            }
    
            crushFactor *= rglPow(attack.getHoldFactor(), 1.5f);
    
            if (defendItem.isValid())
            {
                mbItemKind *defendItemKind = defendItem.getItemKind();
    
                if (defendItemKind->isShield())
                {
                    defendFactor = 1.0f + defendItemKind->m_weight * 0.4f;
                }
                else
                {
                    defendFactor = 3.0f + defendItemKind->m_weight * 0.5f;
    
                    if (defendItemKind->m_properties & itp_two_handed)
                        defendFactor *= 1.2f;
                }
            }
        }
        else
        {
            crushFactor *= blow.m_rawDamage * 0.02f;
    
            if (blow.m_item.isValid())
            {
                mbItemKind *itemKind = blow.m_item.getItemKind();
    
                if (itemKind->getType() == itp_type_two_handed || itemKind->getType() == itp_type_polearm)
                    crushFactor *= 2.0f;
    
                if (!(itemKind->m_properties & itp_crush_through))
                    crushFactor = 0.0f;
    
                crushFactor *= (itemKind->m_weight + 4.0f) / 5.0f;
            }
    
            if (attack.m_power > 1.25f)
                crushFactor *= 1.3f;
    
            if (attack.m_type == at_thrust)
                crushFactor *= 0.5f;
    
            if (defendItem.isValid())
            {
                mbItemKind *defendItemKind = defendItem.getItemKind();
    
                defendFactor = defendItemKind->m_weight * 0.2f + 5.0f;
    
                if (defendItemKind->getType() == itp_type_two_handed || defendItemKind->getType() == itp_type_polearm)
                    defendFactor *= 1.2f;
            }
        }
    
        return rglConfig::Battle::fCrushthroughThreshold < crushFactor / defendFactor;
    }
    
    bAdjustedTwoHandedAndPolearmPenalties
    
    if (type == itp_type_two_handed || type == itp_type_polearm)
    {
        if (rglConfig::Battle::bAdjustedTwoHandedAndPolearmPenalties)
        {
            if (srcAgent->hasMount())
            {
                if (type == itp_type_polearm)
                    damage *= 0.75f;
    
                if (itemKind->m_properties & itp_two_handed)
                    damage *= 0.8f;
            }
            else if (shieldItem.isValid())
            {
                damage *= 0.9f;
            }
        }
        else
        {
            if (shieldItem.isValid() || srcAgent->hasMount())
            {
                damage *= 0.85f;
    
                if (type == itp_type_polearm)
                    damage *= 0.85f;
    
                if (itemKind->m_properties & itp_two_handed)
                    damage *= 0.9f;
            }
        }
    }
    bAdjustedShieldSkillDamage
    
    damage = (rglConfig::Battle::bAdjustedShieldSkillDamage) ? rglRound(damage * (1.0f - (0.1f + g_game->getTroopSkill(m_troopNo, skl_shield, true) * 0.06f))) : (int)(damage * (1.0f - g_game->getTroopSkill(m_troopNo, skl_shield, true) * 0.08f));
    
    bAdjustedStagger and bAdjustedKnockdown 
    
    if (itemKind && (itemKind->isRangedWeapon() || itemKind->getType() == itp_type_polearm && !(itemKind->m_properties & itp_can_knock_down)) || m_blow.hasFlags(blf_stagger))
    {
                    if (!noInterrupt)
                    {
                        if (rglConfig::Battle::bAdjustedStagger)
                        {
                            if (m_blow.hasFlags(blf_stagger) ||
                                itemKind->getType() == itp_type_polearm && rglRandf() < 0.5f && m_blow.m_rawDamage > 15.0f && rglConfig::Battle::bPolearmStagger || //FEATURE: use a flag
                                itemKind->getType() == itp_type_thrown && rglRandf() < (0.4f + staggerAdd) && inflictedDamage > (25.0f + staggerChanceAdd) ||
                                itemKind->getType() == itp_type_bow && rglRandf() < (0.3f + staggerAdd) && inflictedDamage > (20.0f + staggerChanceAdd) ||
                                itemKind->getType() == itp_type_crossbow && rglRandf() < (0.3f + staggerAdd) && inflictedDamage > (20.0f + staggerChanceAdd))
                            {
                                lowerActionNo = getStrikeAction(2);
                                knockBack = true;
                                knockBackForce = m_blow.m_direction * rglRandf(2.1f, 2.3f);
                            }
                            else
                            {
                                upperActionNo = getStrikeAction(1);
                            }
                        }
                        else
                        {
                            if (m_blow.hasFlags(blf_stagger) ||
                                itemKind->getType() == itp_type_polearm && rglRandf() < 0.5f && m_blow.m_rawDamage > 15.0f && rglConfig::Battle::bPolearmStagger || //FEATURE: use a flag
                                itemKind->getType() == itp_type_thrown && rglRandf() < 0.4f && m_blow.m_rawDamage > 15.0f ||
                                itemKind->getType() == itp_type_bow && rglRandf() < 0.3f && m_blow.m_rawDamage > 25.0f ||
                                itemKind->getType() == itp_type_crossbow && rglRandf() < 0.3f && m_blow.m_rawDamage > 25.0f)
                            {
                                lowerActionNo = getStrikeAction(2);
                                knockBack = true;
                                knockBackForce = m_blow.m_direction * rglRandf(2.1f, 2.3f);
                            }
                            else
                            {
                                lowerActionNo = getStrikeAction(1);
                            }
                        }
                    }
    }
    else if (rglConfig::Battle::bAdjustedKnockdown && (m_blow.hasFlags(blf_horse_charge) && m_blow.m_rawDamage > 10.0f ||
                    (rglClamp((itemKind ? itemKind->m_weight : 1.0f) * 0.33f, 1.0f, 2.0f) * rglClamp((m_blow.m_rawDamage - 40.0f) * kdRawDamageMult, itemKind ? 5.0f : 2.5f, 15.0f) * 0.015f > (rglRandf() + kdRandAdd)) && m_blow.m_damageType == dt_blunt) &&
                    !m_blow.hasFlags(blf_crushthrough) && !m_blow.hasFlags(blf_no_knockdown) && (!itemKind || itemKind->m_properties & itp_can_knock_down) && m_actionChannels[0].m_actionNo != anim_strike_fall_back_rise)
    {
                    lowerActionNo = anim_strike_fall_back_rise;
                    upperActionNo = anim_strike_fall_back_rise_upper;
                    knockBack = true;
                    knockBackForce = m_movementDir * -0.6f;
    
                    if (m_blow.hasFlags(blf_horse_charge))
                        knockBackForce += m_blow.m_direction * rglRandf(1.5f, 1.9f);
    }
    else if (!rglConfig::Battle::bAdjustedKnockdown && (m_blow.hasFlags(blf_horse_charge) && m_blow.m_rawDamage > 10.0f || 
                    (rglMin((itemKind ? itemKind->m_weight : 1.0f) * 0.33f, 2.0f) * rglMin((m_blow.m_rawDamage - 20.0f) * 0.5f, 10.0f) * 0.015f > rglRandf()) && m_blow.m_damageType == dt_blunt) &&
                    !m_blow.hasFlags(blf_crushthrough) && (!itemKind || itemKind->m_properties & itp_can_knock_down) && m_actionChannels[0].m_actionNo != anim_strike_fall_back_rise)
    {
                    lowerActionNo = anim_strike_fall_back_rise;
                    upperActionNo = anim_strike_fall_back_rise_upper;
                    knockBack = true;
                    knockBackForce = m_movementDir * -0.6f;
    
                    if (m_blow.hasFlags(blf_horse_charge))
                        knockBackForce += m_blow.m_direction * rglRandf(1.5f, 1.9f);
    }
    else
    {
                    upperActionNo = getStrikeAction(1);
    
                    if (m_blow.hasFlags(blf_horse_charge) || m_blow.m_rawDamage > 15.0f && rglRandf() < 0.3f)
                    {
                        knockBack = true;
                        knockBackForce = m_blow.m_direction * rglRandf(0.6f, 1.6f) * (m_blow.m_rawDamage + 30.0f) * 0.02f + m_scaledTransform.s * rglRandf(-0.5f, 0.5f) * 0.5f;
                    }
    }
    
    bParry 
    
    else if (rglConfig::Battle::bParry && wasDefending && m_defendTimer.getElapsedTime() < 0.15f && m_parryTimer.getElapsedTime() > 1.0f)
    {
        m_parryTimer.reset();
        m_isParry = true;
    }
    
    m_defendAction = m_isParry ? da_parrying : da_blocking;
  6. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    Before I start writing, please understand that I used a translator because I am not good at English.
    I'm a user who was playing warsword conquest with WSE2.
    But the game hasn't been running since yesterday.
    I can operate the launcher, but the 'play M&B Warband WSE2' button does not work.
    Other functions, such as options, exit, and module selection, all work well.
    Neither the DLC nor any other modules, including native, will run.
    I reinstalled the game after deleting it and installed wse2 but it still doesn't work.
    I experienced the same issue and couldn't solve it when I was doing the previous version of 1.1.1.9, but it was solved when I upgraded to version 1.1.2.0, but the same problem occurred again and I'm asking for help.
    Try adding wse2 to your antivirus exceptions
  7. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    how long excatly? because i would not play again until i can use controller. And thanks man you are great, if it wasn't for wse 2 i could not have played warband year ago without this much performance.
    After the scene editor. I can’t give exact dates.
  8. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    Hello. Controller support is planned, but with low priority.
  9. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    2. Image freezes completely but game continues at background. It only happened with WSE2.

    Happens in Native with large battles 300-500 troops.
    Happens every time in Warsword Conquest dungeon room with barrels. Picture

    Solution: Uncheck «Use Instancing» in video options.
    The problem does not reproduce for me, not in Native, not in Warsword in this room. What video card do you have? Try updating your video card drivers
  10. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    Hello. It seems that the latest update is causing a weird bug. When the player character is on foot and attacks an enemy all units get frozen in place (they can still attack), including the player character (the move controls just stop working). I tested this on the normal game launcher and this bug does not occur.
    Need detailed information, what mod, under what circumstances this happens. Also send your save right before this bug occurs.
  11. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    2. Image freezes completely but game continues at background. It only happened with WSE2.

    Happens in Native with large battles 300-500 troops.
    Happens every time in Warsword Conquest dungeon room with barrels. Picture

    Solution: Uncheck «Use Instancing» in video options.

    I can't reproduce this problem. Please send yours Documents\Mount&Blade Warband WSE2\rgl_config.ini
  12. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    Got some failed to get skeleton animation warning, already try to clean install the game and play without mod but the warning still here. Not happen on the vanilla Warband without WSE2. Anyone know what happen or how to fix it? Is that because I don't own both of the DLC?
    Log File
    This is not a bug and does not need to be fixed. This is just information that these hardcoded animations are not used in native.
  13. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    1)I already said that this is a problem with scripts, the engine cannot solve this.
    2)I check. Can you also send me save from Warsword Conquest with this barrels room?
    3)Remove Print Screen key from controls WSE2 menu.
  14. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    Hi, the mod
    RENAISSANCE's sub-mod:18th Appenninica v1.1.2R
    crahes to desktop due to some error with the item_kinds1 file
    Thanks for report, will be fixed in the next update.
  15. K700

    Warband Script Enhancer 2 (v1.1.2.0)

    Hi, the mod
    RENAISSANCE's sub-mod:18th Appenninica v1.1.2R
    crahes to desktop due to some error with the item_kinds1 file
    This crash is not present on the vanilla engine?
Back
Top Bottom