Miscellaneous Contributions

So, here I was, digging through my old Cataclysm source files, looking for something I worth porting over or sharing, when I stumbled upon a couple of unfinished projects with some merit to them. Namely, vehicles.

Given that there isn’t enough stuff to bother making a thread for, I decided I might just as well start a thread for such inconsequential things.

What I found was twofold - hardened and armored vehicle parts for my never-to-be-seriously-started MilSpecTech mod, and a couple of vehicles to go with it.
So, here it is.


    //        name
    VEHICLE ("electrocycle");
    //    o
    //    ^
    //    #
    //    o

    //   dx, dy,    part_id
    PART (0, 0,     vp_frame_v2);
    PART (0, 0,     vp_seat);
    PART (0, 0,     vp_controls);
    PART (0, 0,     vp_engine_motor);
    PART (1, 0,     vp_frame_handle);
    PART (1, 0,     vp_fuel_tank_batt);
    PART (2, 0,     vp_wheel);
    PART (-1, 0,    vp_wheel);
    PART (-1, 0,    vp_cargo_box);

    //        name
    VEHICLE ("electromobile");
    //   o--o
    //   |""|
    //   +##+
    //   +##+
    //   |HH|
    //   o++o

    //   dx, dy,    part_id
    PART (0, 0,     vp_frame_v2);
    PART (0, 0,     vp_seat);
    PART (0, 0,     vp_seatbelt);
    PART (0, 0,     vp_controls);
    PART (0, 0,     vp_roof);
    PART (0, 1,     vp_frame_v2);
    PART (0, 1,     vp_seat);
    PART (0, 1,     vp_seatbelt);
    PART (0, 1,     vp_roof);
    PART (0, -1,    vp_door);
    PART (0, 2,     vp_door);
    PART (-1, 0,     vp_frame_v2);
    PART (-1, 0,     vp_seat);
    PART (-1, 0,     vp_seatbelt);
    PART (-1, 0,     vp_roof);
    PART (-1, 1,     vp_frame_v2);
    PART (-1, 1,     vp_seat);
    PART (-1, 1,     vp_seatbelt);
    PART (-1, 1,     vp_roof);
    PART (-1, -1,    vp_door);
    PART (-1, 2,     vp_door);
    PART (1, 0,     vp_frame_h);
    PART (1, 0,     vp_window);
    PART (1, 1,     vp_frame_h);
    PART (1, 1,     vp_window);
    PART (1, -1,    vp_frame_v);
    PART (1, 2,     vp_frame_v);
    PART (2, 0,     vp_frame_h);
    PART (2, 0,     vp_engine_motor_large);
    PART (2, 0,     vp_superalloy_plate);
    PART (2, 1,     vp_frame_h);
    PART (2, 1,     vp_superalloy_plate);
    PART (2, -1,    vp_wheel);
    PART (2, 2,     vp_wheel);
    PART (-2, 0,     vp_frame_v);
    PART (-2, 0,     vp_cargo_trunk);
    PART (-2, 0,     vp_roof);
    PART (-2, 0,     vp_fuel_tank_batt);
    PART (-2, 0,     vp_muffler);
    PART (-2, 1,     vp_frame_v);
    PART (-2, 1,     vp_cargo_trunk);
    PART (-2, 1,     vp_roof);
    PART (-2, 1,     vp_fuel_tank_batt);
    PART (-2, -1,    vp_board_v);
    PART (-2, -1,    vp_fuel_tank_batt);
    PART (-2, -1,    vp_solar_panel);
    PART (-2, 2,     vp_board_v);
    PART (-2, 2,     vp_fuel_tank_batt);
    PART (-2, 2,     vp_solar_panel);
    PART (-3, -1,    vp_wheel);
    PART (-3, 0,     vp_door);
    PART (-3, 1,     vp_door);
    PART (-3, 2,     vp_wheel);

    //        name
    VEHICLE ("armored car");  
    //   o--o
    //   |""|
    //   +##+
    //   |##|
    //   +##+
    //   |""|
    //   o--o

    //   dx, dy,    part_id
    //Driver's Seat
    PART (0, 0,     vp_frame_ar_v2);
    PART (0, 0,     vp_seat_ar);
    PART (0, 0,     vp_seatbelt);
    PART (0, 0,     vp_controls_ar);
    PART (0, 0,     vp_roof_ar);
    //Shotgun
    PART (0, 1,     vp_frame_ar_v2);
    PART (0, 1,     vp_seat_ar);
    PART (0, 1,     vp_seatbelt);
    PART (0, 1,     vp_roof_ar);
    //Doors
    PART (0, -1,    vp_door_ar);
    PART (0, 2,     vp_door_ar);
    
    //Passenger Compartment
    
    PART (-1, 0,     vp_frame_ar_v2);
    PART (-1, 0,     vp_seat_ar);
    PART (-1, 0,     vp_seatbelt);
    PART (-1, 0,     vp_roof_ar);
    PART (-1, 1,     vp_frame_ar_v2);
    PART (-1, 1,     vp_seat_ar);
    PART (-1, 1,     vp_seatbelt);
    PART (-1, 1,     vp_roof_ar);
    
    PART (-1, -1,    vp_board_ar_v);
    PART (-1, 2,     vp_board_ar_v);

    PART (-2, 0,     vp_frame_ar_v2);
    PART (-2, 0,     vp_seat_ar);
    PART (-2, 0,     vp_seatbelt);
    PART (-2, 0,     vp_roof_ar);
    PART (-2, 1,     vp_frame_ar_v2);
    PART (-2, 1,     vp_seat_ar);
    PART (-2, 1,     vp_seatbelt);
    PART (-2, 1,     vp_roof_ar);
    
    PART (-2, -1,    vp_door_ar);
    PART (-2, 2,     vp_door_ar);    
 
    //Windshields, Trunk and Engine Compartment 
    
    PART (1, 0,     vp_frame_ar_h);
    PART (1, 0,     vp_window_ar);
    PART (1, 1,     vp_frame_ar_h);
    PART (1, 1,     vp_window_ar);
    PART (1, -1,    vp_board_ar_v);
    PART (1, 2,     vp_board_ar_v);    

    PART (-3, 0,     vp_frame_ar_h);
    PART (-3, 0,     vp_window_ar);
    PART (-3, 1,     vp_frame_ar_h);
    PART (-3, 1,     vp_window_ar);
    PART (-3, -1,    vp_board_ar_v);
    PART (-3, 2,     vp_board_ar_v);    

    PART (-4, 0,     vp_board_ar_h);
    PART (-4, 0,     vp_muffler_el);
    PART (-4, 0,    vp_fuel_tank_gas_ar);
    PART (-4, 1,     vp_board_ar_h);
    PART (-4, 1,    vp_fuel_tank_gas_ar);
    PART (-4, -1,    vp_wheel_ar);
    PART (-4, 2,     vp_wheel_ar);
    
    PART (2, 0,     vp_frame_ar_h);
    PART (2, 0,     vp_engine_gas_large);
    PART (2, 1,     vp_frame_ar_h);
    PART (2, -1,    vp_wheel_ar);
    PART (2, 2,     vp_wheel_ar);

    //        name
    VEHICLE ("armored electromobile");  
    //   o--o
    //   |""|
    //   +##+
    //   |##|
    //   +##+
    //   |""|
    //   o--o

    //   dx, dy,    part_id
    //Driver's Seat
    PART (0, 0,     vp_frame_ar_v2);
    PART (0, 0,     vp_seat_ar);
    PART (0, 0,     vp_seatbelt);
    PART (0, 0,     vp_controls_ar);
    PART (0, 0,     vp_roof_ar);
    //Shotgun
    PART (0, 1,     vp_frame_ar_v2);
    PART (0, 1,     vp_seat_ar);
    PART (0, 1,     vp_seatbelt);
    PART (0, 1,     vp_roof_ar);
    //Doors
    PART (0, -1,    vp_door_ar);
    PART (0, 2,     vp_door_ar);
    
    //Passenger Compartment
    
    PART (-1, 0,     vp_frame_ar_v2);
    PART (-1, 0,     vp_seat_ar);
    PART (-1, 0,     vp_seatbelt);
    PART (-1, 0,     vp_roof_ar);
    PART (-1, 1,     vp_frame_ar_v2);
    PART (-1, 1,     vp_seat_ar);
    PART (-1, 1,     vp_seatbelt);
    PART (-1, 1,     vp_roof_ar);
    
    PART (-1, -1,    vp_board_ar_v);
    PART (-1, -1,    vp_solar_paint);
    PART (-1, 2,     vp_board_ar_v);
    PART (-1, 2,     vp_solar_paint);

    PART (-2, 0,     vp_frame_ar_v2);
    PART (-2, 0,     vp_seat_ar);
    PART (-2, 0,     vp_seatbelt);
    PART (-2, 0,     vp_roof_ar);
    PART (-2, 1,     vp_frame_ar_v2);
    PART (-2, 1,     vp_seat_ar);
    PART (-2, 1,     vp_seatbelt);
    PART (-2, 1,     vp_roof_ar);
    
    PART (-2, -1,    vp_door_ar);
    PART (-2, 2,     vp_door_ar);    
 
    //Windshields, Trunk and Engine Compartment 
    
    PART (1, 0,     vp_frame_ar_h);
    PART (1, 0,     vp_window_ar);
    PART (1, 1,     vp_frame_ar_h);
    PART (1, 1,     vp_window_ar);
    PART (1, -1,    vp_board_ar_v);
    PART (1, -1,    vp_fuel_tank_batt_ar);
    PART (1, 2,     vp_board_ar_v); 
    PART (1, 2,     vp_fuel_tank_batt_ar);   

    PART (-3, 0,     vp_frame_ar_h);
    PART (-3, 0,     vp_window_ar);
    PART (-3, 1,     vp_frame_ar_h);
    PART (-3, 1,     vp_window_ar);
    PART (-3, -1,    vp_board_ar_v);
    PART (-3, -1,    vp_solar_paint);
    PART (-3, 2,     vp_board_ar_v);
    PART (-3, 2,    vp_solar_paint);    

    PART (-4, 0,     vp_board_ar_h);
    PART (-4, 0,     vp_muffler_el);
    PART (-4, 0,    vp_solar_paint);
    PART (-4, 0,    vp_fuel_tank_batt_ar);
    PART (-4, 1,     vp_board_ar_h);
    PART (-4, 1,    vp_fuel_tank_plut_ar);
    PART (-4, 1,    vp_solar_paint);
    PART (-4, -1,    vp_wheel_ar);
    PART (-4, 2,     vp_wheel_ar);
    
    PART (2, 0,     vp_frame_ar_h);
    PART (2, 0,     vp_engine_motor_large);
    PART (2, 1,     vp_frame_ar_h);
    PART (2, 1,     vp_engine_motor_large);
    PART (2, -1,    vp_wheel_ar);
    PART (2, 2,     vp_wheel_ar);

That makes for two electricity-powered variants on default vehicles, and two… things only a millionaire could be proud of, that may very well be capable of substituting for APCs.

In case you wonder what the ‘_ar’ stands for, it’s “armored”, which, as far as I remember, mostly means only that the durability was increased about five-to-tenfold.

Also, some parts, like tank plating, hardened reactors or turbine engines, are included even though they aren’t used for anything right now.

Originally, I wanted to diversify these things after some more conscientious souls made the “military base overhaul”, which, alas, still seems to be the music of far future.

A word of warning: I haven’t tested the new files yet. There shouldn’t be any problems, given that it’s basically just a copy-paste of something that worked before without issue, but it’s possible there’s a mistake or another that I missed.

Originally, I wanted to include both of the source files as simple attachments, but there are some errors with that I can’t be bothered to work around. So, I guess I’ll start my stay on this forum by double or triple-posting.

Edit: Did some playtesting, made some adjustments to the vehicles. Mostly swapping minireactors for storage batteries.

enum vpart_id
{
    vp_null = 0,

// external parts
    vp_seat,
    vp_bed,
    vp_frame_h,
    vp_frame_v,
    vp_frame_c,
    vp_frame_y,
    vp_frame_u,
    vp_frame_n,
    vp_frame_b,
    vp_frame_h2,
    vp_frame_v2,
    vp_frame_cover,
    vp_frame_handle,
    vp_board_h,
    vp_board_v,
    vp_board_y,
    vp_board_u,
    vp_board_n,
    vp_board_b,
    vp_roof,
    vp_door,
    vp_door_o,
    vp_door_i,
    vp_window,
    vp_blade_h,
    vp_blade_v,
    vp_spike_h,
    vp_spike_v = vp_spike_h,
    vp_wheel_large,
    vp_wheel,

    vp_engine_gas_tiny,
    vp_engine_gas_small,
    vp_engine_gas_med,
    vp_engine_gas_large,
    vp_engine_motor,
    vp_engine_motor_large,
    vp_engine_plasma,
    vp_engine_foot_crank,
    vp_fuel_tank_gas,
    vp_fuel_tank_batt,
    vp_fuel_tank_plut,
    vp_fuel_tank_hydrogen,
    vp_cargo_trunk, // over
    vp_cargo_box,   // over

// pure internal parts
    vp_controls,
    vp_muffler,
    vp_seatbelt,
    vp_solar_panel,
    vp_m249,
    vp_flamethrower,
    vp_plasmagun,

// plating -- special case. mounted as internal, work as first line
// of defence and gives color to external part
    vp_steel_plate,
    vp_superalloy_plate,
    vp_spiked_plate,
    vp_hard_plate,

    vp_head_light,

//Armored Parts
    vp_seat_ar,
    vp_frame_ar_h,
    vp_frame_ar_v,
    vp_frame_ar_c,
    vp_frame_ar_y,
    vp_frame_ar_u,
    vp_frame_ar_n,
    vp_frame_ar_b,
    vp_frame_ar_h2,
    vp_frame_ar_v2,
    vp_frame_ar_cover,
    vp_board_ar_h,
    vp_board_ar_v,
    vp_board_ar_y,
    vp_board_ar_u,
    vp_board_ar_n,
    vp_board_ar_b,
    vp_roof_ar,
    vp_door_ar,
    vp_window_ar,
    vp_wheel_ar_large,
    vp_wheel_ar,

    vp_engine_gas_turb,
    vp_engine_motor_turb,
    vp_fuel_tank_gas_ar,
    vp_fuel_tank_batt_ar,
    vp_fuel_tank_plut_ar,
    vp_fuel_tank_hydrogen_ar,
    vp_cargo_trunk_ar, // over    
    
    vp_controls_ar,
    vp_solar_paint,
    vp_muffler_el,

    vp_tank_plate,
//Armored stuff ends   

    num_vparts
};

Just copy&replace.
The next segment goes from the “headlight” part up to the EOF.

      
// Armored Frames
    { "hardened seat",       '#', c_red,     '*', c_red,     60,  1500, 0, 0, itm_seat, 6,
        mfb(vpf_over) | mfb(vpf_seat) | mfb(vpf_no_reinforce) },
    { "hardened frame",      'h', c_ltgray,  '#', c_ltgray,  100, 4000, 0, 0, itm_frame, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) },
    { "hardened frame",      'j', c_ltgray,  '#', c_ltgray,  100, 4000, 0, 0, itm_frame, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) },
    { "hardened frame",      'c', c_ltgray,  '#', c_ltgray,  100, 4000, 0, 0, itm_frame, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) },
    { "hardened frame",      'y', c_ltgray,  '#', c_ltgray,  100, 4000, 0, 0, itm_frame, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) },
    { "hardened frame",      'u', c_ltgray,  '#', c_ltgray,  100, 4000, 0, 0, itm_frame, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) },
    { "hardened frame",      'n', c_ltgray,  '#', c_ltgray,  100, 4000, 0, 0, itm_frame, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) },
    { "hardened frame",      'b', c_ltgray,  '#', c_ltgray,  100, 4000, 0, 0, itm_frame, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) },
    { "hardened frame",      '=', c_ltgray,  '#', c_ltgray,  100, 4000, 0, 0, itm_frame, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) },
    { "hardened frame",      'H', c_ltgray,  '#', c_ltgray,  100, 4000, 0, 0, itm_frame, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) },
    { "hardened frame",      '^', c_ltgray,  '#', c_ltgray,  100, 4000, 0, 0, itm_frame, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) },
    { "hardened board",      'h', c_ltgray,  '#', c_ltgray,  100, 8000, 0, 0, itm_alloy_plate, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) | mfb(vpf_opaque) | mfb(vpf_obstacle) },
    { "hardened board",      'j', c_ltgray,  '#', c_ltgray,  100, 8000, 0, 0, itm_alloy_plate, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) | mfb(vpf_opaque) | mfb(vpf_obstacle) },
    { "hardened board",      'y', c_ltgray,  '#', c_ltgray,  100, 8000, 0, 0, itm_alloy_plate, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) | mfb(vpf_opaque) | mfb(vpf_obstacle) },
    { "hardened board",      'u', c_ltgray,  '#', c_ltgray,  100, 8000, 0, 0, itm_alloy_plate, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) | mfb(vpf_opaque) | mfb(vpf_obstacle) },
    { "hardened board",      'n', c_ltgray,  '#', c_ltgray,  100, 8000, 0, 0, itm_alloy_plate, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) | mfb(vpf_opaque) | mfb(vpf_obstacle) },
    { "hardened board",      'b', c_ltgray,  '#', c_ltgray,  100, 8000, 0, 0, itm_alloy_plate, 6,
        mfb(vpf_external) | mfb(vpf_mount_point) | mfb (vpf_mount_inner) | mfb(vpf_opaque) | mfb(vpf_obstacle) },
//Other Armored External Parts
    { "armored roof",       '#', c_ltgray,  '#', c_dkgray,  100, 8000, 0, 0, itm_alloy_plate, 5,
        mfb(vpf_internal) | mfb(vpf_roof) },   
    { "armored door",       '+', c_cyan,    '&', c_cyan,    80,  8000, 0, 0, itm_alloy_plate, 5,
        mfb(vpf_external) | mfb(vpf_obstacle) | mfb(vpf_openable) | mfb(vpf_opaque) },
    { "armaplas windshield", '"', c_ltcyan,  '0', c_ltgray,  70,  8000, 0, 0, itm_alloy_plate, 5,
        mfb(vpf_over) | mfb(vpf_obstacle) | mfb(vpf_no_reinforce) },
//Armored Wheels
    { "armored large wheel",'0', c_dkgray,  'x', c_ltgray,  50,  3000, 30, 0, itm_big_wheel, 6,
        mfb(vpf_external) | mfb (vpf_mount_over) | mfb(vpf_wheel) | mfb(vpf_mount_point) },
    { "armored wheel",      'o', c_dkgray,  'x', c_ltgray,  50,  2000, 10, 0, itm_wheel, 5,
        mfb(vpf_external) | mfb (vpf_mount_over) | mfb(vpf_wheel) | mfb(vpf_mount_point) },
//Tank Engines
    { "gas turbine engine",       '*', c_ltred,  '#', c_red,     80, 4000, 1200, AT_GAS, itm_combustion_large, 8,
        mfb(vpf_internal) | mfb(vpf_engine) },
    { "electric turbine engine",       '*', c_yellow,  '#', c_red,    80, 4000, 1000, AT_BATT, itm_motor_large, 8,
        mfb(vpf_internal) | mfb(vpf_engine) },
//Armored Fuel Tanks
    { "hardened gasoline tank",              'O', c_ltred,  '#', c_red,     80, 2000, 6000, AT_GAS, itm_metal_tank, 5,
        mfb(vpf_internal) | mfb(vpf_fuel_tank) },
    { "hardened battery",            'O', c_yellow,  '#', c_red,    80, 3000, 1000, AT_BATT, itm_storage_battery, 6,
        mfb(vpf_internal) | mfb(vpf_fuel_tank) },
    { "hardened reactor",                'O', c_ltgreen,  '#', c_red,    80, 8000, 50000, AT_PLUT, itm_minireactor, 9,
        mfb(vpf_internal) | mfb(vpf_fuel_tank) },
    { "hardened hydrogen tank",             'O', c_ltblue,  '#', c_red,     80, 3000, 3000, AT_PLASMA, itm_metal_tank, 5,
        mfb(vpf_internal) | mfb(vpf_fuel_tank) },
//Armored Other
    { "hardened trunk",                      'H', c_brown,  '#', c_brown,    80, 2000, 400, 0, itm_frame, 5,
        mfb(vpf_over) | mfb(vpf_cargo) },
    { "hardened controls",   '$', c_ltgray,  '$', c_red,     10, 2500, 0, 0, itm_vehicle_controls, 6,
        mfb(vpf_internal)  | mfb(vpf_controls) },
    { "solar paint", '#', c_yellow,  'x', c_yellow, 10, 20000, 100, 0, itm_solar_panel, 8,
        mfb(vpf_over)  | mfb(vpf_solar_panel) },
    { "military muffler",    '/', c_ltgray,  '/', c_ltgray,  10, 1000, 1, 0, itm_muffler, 5,
        mfb(vpf_internal)  | mfb(vpf_muffler) },
    { "tank plating",      ')', c_green,   ')', c_green,   100, 50000, 0, 0, itm_alloy_plate, 4,
        mfb(vpf_internal) | mfb(vpf_armor) }
//Armored Stuff Ends
       
};


enum vhtype_id
{
    veh_null = 0,
    veh_custom,

// in-built vehicles
    veh_bicycle,
    veh_motorcycle,
    veh_motorcycle_chassis,
    veh_sandbike,
    veh_sandbike_chassis,
    veh_car,
    veh_car_chassis,
    veh_truck,
    veh_semi,  //6L Semitruck. 10 wheels. Sleeper cab.
    veh_trucktrailer,  //Just a trailer with 8 wheels.
    veh_wagon, // Dwarf Fortress Wagon
    veh_bug,  //Old VW Bug.
    veh_bubblecar,  //360 degree view glass circular vehicle. Underpowered plutonium.
    veh_golfcart,  //Yamaha golf cart.
    veh_scooter,  //Vespa S50 scooter.
    veh_armytruck,  //Army M35A2 6L gas and/or hydrogen engine if commented parts uncommented.
    veh_schoolbus,  //Standard schoolbus
    veh_electrocycle,
    veh_electromobile,
    veh_vipcar,       //armored car
    veh_vipcar_el,    //armored electric car

    num_vehicles
};

#endif