A blast from the past but something that could be modified (ie. rewritten) to function with current builds and which if deemed fit would help getting rid of the dependance on the retail ship types and allow fully functional custom objecttypes be used.
First... here is a list of the flags the patch added - do keep in mind that these
DO NOT work currently with any build, however this is likely to change
$Enemy Fighters Unleash All Weapons:
$Preferred Target for Bombs:
$Allow Strafe Against This:
$Turrets Count as Attackers:
$Engines Stutter On Death:
$Use Large Ship Sparks:
$No Doppler Effect:
$Engine Noise While Idle:
$Allow Targeting of Turrets:
$Limited EMP Effects:
$Allow Large Target Targeting:
$Do Not Avoid Shockwaves:
$Keep Firing During Deathroll:
$Lethality Ignores Beams From Ship:
$Cause Asteroid Collision Warnings:
$Kamikaze Die on Impact:
$Beams Target Model Directly:
$Allow Beam Culling:
$Allow Checking Cargo:
$Add Class String In Briefings:
$Allow Non-Depletable Cargo:
$Use Non-Centered Warpout:
$Guardian Ship During Warpout:
$Assign Engine Wash By Default:
$Ship Scannable Subsystems by Default:
$No Shockwave Damage Adjustment:
$Do Not Accelerate During Warpout:
$Not Protected When Subsystems Targeted:
$Not Flyable:
$May Use Countermeasures:
$Allow Shield Balancing:
$May Enter Strafing Mode:
$Allow Subsystem Repair By Default:
$Warn Player If This Ship Attacks:
$Do Not Allow Engine Wash:
$No Subsystem Damage From Shockwaves:
$Ship Vaporized By Beams:
$No Notification If Ship Is Disarmed:
$Allow Flyby Sounds:
$Allow Enemy Evade and Break Maneuver:
$Allow Enemy Take Distance Maneuver:
$Allow Enemy Take Continuous Turn Maneuver:
$Allow Enemy Break Super Attack Maneuver:
$Allow Evade Missile Maneuver:
$Allow Evade Shockwave Maneuver:
$Self-destruct If Disarmed or Disabled:
$Check Number of Missiles Homing In:
$Destroy AI Ships In Dogfight Missions:
$Allow Wingmen Screams:
$AI Ignore Friendly Lasers:
$Allow Shields Low Checks:
$Include When Counting Number of Enemies:
$Allow Scannable Cargo:
$Allow Pilot Callsigns:
$Allow Protected Status Be Overriden:
$Has SuperCap Damage Immunity:
$Force Sentrygun AI:
$Considered a Threat:
$Special Warpout Device:
$Center Shockwaves:
$Special Dying Time:
$Use Knossos Type Explosions:
$Use Special Super Cap Collisions:
$Use Special Super Cap Warps:
$Ignore Area Effect Damage:
$Ignore Electronics Damage:
$Will Not Collide:
$Use Neutral Radar Blip Color:
$Do Not Target If Newest:
$Do Not Target As Friendly or Hostile:
$Do Not Use As Observers:
$Not a Valid Target For Orders:
$Allow Goals:
$Use Support Ship AI:
$Mark Ship As Strikecraft:
$Allow Form Wing Command:
$Allow Support Requests:
$Mark Ship As Bomber:
$Affected by Engine Wash:
$Use Smaller Amount of Sparks:
$Allow Primitive Sensors Option:
$Allow No Jumpdrive Option:
$Allow Affected by Gravity Option:$Mark As Cargo:
$Allow Shorter Deathroll:
$Allow Enemy AI to Use Short Burst AI Code:
$Huge Weapons Not Allowed to Home In:
$Ship Size Index:
"Small"
"Big"
"Huge"
$CapShip Size Index:
"Major"
"Medium"
"Minor"
$Subsystem Destruction Sound Index:
$Ship Destruction Sound Index:
$3D Model Rotation Multiplier:
$Max Warpout Angle:
Recommendations for better table entry names are
warmly welcomed.There are couple of woes with the patch..
- The entries $Ship Size Index: and $CapShip Size Index: both contain options actually worth several additional flags but my ideas for them (names) have long since dried up. Those basically act as in some manner of 'extensions' of retail SIF_<objecttype> flags instead of allowing modder to alter the variables directly.
- System greatly increases the size of the internal hardcopy of the objecttypes.tbl - though this is not technically a problem it becames managing issue and is prone to errors
Patch - currently in pastebin -
http://pastebin.com/uQF31DDT - patch (as it is) is too old to go in without manual labour.
Perhaps the most critical piece of the patch is actually this function which allows easier (and safer) access to the objecttype data without undue fuzz with array indexers
+ship_type_info *ship_get_type_info(object *objp)
+{
+ Assert(objp != NULL);
+ Assert(objp->type == OBJ_SHIP);
+ Assert(objp->instance > -1);
+ Assert(Ships[objp->instance].ship_info_index > -1);
+ Assert(Ship_info[Ships[objp->instance].ship_info_index].class_type > -1);
+
+ return &Ship_types[Ship_info[Ships[objp->instance].ship_info_index].class_type];
+}
+
EDIT:
https://rapidshare.com/files/458108529/temp_a.rar