Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions [gamemodes]/[race]/race/edf/race.edf
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<setting name="firewater" friendlyname="Fire water" type="selection:true,false" default="false" description="Whether to explode the player when entering the water." required="false"/>
<setting name="vehicle_physics_mode" friendlyname="Vehicle physics mode" type="selection:fixed,legacy" description="Sets the vehicle physics mode. Use fixed (recommended) for FPS-independent physics, or legacy to use FPS-dependent physics." required="false"/>
<setting name="vehicle_physics_fps" friendlyname="Vehicle physics FPS" type="string" description="FPS limit to use when vehicle physics mode is set to legacy. This setting changes the limit: -1 = leave unchanged, 0 = unlimited, 25+ = specific limit." required="false"/>
<setting name="non_race_vehicle_collisions" friendlyname="Non-Race vehicle collisions" type="selection:true,false" description="Set to true to enable collisions with vehicles not created by the race gamemode. Ghost mode must be disabled." default="false" required="false"/>

<element name="spawnpoint" friendlyname="Spawnpoint" icon="edf/spawnpoint.png">
<data name="position" type="coord3d" default="0,0,0" />
Expand Down
8 changes: 8 additions & 0 deletions [gamemodes]/[race]/race/meta.xml
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,13 @@
desc="FPS limit to use when vehicle physics mode is set to legacy. This setting changes the limit: -1 = leave unchanged, 0 = unlimited, 25+ = specific limit."
/>

<setting name="*non_race_vehicle_collisions" value="false"
friendlyname="Non-Race vehicle collisions"
group="Gameplay"
accept="false,true"
desc="Set to true to enable collisions with vehicles not created by the race gamemode. Ghost mode must be disabled."
/>

<setting name="*ghostmode_map_can_override" friendlyname="Ghost mode map override" group="Gameplay" value="true" accept="false,true" desc="Set to true to allow the map to override this setting"/>
<setting name="*skins_map_can_override" friendlyname="Driver skin map override" group="Graphics" value="true" accept="false,true" desc="Set to true to allow the map to override this setting"/>
<setting name="*vehicleweapons_map_can_override" friendlyname="Vehicle weapons map override" group="Gameplay" value="true" accept="false,true" desc="Set to true to allow the map to override this setting"/>
Expand All @@ -344,6 +351,7 @@

<setting name="*vehicle_physics_mode_map_can_override" friendlyname="Vehicle physics mode map override" group="Gameplay" value="true" accept="false,true" desc="Set to true to allow the map to override this setting"/>
<setting name="*vehicle_physics_fps_map_can_override" friendlyname="Vehicle physics FPS map override" group="Gameplay" value="true" accept="false,true" desc="Set to true to allow the map to override this setting"/>
<setting name="*non_race_vehicle_collisions_map_can_override" friendlyname="Non-Race vehicle collisions map override" group="Gameplay" value="true" accept="false,true" desc="Set to true to allow the map to override this setting"/>
</settings>


Expand Down
8 changes: 6 additions & 2 deletions [gamemodes]/[race]/race/override_client.lua
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,11 @@ function OverrideClient.updateVars( element )
end

function isCollideOthers ( element )
return ( getElementData ( element, 'race.collideothers' ) or 0 ) ~= 0
local collideothers = getElementData ( element, "race.collideothers" )
if not collideothers and getElementType( element ) == "vehicle" then
collideothers = g_MapOptions and g_MapOptions.non_race_vehicle_collisions and not g_MapOptions.ghostmode
end
return ( collideothers or 0 ) ~= 0
end

function isCollideWorld ( element )
Expand Down Expand Up @@ -120,7 +124,7 @@ if OverrideClient.debug then
end
local player = getVehicleController(vehicle)
local collisions = not isVehicleCollisionsEnabled and "n/a" or isVehicleCollisionsEnabled(vehicle)
local collideothers = getElementData ( vehicle, "race.collideothers" )
local collideothers = isCollideOthers ( vehicle )
local collideworld = getElementData ( vehicle, "race.collideworld" )
dxDrawText ( getElementDesc(vehicle), sx[1], sy )
dxDrawText ( tostring(collisions), sx[2], sy )
Expand Down
6 changes: 6 additions & 0 deletions [gamemodes]/[race]/race/race_client.lua
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,12 @@ function updateOptions ( gameoptions, mapoptions )

-- Apply
updateVehicleWeapons()

-- Update vehicle collision settings
for _, vehicle in ipairs(getElementsByType("vehicle")) do
OverrideClient.updateVars(vehicle)
end

setCloudsEnabled(g_GameOptions.cloudsenable)
setBlurLevel(g_GameOptions.blurlevel)
g_dxGUI.mapdisplay:visible(g_GameOptions.showmapname)
Expand Down
9 changes: 9 additions & 0 deletions [gamemodes]/[race]/race/race_server.lua
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,8 @@ function cacheGameOptions()
g_GameOptions.vehicle_physics_fps = getNumber('race.vehicle_physics_fps',-1)
g_GameOptions.vehicle_physics_mode_map_can_override = getBool('race.vehicle_physics_mode_map_can_override',true)
g_GameOptions.vehicle_physics_fps_map_can_override = getBool('race.vehicle_physics_fps_map_can_override',true)
g_GameOptions.non_race_vehicle_collisions = getBool("race.non_race_vehicle_collisions",false)
g_GameOptions.non_race_vehicle_collisions_map_can_override = getBool("race.non_race_vehicle_collisions_map_can_override",true)
if g_GameOptions.statskey ~= 'name' and g_GameOptions.statskey ~= 'serial' then
outputWarning( "statskey is not set to 'name' or 'serial'" )
g_GameOptions.statskey = 'name'
Expand Down Expand Up @@ -158,6 +160,7 @@ function cacheMapOptions(map)
g_MapOptions.hunterminigun = map.hunterminigun == 'true'
g_MapOptions.vehicle_physics_mode = map.vehicle_physics_mode or g_GameOptions.vehicle_physics_mode
g_MapOptions.vehicle_physics_fps = tonumber(map.vehicle_physics_fps) or g_GameOptions.vehicle_physics_fps
g_MapOptions.non_race_vehicle_collisions = map.non_race_vehicle_collisions == 'true'

outputDebug("MISC", "duration = "..g_MapOptions.duration.." respawn = "..g_MapOptions.respawn.." respawntime = "..tostring(g_MapOptions.respawntime).." time = "..g_MapOptions.time.." weather = "..g_MapOptions.weather)

Expand Down Expand Up @@ -225,6 +228,11 @@ function cacheMapOptions(map)
g_MapOptions.vehicle_physics_fps = g_GameOptions.vehicle_physics_fps
end

-- Set non_race_vehicle_collisions from g_GameOptions if not defined in the map, or map override not allowed
if not map.non_race_vehicle_collisions or not g_GameOptions.non_race_vehicle_collisions_map_can_override then
g_MapOptions.non_race_vehicle_collisions = g_GameOptions.non_race_vehicle_collisions
end

if g_MapOptions.vehicle_physics_mode == "fixed" then
if g_OriginalVehiclePhysicsGlitchState == nil then
g_OriginalVehiclePhysicsGlitchState = isGlitchEnabled("vehicle_rapid_stop")
Expand Down Expand Up @@ -290,6 +298,7 @@ function loadMap(res)
g_SavedMapSettings.hunterminigun = map.hunterminigun
g_SavedMapSettings.vehicle_physics_mode = map.vehicle_physics_mode
g_SavedMapSettings.vehicle_physics_fps = map.vehicle_physics_fps
g_SavedMapSettings.non_race_vehicle_collisions = map.non_race_vehicle_collisions

cacheMapOptions(g_SavedMapSettings)

Expand Down
2 changes: 1 addition & 1 deletion [gamemodes]/[race]/race/racemap.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ g_MapObjAttrs = {
g_MapSettingNames = table.create(
{'time', 'weather', 'respawn', 'respawntime', 'duration', 'skins', 'bikehats', 'bikehatchance', 'carhats', 'carhatchance',
'hairstyles', 'glasses', 'glasseschance', 'shirts', 'trousers', 'shoes',
'ghostmode', 'vehicleweapons', 'autopimp', 'firewater', 'classicchangez', 'hunterminigun', 'vehicle_physics_mode', 'vehicle_physics_fps'},
'ghostmode', 'vehicleweapons', 'autopimp', 'firewater', 'classicchangez', 'hunterminigun', 'vehicle_physics_mode', 'vehicle_physics_fps', 'non_race_vehicle_collisions'},
true
)

Expand Down
Loading