If you want a new engine you have to edit:
vehicle_parts.json for the vehicle object. (this is the part show on the examine vehicle screen ingame)
(Just create a new engines description in the file, ideally after other related engines.)
Like this:
... },{
"type" : "vehicle_part",
"id" : "engine_1cyl",
"name" : "1-cylinder engine",
"symbol" : "*",
"color" : "light_red",
"broken_symbol" : "#",
"broken_color" : "red",
"damage_modifier" : 80,
"durability" : 150,
"epower" : 0,
"fuel_type" : "gasoline",
"item" : "1cyl_combustion",
"difficulty" : 2,
"location" : "engine_block",
"flags" : ["ENGINE", "VARIABLE_SIZE"],
"breaks_into" : [
{"item": "steel_lump", "min": 5, "max": 10},
{"item": "steel_chunk", "min": 5, "max": 10},
{"item": "scrap", "min": 5, "max": 10}
]
},{
"type" : "vehicle_part",
"id" : "engine_GTA",
"name" : "GTA ENGINE!",
"symbol" : "*",
"color" : "light_red",
"broken_symbol" : "#",
"broken_color" : "red",
"damage_modifier" : 80,
"durability" : 150,
"epower" : 0,
"fuel_type" : "gasoline",
"item" : "gta_combustion",
"difficulty" : 2,
"location" : "engine_block",
"flags" : ["ENGINE", "VARIABLE_SIZE"],
"breaks_into" : [
{"item": "steel_lump", "min": 5, "max": 10},
{"item": "steel_chunk", "min": 5, "max": 10},
{"item": "scrap", "min": 5, "max": 10}
]
},{ ...
With the id being unique (no other vehicle object can use that name).
The item field is the item used to install the object. Which you also need to define in items/vehicle_parts.json (or var_vehicle_parts.json, but no idea how that works).
Then you can use the debug menu to spawn the new engine, and install it.