@@ -357,25 +357,27 @@ int ObjectRef::l_set_physics_override(lua_State *L)
357
357
PlayerSAO *co = (PlayerSAO *) getobject (ref);
358
358
if (co == NULL ) return 0 ;
359
359
// Do it
360
- if (!lua_isnil (L, 2 )){
361
- co->m_physics_override_speed = lua_tonumber (L, 2 );
362
- co->m_physics_override_sent = false ;
363
- }
364
- if (!lua_isnil (L, 3 )){
365
- co->m_physics_override_jump = lua_tonumber (L, 3 );
366
- co->m_physics_override_sent = false ;
367
- }
368
- if (!lua_isnil (L, 4 )){
369
- co->m_physics_override_gravity = lua_tonumber (L, 4 );
370
- co->m_physics_override_sent = false ;
371
- }
372
- if (lua_isboolean (L, 5 )) {
373
- co->m_physics_override_sneak = lua_toboolean (L, 5 );
374
- co->m_physics_override_sent = false ;
375
- }
376
- if (lua_isboolean (L, 6 )) {
377
- co->m_physics_override_sneak_glitch = lua_toboolean (L, 6 );
360
+ if (lua_istable (L, 2 )) {
361
+ co->m_physics_override_speed = getfloatfield_default (L, 2 , " speed" , co->m_physics_override_speed );
362
+ co->m_physics_override_jump = getfloatfield_default (L, 2 , " jump" , co->m_physics_override_jump );
363
+ co->m_physics_override_gravity = getfloatfield_default (L, 2 , " gravity" , co->m_physics_override_gravity );
364
+ co->m_physics_override_sneak = getboolfield_default (L, 2 , " sneak" , co->m_physics_override_sneak );
365
+ co->m_physics_override_sneak_glitch = getboolfield_default (L, 2 , " sneak_glitch" , co->m_physics_override_sneak_glitch );
378
366
co->m_physics_override_sent = false ;
367
+ } else {
368
+ // old, non-table format
369
+ if (!lua_isnil (L, 2 )){
370
+ co->m_physics_override_speed = lua_tonumber (L, 2 );
371
+ co->m_physics_override_sent = false ;
372
+ }
373
+ if (!lua_isnil (L, 3 )){
374
+ co->m_physics_override_jump = lua_tonumber (L, 3 );
375
+ co->m_physics_override_sent = false ;
376
+ }
377
+ if (!lua_isnil (L, 4 )){
378
+ co->m_physics_override_gravity = lua_tonumber (L, 4 );
379
+ co->m_physics_override_sent = false ;
380
+ }
379
381
}
380
382
return 0 ;
381
383
}
0 commit comments