Page 1 of 2
NPC ships overheating and heat shielding
Posted: Thu Jul 12, 2007 5:37 pm
by chaos syndrome
After installing sunskimmers, I often end up in dogfights close to the star. Quite a few of these end with the NPC spontaneously exploding, which I guess is caused by the ships overheating.
It would be nice to have these ships having some kind of response to getting to high temperatures (a kind of "run away from the sun" similar to the "run away from the enemy ship" response to low shields).
Plus I do wonder if these ships have heat shielding. What kind of nutter goes anywhere near the star without heat shielding? Is there some way to modify sunskimmers to ensure the ships generated on the witchpoint-sun route have heat shields?
Posted: Thu Jul 12, 2007 9:54 pm
by Commander McLane
Sunskimmers is using ordinary, unmodified Oolite ships. There is not even a shipdata.plist in the OXP. So there is nothing to modify.
Some pilots probably are just stupid. (In general I'd say that sunskimming is stupid unless there is a very good reason for it (no main station, trumbles...). The fuel costs are negligible, so economically there is no need for sunskimming IMHO.)
Posted: Fri Jul 13, 2007 7:47 am
by United Blobs
Couldn't you modify the default shipdata.plist (\Oolite\oolite.app\Resources\Config) to give the ships heat shields?
Posted: Fri Jul 13, 2007 12:51 pm
by Captain Hesperus
United Blobs wrote:Couldn't you modify the default shipdata.plist (\Oolite\oolite.app\Resources\Config) to give the ships heat shields?
I'm reasonably sure it's possible. After all, the infamous Dr. Nil did something similar to his SLAPUs and CZGFs to prevent them going ka-boom if they are too close to a sun.
Captain Hesperus
Posted: Fri Jul 13, 2007 1:03 pm
by LittleBear
That'd work if you added to each native ship:-
Code: Select all
<key>has_heat_shield</key>
<true/>
Not totally sure though if heat_shield is the right "tag" for this equipment, but in principle it should work. This would only give the native ships heat shields though. You'd have to add it to each OXP ship (which would be a pain!). The heat shield is quite a new piece of kit, so a lot of OXP ships don't have it included. It makes no odds to the ships (unless it happens to be near the sun). The Doc's sunskimmers just adds ships with a role "pirate", trader, police etc. So a Viper called by sunskimmers would have the heatshield, but a Condor woudn't unless you also added it to the Condor's shipentry.[/code]
Posted: Fri Jul 13, 2007 4:17 pm
by Commander McLane
These are a couple of reasons not to do it just so.
Any change that fiddles with the files included in Oolite.app (or .exe, for that matter) are not advisable for the general public, unless there is a general agreement among at least the coders, to change something for the next release. (E.g. there seemed to be something in the direction of an agreement as to make standard the external views of externalviews.oxp by integrating them into the original shipdata.)
If there is an agreement to let all ships of the basic set have let's say a chance of having a heat-shield, I am not against it.
Code: Select all
<key>has_heat_shield</key>
<real>0.7835951037</real>
Still OXP-ships would have that chance only if their individual creator has given it to them.
Posted: Sat Jul 14, 2007 12:29 am
by chaos syndrome
I guess what might work would be to give the sunskimmers a custom role and a whole new set of ships which have heat shielding by default, which would basically mean creating a new copy of shipdata.plist.
Can multiple different types of ship have the same display name?
Posted: Sat Jul 14, 2007 8:15 am
by Commander McLane
Yes, they can and that's of course a possible solution. You can ask Dr. Nil to update (actually re-program, because that would make it many times bigger) his OXP. Or do a sunskimmers v1.0 yourself. The Dr. gave it version number 0.1, so it's clear he didn't consider it "ready" himself. But he is the only one who knows if he already has done some overhauling on it.
Posted: Sat Jul 14, 2007 8:42 am
by JensAyton
chaos syndrome wrote:I guess what might work would be to give the sunskimmers a custom role and a whole new set of ships which have heat shielding by default, which would basically mean creating a new copy of shipdata.plist.
This is where
like_ship comes in handy. :-)
Non-player ships can’t have heat shielding as an equipment item. However, they can have a
heat_insulation setting; the default is 1.0, heat shielding for the player raises it to 2.0. The downside to this is that it can’t be set as a fuzzy boolean (probability) as McLane suggested.
Posted: Sat Jul 14, 2007 9:07 am
by TGHC
Commander McLane wrote:Some pilots probably are just stupid. )
<Holds hand up>
Posted: Sat Jul 14, 2007 12:59 pm
by Commander McLane
Ahruman wrote:However, they can have a heat_insulation setting; the default is 1.0, heat shielding for the player raises it to 2.0.
The first time I hear about it. But it's nice. And AFAIK not documented in the shipdata document of the wiki. As are some other settings you just mentioned somewhere.
Therefore a request: Could yo bring the shipdata document up to date, including all methods and settings unknown to us ordinary people?
Posted: Sat Jul 14, 2007 1:14 pm
by JensAyton
Yeah, after 1.69.1 (which doesn’t look far off now).
Posted: Sat Jul 14, 2007 10:43 pm
by JensAyton
I almost went and did it, but then I remembered the Golden Rule of Project Management: if at all possible, get someone else to do it. Some people might use euphemisms like “delegation”, but I’m not going to insult your intelligence. I may well have missed some. Don’t hesitate to ask pertinent questions.
The first column contains keys, the second contains types, the thord contains defaults if not 0/false/empty.
Types: i = integer (whole number), f = floating-point (decimal points meaningful), + = nonnegative (0 or greater) b = boolean, z = fuzzy boolean (boolean or probability as number between 0 and 1)
Settings used in ship loading:
Code: Select all
like_ship ship key
max_flight_speed +f
max_flight_roll +f
max_flight_pitch +f
max_flight_yaw +f =max_flight_pitch
thrust +f
accuracy f (previously i)
max_energy +f
energy_recharge_rate +f
forward_weapon_type weapon type WEAPON_NONE
aft_weapon_type weapon type WEAPON_NONE
weapon_energy +f
scanner_range +f (metres) 25600
missiles +i
has_ecm z
has_scoop z
has_escape_pod +i
has_energy_bomb z
has_fuel_injection z
has_cloaking_device z
has_military_jammer z
has_military_scanner_filter z
fragment_chance z 0.9
has_shield_booster z
has_shield_enhancer z
fuel +i
bounty +i
ai_type AI name nullAI.plist
max_cargo +i
likely_cargo +i
extra_cargo +i 15
cargo_carried commodity name
cargo_type cargo type CARGO_NOT_CARGO
model model name
materials material dictionary
shaders material dictionary
smooth b
density +f 1
name string
roles role list
exhaust exhaust array
is_hulk b
subentities subentity list
frangible b yes
laser_color colour specifier redColor
scanClass scan class CLASS_NOT_SET
launch_actions plist script actions
script_actions plist script actions
death_actions plist script actions
setup_actions plist script actions
escorts +i
beacon string
rotational_velocity quaternion
track_contacts b
weapon_position_forward vector auto from bounding box
weapon_position_aft vector auto from bounding box
weapon_position_port vector auto from bounding box
weapon_position_starboard vector auto from bounding box
scoop_position vector
heat_insulation +f 1
pilot character key
unpiloted z
Settings used at other times:
Code: Select all
escort-role ship role
escort-ship ship key
cargo_carried cargo type string
missile_launch_position vector
missile_role ship role 90% chance "EQ_MISSILE", otherwise "missile"
escape_pod_model ship role escape-capsule
aft_eject_position vector auto from bounding box
auto_ai b
Settings specific to player:
Code: Select all
extra_equipment dictionary
hud hud name
view_position_forward vector auto from bounding box
view_position_aft vector auto from bounding box
view_position_port vector auto from bounding box
view_position_starboard vector auto from bounding box
custom_views array
Settings specific to stations/dockable ships:
Code: Select all
rotating b
defense_ship ship key
defense_ship_role ship role
hasShipyard b or plist script condition
Notes:- accuracy: aiming accuracy modifier. For missiles, it must be in the range [-5..10] and is added to 85 to generate an aiming precision rating on a 0-100 scale (not really a percentage of anything); if not specified, a random value will be used. For ships, it is used to determine firing range; essentially a modifier to a random roll used to decide whether to shoot, with a default of 1, and higher values increasing the chance of long-range shots. The maximum range of the selected weapon type will never be exceeded.
- script_actions: “used by cargo-containers with CARGO_SCRIPT_ACTION when you scoop them, used by Stations when you dock with them, used during custom system set up too.”
- setup_actions: this is run very early in set-up -- specifically, before the stuff that’s listed after it above is even loaded.
- track_contacts: this
appears to be experimental stuff by Giles, possibly part of Remora Torpedo support or another of his mysterious scribbled notes. It causes a number of additional AI messages to be sent regarding nearby objects, specifically "CLOSE CONTACT", "POSITIVE X TRAVERSE", "NEGATIVE X TRAVERSE", "POSITIVE Y TRAVERSE", "NEGATIVE Y TRAVERSE", "POSITIVE Z TRAVERSE" and "NEGATIVE Z TRAVERSE". Unless someone finds something useful to do with these, I’ll probably remove/disable this in the stable release.
- auto_ai: it is by now well-established that I’m utterly incapable of explaining the point of this, but it was added to address the problem discussed here. Generally speaking, if a ship uses more than one of the generic roles, and does not use a custom AI, it should probably have auto_ai set. The most common generic roles are: trader, pirate, hunter. See also: autoAImap.plist.
- has_escape_pod: looks like a flag, but is actually a count.
- escape_pod_model: role (not model) for first/main escape pod. Additional escape pods always use role “escape-capsule”.
Special types:- ship key: string identifying a ship (key in shipdata.plist, not a role).
- weapon type: any of WEAPON_NONE, WEAPON_PLASMA_CANNON, WEAPON_PULSE_LASER, WEAPON_BEAM_LASER, WEAPON_MINING_LASER, WEAPON_MILITARY_LASER, WEAPON_THARGOID_LASER
- cargo type: any of CARGO_NOT_CARGO, CARGO_SLAVES, CARGO_ALLOY, CARGO_MINERALS, CARGO_THARGOID, CARGO_RANDOM, CARGO_SCRIPTED_ITEM, CARGO_CHARACTER
- material dictionary: documented here.
- colour specifier: documented here.
- scan class: any of CLASS_NOT_SET, CLASS_BUOY, CLASS_CARGO, CLASS_MILITARY, CLASS_MISSILE, CLASS_POLICE, CLASS_ROCK, CLASS_STATION, CLASS_THARGOID. There are a few others, but using them is probably a bad idea.
Posted: Sun Jul 15, 2007 12:39 am
by Commander McLane
Thanks for your work so far!
Ahruman wrote:track_contacts: this appears to be experimental stuff by Giles, possibly part of Remora Torpedo support or another of his mysterious scribbled notes. It causes a number of additional AI messages to be sent regarding nearby objects, specifically "CLOSE CONTACT", "POSITIVE X TRAVERSE", "NEGATIVE X TRAVERSE", "POSITIVE Y TRAVERSE", "NEGATIVE Y TRAVERSE", "POSITIVE Z TRAVERSE" and "NEGATIVE Z TRAVERSE". Unless someone finds something useful to do with these, I’ll probably remove/disable this in the stable release.
Please don't remove it, as there has already been found something useful to do with it:
Murgh has used it (and marked it as experimental) in tugs.oxp. The curses the tuggers throw at you when you're coming too close are triggered by the "CLOSE CONTACT"-message.
Posted: Sat Jul 21, 2007 9:35 am
by JensAyton
Hey, McLane, I notice you haven’t used the spiffy info you requested to update and clean up the wiki. ;-)