mw-modpack/scripts/fier/handling-overhaul.py

710 lines
29 KiB
Python
Executable File

#!/usr/bin/env python3
import sys
import os
oldexcepthook = sys.excepthook
def newexcepthook(type,value,traceback):
oldexcepthook(type,value,traceback)
input("Press ENTER to quit.")
sys.excepthook = newexcepthook
p = os.path.join
pUp = os.path.dirname
s = False
if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'):
s = os.path.realpath(sys.executable)
else:
s = os.path.realpath(__file__)
sp = pUp(s)
os.chdir(sp)
nfsmsScript = s.replace(".py",".nfsms")
properties = """\
# This has a lot of old stuff in it, some has been updated and replaced over time lower down. I may sort it out somewhen.
### CARBON MUSCLE VALUES ###
update_field chassis replaceme AERO_CG 50
#update_field chassis replaceme AERO_COEFFICIENT 0.17
#update_field chassis replaceme DIVE_SPEED 1
update_field chassis replaceme DRAG_COEFFICIENT 0.3
update_field chassis replaceme FRONT_AXLE 1.65
update_field chassis replaceme FRONT_WEIGHT_BIAS 50
update_field chassis replaceme RENDER_MOTION 1
update_field chassis replaceme RIDE_HEIGHT Front 7
update_field chassis replaceme RIDE_HEIGHT Rear 7
update_field chassis replaceme ROLL_CENTER 11.5
#update_field chassis replaceme ROLL_SPEED 1
update_field chassis replaceme SHOCK_BLOWOUT 7
update_field chassis replaceme SHOCK_DIGRESSION Front 0.5
update_field chassis replaceme SHOCK_DIGRESSION Rear 0.5
update_field chassis replaceme SHOCK_EXT_STIFFNESS Front 45
update_field chassis replaceme SHOCK_EXT_STIFFNESS Rear 60
update_field chassis replaceme SHOCK_STIFFNESS Front 40
update_field chassis replaceme SHOCK_STIFFNESS Rear 50
update_field chassis replaceme SHOCK_VALVING Front 17
update_field chassis replaceme SHOCK_VALVING Rear 17.5
update_field chassis replaceme SPRING_PROGRESSION Front 5
update_field chassis replaceme SPRING_PROGRESSION Rear 6
update_field chassis replaceme SPRING_STIFFNESS Front 300
update_field chassis replaceme SPRING_STIFFNESS Rear 500
update_field chassis replaceme SWAYBAR_STIFFNESS Front 225
update_field chassis replaceme SWAYBAR_STIFFNESS Rear 350
#update_field chassis replaceme TRACK_WIDTH Front 1.564
#update_field chassis replaceme TRACK_WIDTH Rear 1.564
update_field chassis replaceme TRAVEL Front 10
update_field chassis replaceme TRAVEL Rear 10
#update_field chassis replaceme WHEEL_BASE 2.9718
update_field chassis replaceme_top AERO_CG 50
#update_field chassis replaceme_top AERO_COEFFICIENT 0.19
#update_field chassis replaceme_top DIVE_SPEED 1
update_field chassis replaceme_top DRAG_COEFFICIENT 0.48
update_field chassis replaceme_top FRONT_AXLE 1.65
update_field chassis replaceme_top FRONT_WEIGHT_BIAS 50
update_field chassis replaceme_top RENDER_MOTION 0.7
update_field chassis replaceme_top RIDE_HEIGHT Front 7
update_field chassis replaceme_top RIDE_HEIGHT Rear 7
update_field chassis replaceme_top ROLL_CENTER 10.75
#update_field chassis replaceme_top ROLL_SPEED 1
update_field chassis replaceme_top SHOCK_BLOWOUT 7
update_field chassis replaceme_top SHOCK_DIGRESSION Front 0.4
update_field chassis replaceme_top SHOCK_DIGRESSION Rear 0.4
update_field chassis replaceme_top SHOCK_EXT_STIFFNESS Front 63
update_field chassis replaceme_top SHOCK_EXT_STIFFNESS Rear 70
update_field chassis replaceme_top SHOCK_STIFFNESS Front 57
update_field chassis replaceme_top SHOCK_STIFFNESS Rear 60
update_field chassis replaceme_top SHOCK_VALVING Front 20
update_field chassis replaceme_top SHOCK_VALVING Rear 20
update_field chassis replaceme_top SPRING_PROGRESSION Front 7
update_field chassis replaceme_top SPRING_PROGRESSION Rear 8
update_field chassis replaceme_top SPRING_STIFFNESS Front 656
update_field chassis replaceme_top SPRING_STIFFNESS Rear 750
update_field chassis replaceme_top SWAYBAR_STIFFNESS Front 300
update_field chassis replaceme_top SWAYBAR_STIFFNESS Rear 375
#update_field chassis replaceme_top TRACK_WIDTH Front 1.564
#update_field chassis replaceme_top TRACK_WIDTH Rear 1.564
update_field chassis replaceme_top TRAVEL Front 7
update_field chassis replaceme_top TRAVEL Rear 7
#update_field chassis replaceme_top WHEEL_BASE 2.9718
update_field ecar replaceme BodyDive DegPerG 2
update_field ecar replaceme BodyDive DegPerSec 10
update_field ecar replaceme BodyDive MaxG 0.5
update_field ecar replaceme BodyRoll DegPerG 3
update_field ecar replaceme BodyRoll DegPerSec 9
update_field ecar replaceme BodyRoll MaxG 1
update_field ecar replaceme BodySquat DegPerG 3
update_field ecar replaceme BodySquat DegPerSec 10
update_field ecar replaceme BodySquat MaxG 0.5
### CARBON RX8 VALUES ###
update_field chassis replaceme AERO_CG 47.5
update_field chassis replaceme AERO_COEFFICIENT 0.195
update_field chassis replaceme DRAG_COEFFICIENT 0.35
update_field chassis replaceme FRONT_AXLE 1.38
update_field chassis replaceme FRONT_WEIGHT_BIAS 53
update_field chassis replaceme RENDER_MOTION 1
update_field chassis replaceme RIDE_HEIGHT Front 6.5
update_field chassis replaceme RIDE_HEIGHT Rear 6.5
update_field chassis replaceme ROLL_CENTER 9
update_field chassis replaceme SHOCK_BLOWOUT 6
update_field chassis replaceme SHOCK_DIGRESSION Front 0.4
update_field chassis replaceme SHOCK_DIGRESSION Rear 0.4
update_field chassis replaceme SHOCK_EXT_STIFFNESS Front 60
update_field chassis replaceme SHOCK_EXT_STIFFNESS Rear 60
update_field chassis replaceme SHOCK_STIFFNESS Front 50
update_field chassis replaceme SHOCK_STIFFNESS Rear 49
update_field chassis replaceme SHOCK_VALVING Front 24
update_field chassis replaceme SHOCK_VALVING Rear 24
update_field chassis replaceme SPRING_PROGRESSION Front 6.1
update_field chassis replaceme SPRING_PROGRESSION Rear 6.2
update_field chassis replaceme SPRING_STIFFNESS Front 432
update_field chassis replaceme SPRING_STIFFNESS Rear 375
update_field chassis replaceme SWAYBAR_STIFFNESS Front 225
update_field chassis replaceme SWAYBAR_STIFFNESS Rear 210
#update_field chassis replaceme TRACK_WIDTH Front 1.49606
#update_field chassis replaceme TRACK_WIDTH Rear 1.50622
update_field chassis replaceme TRAVEL Front 6.5
update_field chassis replaceme TRAVEL Rear 6.5
#update_field chassis replaceme WHEEL_BASE 2.69
update_field chassis replaceme_top AERO_CG 48.5
update_field chassis replaceme_top AERO_COEFFICIENT 0.23
update_field chassis replaceme_top DRAG_COEFFICIENT 0.44
update_field chassis replaceme_top FRONT_AXLE 1.38
update_field chassis replaceme_top FRONT_WEIGHT_BIAS 53.7
update_field chassis replaceme_top RENDER_MOTION 0.5
update_field chassis replaceme_top RIDE_HEIGHT Front 6.5
update_field chassis replaceme_top RIDE_HEIGHT Rear 6.5
update_field chassis replaceme_top ROLL_CENTER 8.75
update_field chassis replaceme_top SHOCK_BLOWOUT 6
update_field chassis replaceme_top SHOCK_DIGRESSION Front 0.45
update_field chassis replaceme_top SHOCK_DIGRESSION Rear 0.45
update_field chassis replaceme_top SHOCK_EXT_STIFFNESS Front 85
update_field chassis replaceme_top SHOCK_EXT_STIFFNESS Rear 90
update_field chassis replaceme_top SHOCK_STIFFNESS Front 70
update_field chassis replaceme_top SHOCK_STIFFNESS Rear 70
update_field chassis replaceme_top SHOCK_VALVING Front 24
update_field chassis replaceme_top SHOCK_VALVING Rear 24
update_field chassis replaceme_top SPRING_PROGRESSION Front 7
update_field chassis replaceme_top SPRING_PROGRESSION Rear 7
update_field chassis replaceme_top SPRING_STIFFNESS Front 550
update_field chassis replaceme_top SPRING_STIFFNESS Rear 500
update_field chassis replaceme_top SWAYBAR_STIFFNESS Front 275
update_field chassis replaceme_top SWAYBAR_STIFFNESS Rear 275
#update_field chassis replaceme_top TRACK_WIDTH Front 1.49606
#update_field chassis replaceme_top TRACK_WIDTH Rear 1.50622
update_field chassis replaceme_top TRAVEL Front 6
update_field chassis replaceme_top TRAVEL Rear 6
#update_field chassis replaceme_top WHEEL_BASE 2.69
update_field ecar replaceme BodyDive DegPerG 2
update_field ecar replaceme BodyDive DegPerSec 10
update_field ecar replaceme BodyDive MaxG 0.5
update_field ecar replaceme BodyRoll DegPerG 2.5
update_field ecar replaceme BodyRoll DegPerSec 9
update_field ecar replaceme BodyRoll MaxG 1
update_field ecar replaceme BodySquat DegPerG 4
update_field ecar replaceme BodySquat DegPerSec 10
update_field ecar replaceme BodySquat MaxG 0.5
update_field ecar replaceme SkidFX[0] 0.1
update_field ecar replaceme SkidFX[1] 1
update_field ecar replaceme SlipFX[0] 0.1
update_field ecar replaceme SlipFX[1] 1
#update_field ecar replaceme MaxTireSteer 60
#update_field ecar replaceme WheelWell 22.5
update_field pvehicle replaceme TENSOR_SCALE X 1.05
update_field pvehicle replaceme TENSOR_SCALE Y 3.6
update_field pvehicle replaceme TENSOR_SCALE Z 1.05
update_field rigidbodyspecs racers CG X 0
update_field rigidbodyspecs racers CG Y 0
update_field rigidbodyspecs racers CG Z 0
update_field rigidbodyspecs racers CG W 0
update_field rigidbodyspecs racers COLLISION_BOX_PAD X 0
update_field rigidbodyspecs racers COLLISION_BOX_PAD Y 0
update_field rigidbodyspecs racers COLLISION_BOX_PAD Z 0
update_field rigidbodyspecs racers COLLISION_BOX_PAD W 0
update_field rigidbodyspecs racers DRAG X 0
update_field rigidbodyspecs racers DRAG Y 0
update_field rigidbodyspecs racers DRAG Z 0
update_field rigidbodyspecs racers DRAG W 0
update_field rigidbodyspecs racers DRAG_ANGULAR X 0
update_field rigidbodyspecs racers DRAG_ANGULAR Y 0
update_field rigidbodyspecs racers DRAG_ANGULAR Z 0
update_field rigidbodyspecs racers DRAG_ANGULAR W 0
update_field rigidbodyspecs racers GRAVITY -9.8128
update_field rigidbodyspecs racers GROUND_ELASTICITY X 0
update_field rigidbodyspecs racers GROUND_ELASTICITY Y 0
update_field rigidbodyspecs racers GROUND_ELASTICITY Z 0
update_field rigidbodyspecs racers GROUND_ELASTICITY W 0
#update_field rigidbodyspecs racers GROUND_FRICTION[0] 0.55
#update_field rigidbodyspecs racers GROUND_FRICTION[1] 0.45
update_field rigidbodyspecs racers GROUND_MOMENT_SCALE X 1.5
update_field rigidbodyspecs racers GROUND_MOMENT_SCALE Y 3
update_field rigidbodyspecs racers GROUND_MOMENT_SCALE Z 1.5
update_field rigidbodyspecs racers GROUND_MOMENT_SCALE W 0
update_field rigidbodyspecs racers IMMOBILE_OBJECT_COLLISIONS False
update_field rigidbodyspecs racers INSTANCE_COLLISIONS_3D False
update_field rigidbodyspecs racers NATURAL_ANGULAR_DAMPING 0
update_field rigidbodyspecs racers NO_GROUND_COLLISIONS False
update_field rigidbodyspecs racers NO_OBJ_COLLISIONS False
update_field rigidbodyspecs racers NO_WORLD_COLLISIONS False
update_field rigidbodyspecs racers OBJ_ELASTICITY X 0
update_field rigidbodyspecs racers OBJ_ELASTICITY Y 0
update_field rigidbodyspecs racers OBJ_ELASTICITY Z 0.05
update_field rigidbodyspecs racers OBJ_ELASTICITY W 0
update_field rigidbodyspecs racers OBJ_FRICTION[0] 0.55
update_field rigidbodyspecs racers OBJ_FRICTION[1] 0.35
update_field rigidbodyspecs racers OBJ_MOMENT_SCALE X 4
update_field rigidbodyspecs racers OBJ_MOMENT_SCALE Y 15
update_field rigidbodyspecs racers OBJ_MOMENT_SCALE Z 3
update_field rigidbodyspecs racers OBJ_MOMENT_SCALE W 0
update_field rigidbodyspecs racers SLEEP_VELOCITY 1
update_field rigidbodyspecs racers WALL_ELASTICITY X 0
update_field rigidbodyspecs racers WALL_ELASTICITY Y 0
update_field rigidbodyspecs racers WALL_ELASTICITY Z 0
update_field rigidbodyspecs racers WALL_ELASTICITY W 0
update_field rigidbodyspecs racers WALL_FRICTION[0] 0.55
update_field rigidbodyspecs racers WALL_FRICTION[1] 0.3
update_field rigidbodyspecs racers WORLD_MOMENT_SCALE X 3
update_field rigidbodyspecs racers WORLD_MOMENT_SCALE Y 1.5
update_field rigidbodyspecs racers WORLD_MOMENT_SCALE Z 3
update_field rigidbodyspecs racers WORLD_MOMENT_SCALE W 0
update_field tires replaceme DYNAMIC_GRIP Front 1.6
update_field tires replaceme DYNAMIC_GRIP Rear 1.65
update_field tires replaceme GRIP_SCALE Front 1
update_field tires replaceme GRIP_SCALE Rear 1
update_field tires replaceme STATIC_GRIP Front 1.8
update_field tires replaceme STATIC_GRIP Rear 1.85
update_field tires replaceme STEERING 1.03
update_field tires replaceme YAW_CONTROL[0] 0
update_field tires replaceme YAW_CONTROL[1] 0.2
update_field tires replaceme YAW_CONTROL[2] 0.4
update_field tires replaceme YAW_CONTROL[3] 0.7
update_field tires replaceme YAW_SPEED 0.4
#update_field tires replaceme SECTION_WIDTH Front 245
#update_field tires replaceme SECTION_WIDTH Rear 245
#update_field tires replaceme ASPECT_RATIO Front 45
#update_field tires replaceme ASPECT_RATIO Rear 45
update_field tires replaceme_top DYNAMIC_GRIP Front 1.8
update_field tires replaceme_top DYNAMIC_GRIP Rear 1.8
update_field tires replaceme_top GRIP_SCALE Front 1.1
update_field tires replaceme_top GRIP_SCALE Rear 1.1
update_field tires replaceme_top STATIC_GRIP Front 2
update_field tires replaceme_top STATIC_GRIP Rear 2.05
update_field tires replaceme_top STEERING 1.03
update_field tires replaceme_top YAW_CONTROL[0] 0.1
update_field tires replaceme_top YAW_CONTROL[1] 0.65
update_field tires replaceme_top YAW_CONTROL[2] 0.8
update_field tires replaceme_top YAW_CONTROL[3] 1
update_field tires replaceme_top YAW_SPEED 0.4
#update_field tires replaceme_top ASPECT_RATIO Front 45
#update_field tires replaceme_top ASPECT_RATIO Rear 45
#update_field tires replaceme_top SECTION_WIDTH Front 245
#update_field tires replaceme_top SECTION_WIDTH Rear 245
update_field tires replaceme YAW_SPEED 0.25
update_field tires replaceme_top YAW_SPEED 0.25
update_field rigidbodyspecs racers WORLD_MOMENT_SCALE X 1
update_field rigidbodyspecs racers WORLD_MOMENT_SCALE Y 2
update_field rigidbodyspecs racers WORLD_MOMENT_SCALE Z 10
update_field rigidbodyspecs racers GROUND_MOMENT_SCALE X 1
update_field rigidbodyspecs racers GROUND_MOMENT_SCALE Y 2
update_field rigidbodyspecs racers GROUND_MOMENT_SCALE Z 10
update_field rigidbodyspecs racers GROUND_FRICTION[0] 0.0
update_field rigidbodyspecs racers GROUND_FRICTION[1] 0.0
update_field rigidbodyspecs racers DRAG_ANGULAR Z 100
### NO ARTIFICIAL BODY ROLL ###
update_field ecar replaceme BodyDive DegPerG 0
update_field ecar replaceme BodyDive DegPerSec 0
update_field ecar replaceme BodyDive MaxG 0.0
update_field ecar replaceme BodyRoll DegPerG 0.0
update_field ecar replaceme BodyRoll DegPerSec 0
update_field ecar replaceme BodyRoll MaxG 0
update_field ecar replaceme BodySquat DegPerG 0
update_field ecar replaceme BodySquat DegPerSec 0
update_field ecar replaceme BodySquat MaxG 0.0
### SOFT SWAYBARS ###
update_field chassis replaceme SWAYBAR_STIFFNESS Front 100
update_field chassis replaceme SWAYBAR_STIFFNESS Rear 100
update_field chassis replaceme_top SWAYBAR_STIFFNESS Front 100
update_field chassis replaceme_top SWAYBAR_STIFFNESS Rear 100
update_field chassis replaceme SPRING_PROGRESSION Front 0
update_field chassis replaceme SPRING_PROGRESSION Rear 0
update_field chassis replaceme_top SPRING_PROGRESSION Front 0
update_field chassis replaceme_top SPRING_PROGRESSION Rear 0
update_field chassis replaceme TRAVEL Front 20
update_field chassis replaceme TRAVEL Rear 20
update_field chassis replaceme_top TRAVEL Front 20
update_field chassis replaceme_top TRAVEL Rear 20
update_field chassis replaceme SHOCK_STIFFNESS Front 17
update_field chassis replaceme SHOCK_STIFFNESS Rear 17
update_field chassis replaceme SHOCK_EXT_STIFFNESS Front 50
update_field chassis replaceme SHOCK_EXT_STIFFNESS Rear 50
update_field chassis replaceme SHOCK_BLOWOUT 0
update_field chassis replaceme_top SHOCK_STIFFNESS Front 17
update_field chassis replaceme_top SHOCK_STIFFNESS Rear 17
update_field chassis replaceme_top SHOCK_EXT_STIFFNESS Front 50
update_field chassis replaceme_top SHOCK_EXT_STIFFNESS Rear 50
update_field chassis replaceme_top SHOCK_BLOWOUT 0
### LOWER AERO ###
#update_field chassis replaceme AERO_COEFFICIENT 0.13
#update_field chassis replaceme_top AERO_COEFFICIENT 0.15
### EVEN LOWER AERO ###
#update_field chassis replaceme AERO_COEFFICIENT 0.06
#update_field chassis replaceme_top AERO_COEFFICIENT 0.07
### A1 ###
update_field chassis replaceme SHOCK_STIFFNESS Front 5
update_field chassis replaceme SHOCK_STIFFNESS Rear 5
update_field chassis replaceme SHOCK_EXT_STIFFNESS Front 40
update_field chassis replaceme SHOCK_EXT_STIFFNESS Rear 40
update_field chassis replaceme SHOCK_BLOWOUT 0
update_field chassis replaceme_top SHOCK_STIFFNESS Front 5
update_field chassis replaceme_top SHOCK_STIFFNESS Rear 5
update_field chassis replaceme_top SHOCK_EXT_STIFFNESS Front 80
update_field chassis replaceme_top SHOCK_EXT_STIFFNESS Rear 80
update_field chassis replaceme_top SHOCK_BLOWOUT 0
### A3 ###
update_field chassis replaceme ROLL_CENTER 3
update_field chassis replaceme_top ROLL_CENTER 3
### A5 ###
update_field chassis replaceme SHOCK_STIFFNESS Front 0
update_field chassis replaceme SHOCK_STIFFNESS Rear 0
update_field chassis replaceme SHOCK_STIFFNESS Front 0
update_field chassis replaceme SHOCK_STIFFNESS Rear 0
#update_field chassis replaceme AERO_COEFFICIENT 0.06
#update_field chassis replaceme_top AERO_COEFFICIENT 0.07
### A6 ###
#update_field tires replaceme ASPECT_RATIO Front 100
#update_field tires replaceme ASPECT_RATIO Rear 100
#update_field tires replaceme_top ASPECT_RATIO Front 100
#update_field tires replaceme_top ASPECT_RATIO Rear 100
#update_field chassis replaceme ROLL_CENTER 6
#update_field chassis replaceme_top ROLL_CENTER 6
## A7 ###
#update_field tires replaceme ASPECT_RATIO Front 100
#update_field tires replaceme ASPECT_RATIO Rear 100
#update_field chassis replaceme SHOCK_STIFFNESS Front 15
#update_field chassis replaceme SHOCK_STIFFNESS Rear 15
#update_field chassis replaceme SHOCK_EXT_STIFFNESS Front 120
#update_field chassis replaceme SHOCK_EXT_STIFFNESS Rear 120
#update_field chassis replaceme SHOCK_BLOWOUT 0
#update_field chassis replaceme_top SHOCK_STIFFNESS Front 15
#update_field chassis replaceme_top SHOCK_STIFFNESS Rear 15
#update_field chassis replaceme_top SHOCK_EXT_STIFFNESS Front 120
#update_field chassis replaceme_top SHOCK_EXT_STIFFNESS Rear 120
#update_field chassis replaceme_top SHOCK_BLOWOUT 0
### A8 ###
update_field chassis replaceme SHOCK_DIGRESSION Front 0
update_field chassis replaceme SHOCK_DIGRESSION Rear 0
update_field chassis replaceme_top SHOCK_DIGRESSION Front 0
update_field chassis replaceme_top SHOCK_DIGRESSION Rear 0
update_field chassis replaceme ROLL_CENTER 5
update_field chassis replaceme_top ROLL_CENTER 5
update_field pvehicle replaceme TENSOR_SCALE X 1.4
update_field pvehicle replaceme TENSOR_SCALE Y 1.5
update_field pvehicle replaceme TENSOR_SCALE Z 1.0
### NO SWAYBARS ###
update_field chassis replaceme SWAYBAR_STIFFNESS Front -100
update_field chassis replaceme SWAYBAR_STIFFNESS Rear -100
update_field chassis replaceme_top SWAYBAR_STIFFNESS Front -100
update_field chassis replaceme_top SWAYBAR_STIFFNESS Rear -100
update_field chassis replaceme ROLL_CENTER 10
update_field chassis replaceme_top ROLL_CENTER 8
update_field chassis replaceme TRAVEL Front 12
update_field chassis replaceme TRAVEL Rear 12
update_field chassis replaceme_top TRAVEL Front 12
update_field chassis replaceme_top TRAVEL Rear 12
update_field chassis replaceme RIDE_HEIGHT Front 8.5
update_field chassis replaceme RIDE_HEIGHT Rear 8.5
update_field chassis replaceme_top RIDE_HEIGHT Front 7.65
update_field chassis replaceme_top RIDE_HEIGHT Rear 7.65
update_field tires replaceme GRIP_SCALE Front 0.7
update_field tires replaceme GRIP_SCALE Rear 0.7
update_field tires replaceme_top GRIP_SCALE Front 1.4
update_field tires replaceme_top GRIP_SCALE Rear 1.4
update_field tires replaceme YAW_CONTROL[0] 0.3
update_field tires replaceme YAW_CONTROL[1] 0.3
update_field tires replaceme YAW_CONTROL[2] 0.3
update_field tires replaceme YAW_CONTROL[3] 0.3
update_field tires replaceme_top YAW_CONTROL[0] 0.3
update_field tires replaceme_top YAW_CONTROL[1] 0.3
update_field tires replaceme_top YAW_CONTROL[2] 0.3
update_field tires replaceme_top YAW_CONTROL[3] 0.3
update_field tires replaceme DYNAMIC_GRIP Front 1.7
update_field tires replaceme DYNAMIC_GRIP Rear 1.75
update_field tires replaceme STATIC_GRIP Front 2.3
update_field tires replaceme STATIC_GRIP Rear 2.35
update_field tires replaceme_top DYNAMIC_GRIP Front 1.9
update_field tires replaceme_top DYNAMIC_GRIP Rear 1.9
update_field tires replaceme_top STATIC_GRIP Front 2.5
update_field tires replaceme_top STATIC_GRIP Rear 2.55
update_field rigidbodyspecs racers DRAG_ANGULAR Y 1000
add_field pvehicle racers BEHAVIOR_MECHANIC_RIGIDBODY
update_field pvehicle racers BEHAVIOR_MECHANIC_RIGIDBODY RBCop
update_field chassis replaceme SHOCK_STIFFNESS Front 5
update_field chassis replaceme SHOCK_STIFFNESS Rear 5
update_field chassis replaceme_top SHOCK_STIFFNESS Front 5
update_field chassis replaceme_top SHOCK_STIFFNESS Rear 5
#update_field tires replaceme STATIC_GRIP Rear 1.3
#update_field tires replaceme_top STATIC_GRIP Rear 1.3
\
"""
carlist = ["911gt2","911turbo","997s","a3","a4","bmwm3gtr","bmwm3gtre46","camaro","carreragt","caymans","clio","clk500","cobaltss","corvette","corvettec6r","cts","db9","eclipsegt","elise","fordgt","gallardo","gti","gto","imprezawrx","is300","lancerevo8","monaro","murcielago","mustanggt","punto","rx7","rx8","sl500","sl65","slr","supra","tt","viper"]
carlistNoTop = ["911gt2","bmwm3gtr","bmwm3gtre46","camaro","corvettec6r","rx8speedt","sl65"]
topBias = {
"911gt2": 0.8,
"911turbo": 0.6,
"997s": 0.6,
"a3": 0.2,
"a4": 0.2,
"bmwm3gtr": 1.0,
"bmwm3gtre46": 0.4,
"camaro": 0.0,
"carreragt": 0.9,
"caymans": 0.6,
"clio": 0.2,
"clk500": 0.2,
"cobaltss": 0.1,
"corvette": 0.4,
"corvettec6r": 1.0,
"cts": 0.1,
"db9": 0.7,
"eclipsegt": 0.4,
"elise": 0.6,
"fordgt": 0.6,
"gallardo": 0.6,
"gti": 0.2,
"gto": 0.1,
"imprezawrx": 0.4,
"is300": 0.0,
"lancerevo8": 0.5,
"monaro": 0.1,
"murcielago": 0.3,
"mustanggt": 0.1,
"punto": 0.2,
"rx7": 0.3,
"rx8": 0.2,
"sl500": 0.5,
"sl65": 0.4,
"slr": 0.6,
"supra": 0.3,
"tt": 0.3,
"viper": 0.4
}
nfsmsMods = {}
nfsmsModsTop = {}
for car in carlist:
nfsmsMods[car] = {}
nfsmsMods[car]["chassis"] = {}
nfsmsMods[car]["tires"] = {}
# Ride height scale
nfsmsMods["911gt2"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["911gt2"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["911turbo"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["911turbo"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["997s"]["chassis"]["RIDE_HEIGHT Rear"] = 1.0
nfsmsMods["997s"]["chassis"]["RIDE_HEIGHT Front"] = 1.0
nfsmsMods["a3"]["chassis"]["RIDE_HEIGHT Rear"] = 1.2
nfsmsMods["a3"]["chassis"]["RIDE_HEIGHT Front"] = 1.2
nfsmsMods["a4"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["a4"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["bmwm3gtr"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["bmwm3gtr"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["bmwm3gtre46"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["bmwm3gtre46"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["camaro"]["chassis"]["RIDE_HEIGHT Rear"] = 0.9
nfsmsMods["camaro"]["chassis"]["RIDE_HEIGHT Front"] = 0.9
nfsmsMods["carreragt"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["carreragt"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["caymans"]["chassis"]["RIDE_HEIGHT Rear"] = 1.2
nfsmsMods["caymans"]["chassis"]["RIDE_HEIGHT Front"] = 1.2
nfsmsMods["clio"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["clio"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["clk500"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["clk500"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["cobaltss"]["chassis"]["RIDE_HEIGHT Rear"] = 1.35
nfsmsMods["cobaltss"]["chassis"]["RIDE_HEIGHT Front"] = 1.35
nfsmsMods["corvette"]["chassis"]["RIDE_HEIGHT Rear"] = 1.4
nfsmsMods["corvette"]["chassis"]["RIDE_HEIGHT Front"] = 1.4
nfsmsMods["corvettec6r"]["chassis"]["RIDE_HEIGHT Rear"] = 0.8
nfsmsMods["corvettec6r"]["chassis"]["RIDE_HEIGHT Front"] = 0.8
nfsmsMods["cts"]["chassis"]["RIDE_HEIGHT Rear"] = 0.9
nfsmsMods["cts"]["chassis"]["RIDE_HEIGHT Front"] = 0.9
nfsmsMods["db9"]["chassis"]["RIDE_HEIGHT Rear"] = 0.9
nfsmsMods["db9"]["chassis"]["RIDE_HEIGHT Front"] = 0.9
nfsmsMods["eclipsegt"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["eclipsegt"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["elise"]["chassis"]["RIDE_HEIGHT Rear"] = 0.9
nfsmsMods["elise"]["chassis"]["RIDE_HEIGHT Front"] = 0.9
nfsmsMods["fordgt"]["chassis"]["RIDE_HEIGHT Rear"] = 0.8
nfsmsMods["fordgt"]["chassis"]["RIDE_HEIGHT Front"] = 0.8
nfsmsMods["gallardo"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["gallardo"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["gti"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["gti"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["gto"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["gto"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["imprezawrx"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["imprezawrx"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["is300"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["is300"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["lancerevo8"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["lancerevo8"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["monaro"]["chassis"]["RIDE_HEIGHT Rear"] = 1.15
nfsmsMods["monaro"]["chassis"]["RIDE_HEIGHT Front"] = 1.15
nfsmsMods["murcielago"]["chassis"]["RIDE_HEIGHT Rear"] = 0.9
nfsmsMods["murcielago"]["chassis"]["RIDE_HEIGHT Front"] = 0.9
nfsmsMods["mustanggt"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["mustanggt"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["punto"]["chassis"]["RIDE_HEIGHT Rear"] = 0.9
nfsmsMods["punto"]["chassis"]["RIDE_HEIGHT Front"] = 0.9
nfsmsMods["rx7"]["chassis"]["RIDE_HEIGHT Rear"] = 1.2
nfsmsMods["rx7"]["chassis"]["RIDE_HEIGHT Front"] = 1.2
nfsmsMods["rx8"]["chassis"]["RIDE_HEIGHT Rear"] = 1.0
nfsmsMods["rx8"]["chassis"]["RIDE_HEIGHT Front"] = 1.0
nfsmsMods["sl500"]["chassis"]["RIDE_HEIGHT Rear"] = 1.0
nfsmsMods["sl500"]["chassis"]["RIDE_HEIGHT Front"] = 1.0
nfsmsMods["sl65"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["sl65"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["slr"]["chassis"]["RIDE_HEIGHT Rear"] = 1.1
nfsmsMods["slr"]["chassis"]["RIDE_HEIGHT Front"] = 1.1
nfsmsMods["supra"]["chassis"]["RIDE_HEIGHT Rear"] = 1.0
nfsmsMods["supra"]["chassis"]["RIDE_HEIGHT Front"] = 1.0
nfsmsMods["tt"]["chassis"]["RIDE_HEIGHT Rear"] = 1.3
nfsmsMods["tt"]["chassis"]["RIDE_HEIGHT Front"] = 1.3
nfsmsMods["viper"]["chassis"]["RIDE_HEIGHT Rear"] = 0.85
nfsmsMods["viper"]["chassis"]["RIDE_HEIGHT Front"] = 0.85
# Grip scale
nfsmsMods["elise"]["tires"]["GRIP_SCALE Front"] = 0.4
nfsmsMods["elise"]["tires"]["GRIP_SCALE Rear"] = 0.4
parsedVlt = []
for line in properties.split("\n"):
line = line.strip(" \t\r")
arg = ""
args = []
for c in line:
if c == "#": break
if c in [" ","\t"]:
if arg != "":
args.append(arg)
arg = ""
continue
arg = arg + c
if arg != "":
args.append(arg)
arg = ""
if len(args) > 0:
parsedVlt.append(args)
def findLine(linef,ls):
linef = linef.copy()
linef.pop(-1)
linef.pop(2)
linefLength = len(linef)
for line in reversed(ls):
length = len(line) - 2
if length != linefLength: continue
lineo = line
line = line.copy()
line.pop(-1)
line.pop(2)
index = 0
success = True
while index < length:
if linef[index] != line[index]:
success = False
break
index += 1
if success == False: continue
return lineo
return False
def lineToPropPair(line):
line = line.copy()
cat = line[1]
line.pop(0)
line.pop(0)
line.pop(0)
line.pop(-1)
line = " ".join(line)
return [cat,line]
def getNfsmsMod(car,line,isTop = False):
prop = lineToPropPair(line)
if isTop:
if car in nfsmsModsTop:
if prop[0] in nfsmsModsTop[car]:
if prop[1] in nfsmsModsTop[car][prop[0]]:
return nfsmsModsTop[car][prop[0]][prop[1]]
if car in nfsmsMods:
if prop[0] in nfsmsMods[car]:
if prop[1] in nfsmsMods[car][prop[0]]:
return nfsmsMods[car][prop[0]][prop[1]]
return False
nfsmsMisc = []
nfsmsCars = {}
for car in carlist:
for line in parsedVlt:
line = line.copy()
isCarLine = False
isTopLine = False
if "replaceme" in line:
isCarLine = True
if "replaceme_top" in line:
isCarLine = True
isTopLine = True
if isCarLine == False:
nfsmsMisc.append(line)
continue
if not car in nfsmsCars:
nfsmsCars[car] = [[],[]]
if not isTopLine:
nfsmsCars[car][0].append(line)
else:
nfsmsCars[car][1].append(line)
for car in nfsmsCars:
for line in nfsmsCars[car][0]:
if line[0] != "update_field": continue
mult = getNfsmsMod(car,line)
if mult == False: continue
line[-1] = str(float(line[-1]) * mult)
for line in nfsmsCars[car][1]:
if line[0] != "update_field": continue
mult = getNfsmsMod(car,line,True)
if mult == False: continue
line[-1] = str(float(line[-1]) * mult)
for car in nfsmsCars:
if not (car in topBias): continue
for line in nfsmsCars[car][0]:
if line[0] != "update_field": continue
if line[1] in ["ecar","pvehicle"]: continue
topLine = findLine(line,nfsmsCars[car][1])
if topLine == False:
print("Warning, no top line found: " +(" ".join(line)))
continue
topLine = topLine.copy()
topLine[-1] = float(topLine[-1])
line[-1] = float(line[-1])
line[-1] = str(line[-1] + ((topLine[-1] - line[-1])*topBias[car]))
file = open(nfsmsScript,"w")
for car in nfsmsCars:
for line in nfsmsCars[car][0]:
if line[2] == "replaceme": line[2] = car
file.write(" ".join(line) + "\n")
if car in carlistNoTop: continue
for line in nfsmsCars[car][1]:
if line[2] == "replaceme_top": line[2] = car + "_top"
file.write(" ".join(line) + "\n")
for line in nfsmsMisc:
file.write(" ".join(line) + "\n")
file.close()