@@ -1413,20 +1413,34 @@ int ObjectRef::l_set_physics_override(lua_State *L)
1413
1413
if (playersao == nullptr )
1414
1414
return 0 ;
1415
1415
1416
- luaL_checktype (L, 2 , LUA_TTABLE);
1417
- playersao->m_physics_override_speed = getfloatfield_default (
1418
- L, 2 , " speed" , playersao->m_physics_override_speed );
1419
- playersao->m_physics_override_jump = getfloatfield_default (
1420
- L, 2 , " jump" , playersao->m_physics_override_jump );
1421
- playersao->m_physics_override_gravity = getfloatfield_default (
1422
- L, 2 , " gravity" , playersao->m_physics_override_gravity );
1423
- playersao->m_physics_override_sneak = getboolfield_default (
1424
- L, 2 , " sneak" , playersao->m_physics_override_sneak );
1425
- playersao->m_physics_override_sneak_glitch = getboolfield_default (
1426
- L, 2 , " sneak_glitch" , playersao->m_physics_override_sneak_glitch );
1427
- playersao->m_physics_override_new_move = getboolfield_default (
1428
- L, 2 , " new_move" , playersao->m_physics_override_new_move );
1429
- playersao->m_physics_override_sent = false ;
1416
+ if (lua_istable (L, 2 )) {
1417
+ bool modified = false ;
1418
+ modified |= getfloatfield (L, 2 , " speed" , playersao->m_physics_override_speed );
1419
+ modified |= getfloatfield (L, 2 , " jump" , playersao->m_physics_override_jump );
1420
+ modified |= getfloatfield (L, 2 , " gravity" , playersao->m_physics_override_gravity );
1421
+ modified |= getboolfield (L, 2 , " sneak" , playersao->m_physics_override_sneak );
1422
+ modified |= getboolfield (L, 2 , " sneak_glitch" , playersao->m_physics_override_sneak_glitch );
1423
+ modified |= getboolfield (L, 2 , " new_move" , playersao->m_physics_override_new_move );
1424
+ if (modified)
1425
+ playersao->m_physics_override_sent = false ;
1426
+ } else {
1427
+ // old, non-table format
1428
+ // TODO: Remove this code after version 5.4.0
1429
+ log_deprecated (L, " Deprecated use of set_physics_override(num, num, num)" );
1430
+
1431
+ if (!lua_isnil (L, 2 )) {
1432
+ playersao->m_physics_override_speed = lua_tonumber (L, 2 );
1433
+ playersao->m_physics_override_sent = false ;
1434
+ }
1435
+ if (!lua_isnil (L, 3 )) {
1436
+ playersao->m_physics_override_jump = lua_tonumber (L, 3 );
1437
+ playersao->m_physics_override_sent = false ;
1438
+ }
1439
+ if (!lua_isnil (L, 4 )) {
1440
+ playersao->m_physics_override_gravity = lua_tonumber (L, 4 );
1441
+ playersao->m_physics_override_sent = false ;
1442
+ }
1443
+ }
1430
1444
return 0 ;
1431
1445
}
1432
1446
0 commit comments