use dropbox or google drive for logshow do i fix this crash? it appears when i click play online in full invasion osiris mod
![]()
ps: i can't send the logs here bcs it's too long.
use dropbox or google drive for logshow do i fix this crash? it appears when i click play online in full invasion osiris mod
![]()
ps: i can't send the logs here bcs it's too long.

On Linux, whatever you launch and manage games with, you'll want to run Windows Warband through Proton (Wine fork for gaming). Not familiar with Bottles, if it's like Steam or Lutris, you should be able to add the game to it and configure it to run with Proton if it doesn't automatically. As an example since it's probably a similar idea, with Steam you just right click Warband in your library, go to Properties and Compatibility, check the box, pick a Proton version, then Warband should work. Then you install WSE the same way you would following the Windows instructions.Hey I am loving WSE2 and I'm glad it is created, but I plan on swapping to linux and I saw that people got it to work via bottles but I would like to know how to perform it. And also I was curious if you lose on features compared to normally running it on windows. Thanks a bunch and if you don't want to crowd the thread please pm me.
no, this is not provided, wse2 always checks the running steam to display mods from the workshophello k700 i have a question. After the last updates wse2 launcher automatically execute the game from steam library even though i downloaded in non-steam version. I want to keep playing offsteam. Is there a way to make it possible without closing steam?

Try downloading manually instead of updating online.I did but sadly it seems that putting in the steam_api.dll from WSE2, while it does allow WSE2 to work, causes the vanilla launcher to always crash with the same error. So it's either one or the other. I'm a map maker and I can't get the map editor to work on WSE2 so I regrettably have to choose vanilla over WSE2. A shame because the previous version (1.0.9.6 i believe) worked for both
Since others have asked similar engine questions, how is agent movement speed calculated? Curious how agility and encumbrance affect it. Is it also true agility doesn't affect weapon swing speed as it was apparently intended to?
rglVector2 mbAgent::calculateMaxSpeed()
{
float sprintFactor = 1.0f;
float aiFactor = 1.0f;
float externalFactor = 1.0f;
if (m_isSprinting && m_sprintTimer.getElapsedTime() > 0.0f)
sprintFactor = rglMin(m_sprintTimer.getElapsedTime() * 0.2f, 0.2f) + 1.0f;
if (m_ai.m_behavior == aisb_run_away)
aiFactor = 1.1f;
if (m_position.z < g_mission->m_waterLevel)
externalFactor = rglMax(1.0f - (g_mission->m_waterLevel - m_position.z) * 0.5f, 0.4f);
else if (g_mission->m_weather.m_precipitationType == wpr_rain)
externalFactor = 0.9f;
float maxExternalFactor = externalFactor * aiFactor * sprintFactor * m_modifiers[am_speed];
rglVector2 maxSpeed = getBaseMaxSpeed();
maxSpeed *= aiFactor;
maxSpeed *= sprintFactor;
maxSpeed *= m_modifiers[am_speed];
int actionNo = m_actionChannels[1].m_actionNo;
if (actionNo == anim_ready_bow && m_actionChannels[1].m_progress > 0.5f)
maxSpeed.y *= 0.8f;
mbItem wieldedItem = getWieldedItem(ah_primary);
if (maxSpeed.y < 0.0f)
{
if (wieldedItem.isValid())
{
if (wieldedItem.getItemKind()->isRangedWeapon())
{
switch (actionNo)
{
case anim_ready_bow:
case anim_ready_crossbow:
case anim_ready_musket:
case anim_ready_pistol:
case anim_crouch_ready_pistol:
case anim_ready_javelin:
case anim_ready_throwing_axe:
case anim_ready_stone:
case anim_ready_throwing_knife:
case anim_release_javelin:
case anim_release_throwing_axe:
case anim_release_stone:
case anim_release_throwing_knife:
maxSpeed.y *= 0.6f;
break;
}
}
}
}
rglVector4 direction(maxSpeed.x, maxSpeed.y, 0.0f);
direction.normalize();
direction = m_groundQuad->getNormal().cross(m_scaledTransform.transformDirToParent(direction).cross(m_groundQuad->getNormal()));
direction.normalize();
float groundFactor = 1.0f;
if (direction.z <= 0.01f)
{
if (direction.z < -0.3f)
{
groundFactor = direction.z * 0.5f + 1.0f;
if (m_groundQuad->getNormal().z < 0.7f && m_groundQuad->m_flags & (bf_ladder|bf_terrain_quad))
groundFactor *= rglMax(m_groundQuad->getNormal().z - 0.2f, 0.0f) * 2 + 0.05f;
}
}
else
{
groundFactor = 1.0f - direction.z * 0.8f;
if (m_groundQuad->getNormal().z < 0.6f)
{
if (m_groundQuad->m_flags & bf_terrain_quad)
groundFactor *= rglMax(m_groundQuad->getNormal().z - 0.3f, 0.0f) / 0.3f;
else if (m_groundQuad->m_flags & bf_ladder)
groundFactor *= rglMax(m_groundQuad->getNormal().z - 0.3f, 0.0f) / 0.3f + 0.05f;
}
}
if (g_networkManager.m_extendedVersion >= 61)
{
if (m_friction.z > 0.0001f)
groundFactor *= rglMax(1.0f - m_friction.z * 0.2f, 0.0f);
else if (m_friction.z < -0.0001f)
groundFactor *= rglMax(1.0f + m_friction.z * 0.5f, 0.0f);
}
else
{
if (m_friction.z > 0.0001f)
groundFactor *= 1.0f - m_friction.z * 0.2f;
else if (m_friction.z < -0.0001f)
groundFactor *= rglMax(m_friction.z * 0.5f + 0.7f, 0.0f);
}
float maxGroundFactor = groundFactor * aiFactor * sprintFactor * m_modifiers[am_speed];
if (maxSpeed.y < -0.1f)
{
maxGroundFactor *= 0.9f;
maxExternalFactor *= 0.9f;
}
float maxSpeedFactor = maxSpeed.length();
if (maxSpeedFactor > 0.0f)
maxSpeed /= maxSpeedFactor;
maxSpeedFactor = rglMin(maxSpeedFactor, maxExternalFactor);
maxSpeedFactor = rglMin(maxSpeedFactor, maxGroundFactor);
float weightFactor = m_itemWeight;
if (wieldedItem.isValid())
weightFactor += wieldedItem.getItemKind()->getWeaponLength() * wieldedItem.getItemKind()->m_weight * 2.5f;
mbTroop *troop = getTroop();
int agility = troop->getAttribute(atr_agi);
int athletics = troop->getSkill(skl_athletics);
float troopFactor;
if (rglConfig::Battle::bCanRunFasterWithSkills)
troopFactor = ((agility + athletics * 6.0f + 25.0f) * 30.0f / (weightFactor + 30.0f) + 90.0f) / 100.0f;
else
troopFactor = ((agility * 0.7f + athletics * 3.0f + 25.0f) * 70.0f / (weightFactor + 70.0f) + 90.0f) / 100.0f;
maxSpeed *= maxSpeedFactor;
maxSpeed *= 2.5f;
maxSpeed *= troopFactor;
maxSpeed.x *= 0.95f;
return maxSpeed;
}
agility doesn't affect weapon swing speed