<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.vega-strike.org/mediawiki/index.php?action=history&amp;feed=atom&amp;title=CPPPY</id>
		<title>CPPPY - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.vega-strike.org/mediawiki/index.php?action=history&amp;feed=atom&amp;title=CPPPY"/>
		<link rel="alternate" type="text/html" href="https://wiki.vega-strike.org/mediawiki/index.php?title=CPPPY&amp;action=history"/>
		<updated>2026-05-13T15:58:30Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.2</generator>

	<entry>
		<id>https://wiki.vega-strike.org/mediawiki/index.php?title=CPPPY&amp;diff=19674&amp;oldid=prev</id>
		<title>Ezee: /* faction_generic.h */</title>
		<link rel="alternate" type="text/html" href="https://wiki.vega-strike.org/mediawiki/index.php?title=CPPPY&amp;diff=19674&amp;oldid=prev"/>
				<updated>2014-02-17T18:06:30Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;faction_generic.h&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 18:06, 17 February 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l112&quot; &gt;Line 112:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 112:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; EXPORT_UTIL(isSplashScreenShowing,true)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; EXPORT_UTIL(isSplashScreenShowing,true)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== faction_generic.h ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== faction_generic.h &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[http://spacetechs.free.fr/VEGASTRIKEDEV/DOC/html/faction__generic_8h.html]&lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; #ifndef __FACTIONGENERIC_H&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; #ifndef __FACTIONGENERIC_H&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ezee</name></author>	</entry>

	<entry>
		<id>https://wiki.vega-strike.org/mediawiki/index.php?title=CPPPY&amp;diff=19673&amp;oldid=prev</id>
		<title>Ezee: /* universe_util.h */</title>
		<link rel="alternate" type="text/html" href="https://wiki.vega-strike.org/mediawiki/index.php?title=CPPPY&amp;diff=19673&amp;oldid=prev"/>
				<updated>2014-02-17T18:03:24Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;universe_util.h&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 18:03, 17 February 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l262&quot; &gt;Line 262:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 262:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; #endif&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; #endif&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== universe_util.h ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== universe_util.h &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[http://spacetechs.free.fr/VEGASTRIKEDEV/DOC/html/universe__util_8h.html]&lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; #ifndef _UNIVERSE_UTILGENERIC_H__&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; #ifndef _UNIVERSE_UTILGENERIC_H__&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ezee</name></author>	</entry>

	<entry>
		<id>https://wiki.vega-strike.org/mediawiki/index.php?title=CPPPY&amp;diff=14795&amp;oldid=prev</id>
		<title>chuck_starchaser at 03:47, 5 March 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.vega-strike.org/mediawiki/index.php?title=CPPPY&amp;diff=14795&amp;oldid=prev"/>
				<updated>2008-03-05T03:47:32Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 03:47, 5 March 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== C++ functions callable from Python ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I (chuck_starchaser) wrote:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I (chuck_starchaser) wrote:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l6&quot; &gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 8:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;''This list is src/python/star_system_exports.h (the list of all VS.* functions), and their argument lists exist in faction_generic.h at the bottom as well as universe_util.h''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;''This list is src/python/star_system_exports.h (the list of all VS.* functions), and their argument lists exist in faction_generic.h at the bottom as well as universe_util.h''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== src/python/star_system_exports.h ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; voidEXPORT_UTIL(StopAllSounds)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; voidEXPORT_UTIL(StopAllSounds)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>chuck_starchaser</name></author>	</entry>

	<entry>
		<id>https://wiki.vega-strike.org/mediawiki/index.php?title=CPPPY&amp;diff=14794&amp;oldid=prev</id>
		<title>chuck_starchaser at 03:45, 5 March 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.vega-strike.org/mediawiki/index.php?title=CPPPY&amp;diff=14794&amp;oldid=prev"/>
				<updated>2008-03-05T03:45:24Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 03:45, 5 March 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I (chuck_starchaser) wrote:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I (chuck_starchaser) wrote:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;''Is there a document somewhere with a list of such functions? I'm not the py coder in our team, but I strongly suspect Dilloh doesn't know 1.63% of the functions available to him.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;''Is there a document somewhere with a list of such functions? I'm not the py coder in our team, but I strongly suspect Dilloh doesn't know 1.63% of the functions available to him.''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;......................................................&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Well, how about a system where flight-group conditions override faction, when defined; and where individual conditions override flight group conditions, when defined?&lt;/del&gt;''&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ace123 wrote:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ace123 wrote:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>chuck_starchaser</name></author>	</entry>

	<entry>
		<id>https://wiki.vega-strike.org/mediawiki/index.php?title=CPPPY&amp;diff=14793&amp;oldid=prev</id>
		<title>chuck_starchaser at 03:43, 5 March 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.vega-strike.org/mediawiki/index.php?title=CPPPY&amp;diff=14793&amp;oldid=prev"/>
				<updated>2008-03-05T03:43:49Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;I (chuck_starchaser) wrote:&lt;br /&gt;
&lt;br /&gt;
''Is there a document somewhere with a list of such functions? I'm not the py coder in our team, but I strongly suspect Dilloh doesn't know 1.63% of the functions available to him.&lt;br /&gt;
......................................................&lt;br /&gt;
Well, how about a system where flight-group conditions override faction, when defined; and where individual conditions override flight group conditions, when defined?''&lt;br /&gt;
&lt;br /&gt;
Ace123 wrote:&lt;br /&gt;
&lt;br /&gt;
''This list is src/python/star_system_exports.h (the list of all VS.* functions), and their argument lists exist in faction_generic.h at the bottom as well as universe_util.h''&lt;br /&gt;
&lt;br /&gt;
 voidEXPORT_UTIL(StopAllSounds)&lt;br /&gt;
 EXPORT_UTIL(getNumUnits,0)&lt;br /&gt;
 EXPORT_FACTION(GetFactionName,&amp;quot;&amp;quot;)&lt;br /&gt;
 EXPORT_FACTION(GetFactionIndex,-1)&lt;br /&gt;
 EXPORT_FACTION(GetRelation,0)&lt;br /&gt;
 EXPORT_FACTION(isCitizen,0)&lt;br /&gt;
 voidEXPORT_FACTION(AdjustRelation)&lt;br /&gt;
 EXPORT_FACTION(GetNumFactions,0)&lt;br /&gt;
 EXPORT_UTIL(GetAdjacentSystem,&amp;quot;&amp;quot;)&lt;br /&gt;
 voidEXPORT_UTIL(pushSystem)&lt;br /&gt;
 voidEXPORT_UTIL(popSystem)&lt;br /&gt;
 voidEXPORT_UTIL(precacheUnit)&lt;br /&gt;
 EXPORT_UTIL(getSystemFile,&amp;quot;&amp;quot;)&lt;br /&gt;
 EXPORT_UTIL(getSystemName,&amp;quot;&amp;quot;)&lt;br /&gt;
 EXPORT_UTIL(systemInMemory,0)&lt;br /&gt;
 EXPORT_UTIL(GetGalaxyProperty,&amp;quot;&amp;quot;)&lt;br /&gt;
 EXPORT_UTIL(GetGalaxyFaction,&amp;quot;&amp;quot;)&lt;br /&gt;
 voidEXPORT_UTIL(SetGalaxyFaction)&lt;br /&gt;
 EXPORT_UTIL(GetGalaxyPropertyDefault,&amp;quot;&amp;quot;)&lt;br /&gt;
 EXPORT_UTIL(GetNumAdjacentSystems,0)&lt;br /&gt;
 voidEXPORT_UTIL(terminateMission)&lt;br /&gt;
 EXPORT_UTIL(addObjective,0)&lt;br /&gt;
 voidEXPORT_UTIL(setObjective)&lt;br /&gt;
 voidEXPORT_UTIL(eraseObjective)&lt;br /&gt;
 voidEXPORT_UTIL(clearObjectives)&lt;br /&gt;
 voidEXPORT_UTIL(setCompleteness)&lt;br /&gt;
 EXPORT_UTIL(getCompleteness,0)&lt;br /&gt;
 EXPORT_UTIL(vsConfig,&amp;quot;&amp;quot;)&lt;br /&gt;
 EXPORT_UTIL(sqrt,1)&lt;br /&gt;
 EXPORT_UTIL(log,0)&lt;br /&gt;
 EXPORT_UTIL(timeofday,10003)&lt;br /&gt;
 EXPORT_UTIL(exp,1)&lt;br /&gt;
 EXPORT_UTIL(acos,1)&lt;br /&gt;
 EXPORT_UTIL(asin,1)&lt;br /&gt;
 EXPORT_UTIL(atan,1)&lt;br /&gt;
 EXPORT_UTIL(tan,1)&lt;br /&gt;
 EXPORT_UTIL(sin,.86)&lt;br /&gt;
 EXPORT_UTIL(cos,.86)&lt;br /&gt;
 voidEXPORT_UTIL(IOmessage)&lt;br /&gt;
 EXPORT_UTIL(SafeEntrancePoint,(10000000,0,0))&lt;br /&gt;
 voidEXPORT_UTIL(setScratchVector)&lt;br /&gt;
 EXPORT_UTIL(getScratchVector,(0,0,0))&lt;br /&gt;
 EXPORT_UTIL(numActiveMissions,1)&lt;br /&gt;
 voidEXPORT_UTIL(SetAutoStatus)&lt;br /&gt;
 voidEXPORT_UTIL(LoadMission)&lt;br /&gt;
 voidEXPORT_UTIL(LoadMissionScript)&lt;br /&gt;
 voidEXPORT_UTIL(setMissionOwner)&lt;br /&gt;
 EXPORT_UTIL(getMissionOwner,1)&lt;br /&gt;
 EXPORT_UTIL(GetDifficulty,1)&lt;br /&gt;
 voidEXPORT_UTIL(SetDifficulty)&lt;br /&gt;
 EXPORT_UTIL(GetGameTime,0)&lt;br /&gt;
 voidEXPORT_UTIL(SetTimeCompression)&lt;br /&gt;
 EXPORT_UTIL(getRandCargo,Cargo())&lt;br /&gt;
 EXPORT_UTIL(getPlanetRadiusPercent,.75)&lt;br /&gt;
&lt;br /&gt;
 EXPORT_UTIL(musicAddList,0)&lt;br /&gt;
 voidEXPORT_UTIL(musicPlaySong)&lt;br /&gt;
 voidEXPORT_UTIL(musicSkip)&lt;br /&gt;
 voidEXPORT_UTIL(musicStop)&lt;br /&gt;
 voidEXPORT_UTIL(musicPlayList)&lt;br /&gt;
 voidEXPORT_UTIL(musicLoopList)&lt;br /&gt;
&lt;br /&gt;
 voidEXPORT_UTIL(musicLayerPlaySong)&lt;br /&gt;
 voidEXPORT_UTIL(musicLayerSkip)&lt;br /&gt;
 voidEXPORT_UTIL(musicLayerStop)&lt;br /&gt;
 voidEXPORT_UTIL(musicLayerPlayList)&lt;br /&gt;
 voidEXPORT_UTIL(musicLayerLoopList)&lt;br /&gt;
 voidEXPORT_UTIL(musicLayerSetSoftVolume)&lt;br /&gt;
 voidEXPORT_UTIL(musicLayerSetHardVolume)&lt;br /&gt;
 voidEXPORT_UTIL(musicSetSoftVolume)&lt;br /&gt;
 voidEXPORT_UTIL(musicSetHardVolume)&lt;br /&gt;
&lt;br /&gt;
 voidEXPORT_UTIL(playSound)&lt;br /&gt;
 voidEXPORT_UTIL(cacheAnimation)&lt;br /&gt;
 voidEXPORT_UTIL(playAnimation)&lt;br /&gt;
 voidEXPORT_UTIL(playAnimationGrow)&lt;br /&gt;
 voidEXPORT_UTIL(micro_sleep)&lt;br /&gt;
 EXPORT_UTIL(getCurrentPlayer,0)&lt;br /&gt;
 voidEXPORT_UTIL(addParticle)&lt;br /&gt;
 voidEXPORT_UTIL(TargetEachOther)&lt;br /&gt;
 voidEXPORT_UTIL(StopTargettingEachOther)   &lt;br /&gt;
 EXPORT_UTIL(LookupUnitStat,&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 EXPORT_UTIL(networked,false)&lt;br /&gt;
 EXPORT_UTIL(isserver,false)&lt;br /&gt;
 EXPORT_UTIL(getSaveDir,&amp;quot;&amp;quot;)&lt;br /&gt;
 EXPORT_UTIL(getSaveInfo,&amp;quot;&amp;quot;)&lt;br /&gt;
 EXPORT_UTIL(getCurrentSaveGame,&amp;quot;&amp;quot;)&lt;br /&gt;
 EXPORT_UTIL(getNewGameSaveName,&amp;quot;&amp;quot;)&lt;br /&gt;
 voidEXPORT_UTIL(loadGame)&lt;br /&gt;
 voidEXPORT_UTIL(saveGame)&lt;br /&gt;
&lt;br /&gt;
 voidEXPORT_UTIL(sendCustom)&lt;br /&gt;
 voidEXPORT_UTIL(receivedCustom)&lt;br /&gt;
&lt;br /&gt;
 voidEXPORT_UTIL(showSplashScreen)&lt;br /&gt;
 voidEXPORT_UTIL(showSplashMessage)&lt;br /&gt;
 voidEXPORT_UTIL(showSplashProgress)&lt;br /&gt;
 voidEXPORT_UTIL(hideSplashScreen)&lt;br /&gt;
 EXPORT_UTIL(isSplashScreenShowing,true)&lt;br /&gt;
&lt;br /&gt;
== faction_generic.h ==&lt;br /&gt;
&lt;br /&gt;
 #ifndef __FACTIONGENERIC_H&lt;br /&gt;
 #define __FACTIONGENERIC_H&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;string&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;gnuhash.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;xml_support.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 class FSM;&lt;br /&gt;
 class Animation;&lt;br /&gt;
 class Unit;&lt;br /&gt;
 class Texture;&lt;br /&gt;
 typedef stdext::hash_map&amp;lt;std::string, float&amp;gt; MapStringFloat;&lt;br /&gt;
   class Faction {&lt;br /&gt;
 &lt;br /&gt;
   public:&lt;br /&gt;
     /**&lt;br /&gt;
      * Faction_stuff holds the index and relationship of each and every&lt;br /&gt;
      * Other faction.  After it has been properly processed when calling&lt;br /&gt;
      * LoadXML, it will hold an ordered list containing all factions.&lt;br /&gt;
      * myfaction.faction[theirfaction].relationship will contain my&lt;br /&gt;
      * attitude to theirfaction&lt;br /&gt;
      */&lt;br /&gt;
     struct faction_stuff {&lt;br /&gt;
       ///for internal purposes only.&lt;br /&gt;
       union faction_name {&lt;br /&gt;
    int index;&lt;br /&gt;
    char * name;&lt;br /&gt;
       } stats;&lt;br /&gt;
       ///A value between 0 and 1 indicating my attitude towards index&lt;br /&gt;
       float relationship;&lt;br /&gt;
       class FSM * conversation;//a conversation any two factions can have&lt;br /&gt;
       faction_stuff () {conversation=NULL;relationship=0;}&lt;br /&gt;
     };      &lt;br /&gt;
   public:&lt;br /&gt;
     /**&lt;br /&gt;
      * holds the relationships to all _other_ factions loaded&lt;br /&gt;
      * hold misguided info for self FIXME&lt;br /&gt;
      */&lt;br /&gt;
     bool citizen;&lt;br /&gt;
     int playlist;&lt;br /&gt;
     float sparkcolor[4];&lt;br /&gt;
     std::vector &amp;lt;faction_stuff&amp;gt; faction;&lt;br /&gt;
    ///If logo==0, load from this one&lt;br /&gt;
    std::string logoName;&lt;br /&gt;
    std::string logoAlphaName;&lt;br /&gt;
    ///If secondaryLogo==0, load from this one&lt;br /&gt;
    std::string secondaryLogoName;&lt;br /&gt;
    std::string secondaryLogoAlphaName;&lt;br /&gt;
     ///Logos used by the ships of that faction&lt;br /&gt;
     Texture * logo;&lt;br /&gt;
     //if the squadron doens't; have its own particular logo&lt;br /&gt;
     Texture * secondaryLogo;&lt;br /&gt;
     ///char * of the name&lt;br /&gt;
     char * factionname;&lt;br /&gt;
     struct comm_face_t{&lt;br /&gt;
       std::vector &amp;lt;class Animation *&amp;gt; animations;&lt;br /&gt;
       enum CHOICE{CNO,CYES,CEITHER} ;&lt;br /&gt;
       CHOICE dockable;&lt;br /&gt;
       CHOICE base;&lt;br /&gt;
       comm_face_t():dockable(CEITHER),base(CEITHER){}&lt;br /&gt;
     };&lt;br /&gt;
     std::vector &amp;lt;comm_face_t&amp;gt; comm_faces;&lt;br /&gt;
     std::vector &amp;lt;class Animation *&amp;gt; explosion;&lt;br /&gt;
     std::vector &amp;lt;std::string&amp;gt; explosion_name;&lt;br /&gt;
     std::vector &amp;lt;unsigned char&amp;gt; comm_face_sex;&lt;br /&gt;
     MapStringFloat ship_relation_modifier;&lt;br /&gt;
     Unit * contraband;&lt;br /&gt;
     ///Figures out the relationships of each faction with each other&lt;br /&gt;
     static void ParseAllAllies(/*Universe * thisuni*/);&lt;br /&gt;
     void ParseAllies(/*Universe * thisuni,*/ unsigned int whichfaction);&lt;br /&gt;
    &lt;br /&gt;
     static void LoadXML(const char * factionfile, char * xmlbuffer=NULL, int buflength=0);&lt;br /&gt;
     static void beginElement(void *userData, const XML_Char *name, const XML_Char **atts);&lt;br /&gt;
    static void endElement(void *userData, const XML_Char *name);&lt;br /&gt;
    Faction() {&lt;br /&gt;
    playlist=-1;&lt;br /&gt;
         citizen=false;&lt;br /&gt;
       logo=secondaryLogo=NULL;&lt;br /&gt;
       contraband=NULL;&lt;br /&gt;
       factionname=NULL;&lt;br /&gt;
       sparkcolor[0]=.5;&lt;br /&gt;
       sparkcolor[1]=.5;&lt;br /&gt;
       sparkcolor[2]=1;&lt;br /&gt;
       sparkcolor[3]=1;&lt;br /&gt;
    }&lt;br /&gt;
     ~Faction(); //destructor&lt;br /&gt;
  };&lt;br /&gt;
 &lt;br /&gt;
 extern  std::vector &amp;lt;Faction *&amp;gt; factions; //the factions&lt;br /&gt;
 &lt;br /&gt;
 namespace FactionUtil {&lt;br /&gt;
     extern int upgradefac;&lt;br /&gt;
     extern int neutralfac;&lt;br /&gt;
     extern int planetfac;&lt;br /&gt;
       std::vector &amp;lt;class Animation *&amp;gt;* GetRandCommAnimation(int faction, Unit * unit, unsigned char &amp;amp;sex);&lt;br /&gt;
       void SerializeFaction (FILE * file);&lt;br /&gt;
       string SerializeFaction();&lt;br /&gt;
       void LoadSerializedFaction (FILE * file);&lt;br /&gt;
       void LoadSerializedFaction( char * &amp;amp;buf);&lt;br /&gt;
       int numnums (const char * str);&lt;br /&gt;
       ///returns the index of the faction with that name&lt;br /&gt;
       //int GetFaction (const char *factionname);&lt;br /&gt;
       int GetNumAnimation(int faction);&lt;br /&gt;
       const char * GetFaction (int faction);&lt;br /&gt;
       class Unit * GetContraband(int faction);&lt;br /&gt;
       /**&lt;br /&gt;
       * Returns the relationship between myfaction and theirfaction&lt;br /&gt;
       * 1 is happy. 0 is neutral (btw 1 and 0 will not attack)&lt;br /&gt;
       * -1 is mad. &amp;lt;0 will attack&lt;br /&gt;
       */&lt;br /&gt;
       int GetFactionIndex(string name);&lt;br /&gt;
       inline int GetUpgradeFaction(){return upgradefac;}&lt;br /&gt;
       inline int GetNeutralFaction(){return neutralfac;}&lt;br /&gt;
       inline int GetPlanetFaction(){return planetfac;}&lt;br /&gt;
                 inline float GetIntRelation (const int myfaction, const int theirfaction){&lt;br /&gt;
                    return factions[myfaction]-&amp;gt;faction[theirfaction].relationship;&lt;br /&gt;
                 }&lt;br /&gt;
 &lt;br /&gt;
       float GetRelation (string myfaction, string theirfaction);&lt;br /&gt;
       string GetFactionName(int index);&lt;br /&gt;
       bool isCitizenInt(int index);&lt;br /&gt;
       bool isCitizen(std::string name);&lt;br /&gt;
       void AdjustIntRelation (const int myfaction, const int theirfaction, const float factor, const float rank);&lt;br /&gt;
       void AdjustRelation(string myfaction,string theirfaction, float factor, float rank);&lt;br /&gt;
       int GetPlaylist (const int myfaction);&lt;br /&gt;
       const float* GetSparkColor (const int myfaction);&lt;br /&gt;
       unsigned int GetNumFactions();&lt;br /&gt;
       //Returns a conversation that a myfaction might have with a theirfaction&lt;br /&gt;
       FSM* GetConversation (const int myfaction, const int theirfaction);&lt;br /&gt;
       Texture *getForceLogo (int faction);&lt;br /&gt;
       Texture *getSquadLogo (int faction);&lt;br /&gt;
 &lt;br /&gt;
       Animation * createAnimation( const char * anim);&lt;br /&gt;
       Texture * createTexture( const char * tex, const char * tmp, bool force=false);&lt;br /&gt;
       Texture * createTexture( const char * tex, bool force=false);&lt;br /&gt;
       std::vector &amp;lt;class Animation *&amp;gt; * GetAnimation(int faction, int n, unsigned char &amp;amp;sex);&lt;br /&gt;
       Animation * GetRandExplosionAnimation (int whichfaction,std::string&amp;amp;which);&lt;br /&gt;
       void LoadFactionPlaylists();&lt;br /&gt;
       /** Still in faction_xml.cpp because createUnit **/&lt;br /&gt;
       void LoadContrabandLists();&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 extern  std::vector &amp;lt;Faction *&amp;gt; factions; //the factions&lt;br /&gt;
 &lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
== universe_util.h ==&lt;br /&gt;
&lt;br /&gt;
 #ifndef _UNIVERSE_UTILGENERIC_H__&lt;br /&gt;
 #define _UNIVERSE_UTILGENERIC_H__&lt;br /&gt;
 #include &amp;quot;cmd/collection.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;gfx/vec.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;networking/const.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;cmd/unit_util.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;string&amp;gt;&lt;br /&gt;
 #include &amp;lt;vector&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 class Unit;&lt;br /&gt;
 class StarSystem;&lt;br /&gt;
 class Cargo;&lt;br /&gt;
 &lt;br /&gt;
 namespace UniverseUtil&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
    class PythonUnitIter: public un_iter&lt;br /&gt;
    {&lt;br /&gt;
       public:&lt;br /&gt;
          PythonUnitIter ():UnitIterator(){}&lt;br /&gt;
          //   PythonUnitIterator (UnitListNode * start):UnitIterator(start){}&lt;br /&gt;
          PythonUnitIter (const UnitCollection::UnitIterator &amp;amp;t):UnitIterator(t){}&lt;br /&gt;
           ~PythonUnitIter() {;}&lt;br /&gt;
          Unit* current();&lt;br /&gt;
          inline void advance() { UnitIterator::advance();}&lt;br /&gt;
          void advanceSignificant();&lt;br /&gt;
          void advanceInsignificant();&lt;br /&gt;
          void advancePlanet();&lt;br /&gt;
          void advanceJumppoint();&lt;br /&gt;
          void advanceN(int);&lt;br /&gt;
          void advanceNSignificant(int n);&lt;br /&gt;
          void advanceNInsignificant(int n);&lt;br /&gt;
          void advanceNPlanet(int n);&lt;br /&gt;
          void advanceNJumppoint(int n);&lt;br /&gt;
          inline void preinsert(Unit *unit) { UnitIterator::preinsert(unit);}&lt;br /&gt;
          inline bool isDone() { return(UnitIterator::isDone());}&lt;br /&gt;
          inline bool notDone() {return(UnitIterator::notDone());}&lt;br /&gt;
          inline void remove() { UnitIterator::remove();}&lt;br /&gt;
          inline class Unit* next() { advance();return(current());}&lt;br /&gt;
          &lt;br /&gt;
    };&lt;br /&gt;
 &lt;br /&gt;
    std::string LookupUnitStat(const std::string &amp;amp;unitname, const std::string &amp;amp;faction, const std::string &amp;amp;statname);&lt;br /&gt;
 &lt;br /&gt;
    Unit * GetUnitFromSerial( ObjSerial serial);&lt;br /&gt;
    ///this gets a unit with 1 of each cargo type in it&lt;br /&gt;
    Unit *GetMasterPartList ();&lt;br /&gt;
    ///this function sets the &amp;quot;current&amp;quot; system to be &amp;quot;name&amp;quot;  where name may be something like &amp;quot;sol_sector/sol&amp;quot;  or &amp;quot;vega_sector/vega&amp;quot;   this function may take some time if the system has not been loaded before&lt;br /&gt;
 &lt;br /&gt;
    void pushSystem (std::string name);&lt;br /&gt;
    bool systemInMemory(std::string name);&lt;br /&gt;
    ///this function restores the active system.... there must be an equal number of pushSystems ans popSystems or else Vega Strike may behave unpredictably&lt;br /&gt;
    void popSystem ();&lt;br /&gt;
    ///This function gets the current system's official name&lt;br /&gt;
    std::string getSystemFile();&lt;br /&gt;
    ///this function gets the current system's nickname (not useful)&lt;br /&gt;
    std::string getSystemName();&lt;br /&gt;
    ///this function gets an iterator into the units in the current system... do NOT keep an iterator across a frame--it may get deleted!&lt;br /&gt;
    PythonUnitIter getUnitList();&lt;br /&gt;
    ///This function gets a unit given a number (how many iterations to go down in the iterator)&lt;br /&gt;
    Unit *getUnit(int index);&lt;br /&gt;
    ///This function gets a unit given a name&lt;br /&gt;
    Unit *getUnitByName(std::string name);&lt;br /&gt;
    ///This function gets a unit given an unreferenceable pointer to it - much faster if finder is provided&lt;br /&gt;
    Unit *getUnitByPtr(void* ptr, Unit * finder=0, bool allowslowness=true);&lt;br /&gt;
    Unit *getScratchUnit();&lt;br /&gt;
    void setScratchUnit(Unit *);&lt;br /&gt;
 &lt;br /&gt;
    void precacheUnit(std::string name, std::string faction);&lt;br /&gt;
    QVector getScratchVector();&lt;br /&gt;
    void setScratchVector(QVector);&lt;br /&gt;
    int getNumUnits();&lt;br /&gt;
    void cacheAnimation (std::string anim);&lt;br /&gt;
    ///this function launches a wormhole or ajump point.&lt;br /&gt;
    Unit *launchJumppoint(std::string name_string,&lt;br /&gt;
       std::string faction_string,&lt;br /&gt;
       std::string type_string,&lt;br /&gt;
       std::string unittype_string,&lt;br /&gt;
       std::string ai_string,&lt;br /&gt;
       int nr_of_ships,&lt;br /&gt;
       int nr_of_waves,&lt;br /&gt;
       QVector pos,&lt;br /&gt;
       std::string squadlogo,&lt;br /&gt;
       std::string destinations);&lt;br /&gt;
    std::string vsConfig(std::string category,std::string option,std::string def);&lt;br /&gt;
    ///this function launches a normal fighter  the name is the flightgroup name, the type is the ship type, the faction is who it belongs to, the unittype is usually &amp;quot;unit&amp;quot; unless you want to make asteroids or nebulae or jump points or planets.  the aistring is either a python filename or &amp;quot;default&amp;quot;  the nr of ships is the number of ships to be launched with this group, the number of waves is num reinforcements... the position is a tuple (x,y,z) where they appear and the squadlogo is a squadron image...you can leave this the empty string '' for the default squadron logo.&lt;br /&gt;
    Unit* launch (std::string name_string,std::string type_string,std::string faction_string,std::string unittype, std::string ai_string,int nr_of_ships,int nr_of_waves, QVector pos, std::string sqadlogo);&lt;br /&gt;
    ///this gets a random cargo type (useful for cargo missions) from either any category if category is '' or else from a specific category  'Contraband'  comes to mind!&lt;br /&gt;
    Cargo getRandCargo(int quantity, std::string category);&lt;br /&gt;
    ///this gets a string which has in it a space delimited list of neighmoring systems&lt;br /&gt;
    std::string GetAdjacentSystem (std::string str, int which);&lt;br /&gt;
    ///this gets a specific property of this system as found in universe/milky_way.xml&lt;br /&gt;
    std::string GetGalaxyProperty (std::string sys, std::string prop);&lt;br /&gt;
    ///this gets a specific property of this system as found in universe/milky_way.xml and returns a default value if not found&lt;br /&gt;
    std::string GetGalaxyPropertyDefault (std::string sys, std::string prop, std::string def);&lt;br /&gt;
    ///this gets the number of systems adjacent to the sysname&lt;br /&gt;
    std::string GetGalaxyFaction(std::string sys);&lt;br /&gt;
    void SetGalaxyFaction(std::string sys, std::string fac);&lt;br /&gt;
    int GetNumAdjacentSystems (std::string sysname);&lt;br /&gt;
    ///this gets the current time in seconds&lt;br /&gt;
    float GetGameTime ();&lt;br /&gt;
    ///this sets the time compresison value to zero&lt;br /&gt;
    void SetTimeCompression ();&lt;br /&gt;
    ///this adds a playlist to the music and may be triggered with an int&lt;br /&gt;
    int musicAddList(std::string str);&lt;br /&gt;
    ///sets the software volume, with smooth transitions (latency_override==-1 uses default transition time)&lt;br /&gt;
    void musicSetSoftVolume(float vol, float latency_override);&lt;br /&gt;
    ///sets the hardware volume, does not support transitions of any kind.&lt;br /&gt;
    void musicSetHardVolume(float vol);&lt;br /&gt;
    ///this plays a specific song, at a specific layer&lt;br /&gt;
    void musicLayerPlaySong(std::string str,int layer);&lt;br /&gt;
    ///this plays msuci from a given list, at a specific layer (where the int is what was returned by musicAddList)&lt;br /&gt;
    void musicLayerPlayList(int which,int layer);&lt;br /&gt;
    ///this plays msuci from a given list, at a specific layer (where the int is what was returned by musicAddList)&lt;br /&gt;
    void musicLayerLoopList(int numloops,int layer);&lt;br /&gt;
    ///this skips the current music track, at a specific layer (and goes to the next in the currently playing list)&lt;br /&gt;
    void musicLayerSkip(int layer);&lt;br /&gt;
    ///this stops the music currently playing at a specific layer - with a nice fadeout&lt;br /&gt;
    void musicLayerStop(int layer);&lt;br /&gt;
    ///sets the software volume, with smooth transitions (latency_override==-1 uses default transition time)&lt;br /&gt;
    void musicLayerSetSoftVolume(float vol, float latency_override, int layer);&lt;br /&gt;
    ///sets the hardware volume, does not support transitions of any kind.&lt;br /&gt;
    void musicLayerSetHardVolume(float vol, int layer);&lt;br /&gt;
    ///this mutes sound - or unmutes it&lt;br /&gt;
    void musicMute(bool stopSound);&lt;br /&gt;
    ///this plays a specific song, through the crossfader construct&lt;br /&gt;
    inline void musicPlaySong(std::string str) { musicLayerPlaySong(str,-1); };&lt;br /&gt;
    ///this plays msuci from a given list (where the int is what was returned by musicAddList)&lt;br /&gt;
    inline void musicPlayList(int which) { musicLayerPlayList(which,-1); };&lt;br /&gt;
    ///this plays msuci from a given list (where the int is what was returned by musicAddList)&lt;br /&gt;
    inline void musicLoopList(int numloops) { musicLayerLoopList(numloops,-1); };&lt;br /&gt;
    ///this skips the current music track (and goes to the next in the currently playing list)&lt;br /&gt;
    inline void musicSkip() { musicLayerSkip(-1); };&lt;br /&gt;
    ///this stops the music currently playing - with a nice fadeout&lt;br /&gt;
    inline void musicStop() { musicLayerStop(-1); };&lt;br /&gt;
    ///this gets the difficutly of the game... ranges between 0 and 1... many missions depend on it never going past .99 unless it's always at one.&lt;br /&gt;
    float GetDifficulty ();&lt;br /&gt;
    ///this sets the difficulty&lt;br /&gt;
    void SetDifficulty (float diff);&lt;br /&gt;
    ///this plays a sound at a location...if the sound has dual channels it will play in the center&lt;br /&gt;
    void playSound(std::string soundName, QVector loc, Vector speed);&lt;br /&gt;
    ///this plays an image (explosion or warp animation) at a location&lt;br /&gt;
    void playAnimation(std::string aniName, QVector loc, float size);&lt;br /&gt;
    void playAnimationGrow(std::string aniName, QVector loc, float size,float growpercent);&lt;br /&gt;
    ///tells the respective flightgroups in this system to start shooting at each other&lt;br /&gt;
    void TargetEachOther (std::string fgname, std::string faction, std::string enfgname, std::string enfaction);&lt;br /&gt;
    ///tells the respective flightgroups in this system to stop killing each other urgently...they may still attack--just not warping and stuff&lt;br /&gt;
    void StopTargettingEachOther(std::string fgname, std::string faction, std::string enfgname, std::string enfaction);&lt;br /&gt;
 &lt;br /&gt;
    ///this ends the mission with either success or failure&lt;br /&gt;
    void terminateMission(bool term);&lt;br /&gt;
    ///this gets the player belonging to this mission&lt;br /&gt;
    Unit *getPlayer();&lt;br /&gt;
    ///this gets a player number (if in splitscreen mode)&lt;br /&gt;
    Unit *getPlayerX(int which);&lt;br /&gt;
    unsigned int getCurrentPlayer();&lt;br /&gt;
    ///this gets the number of active players&lt;br /&gt;
     int getNumPlayers ();&lt;br /&gt;
    // Clears all objectives (used for server-side when it's easy to get inconsistent.&lt;br /&gt;
    void clearObjectives();&lt;br /&gt;
    // Erases an objective.&lt;br /&gt;
    void eraseObjective(int which);&lt;br /&gt;
    ///this adds an objective for the cockpit to view (&amp;quot;go here and do this)&lt;br /&gt;
    int addObjective(std::string objective);&lt;br /&gt;
    ///this sets the objective's completeness (the int was returned by add objective)&lt;br /&gt;
    void setObjective(int which, std::string newobjective);&lt;br /&gt;
    ///this sets the completeness of a particular objective... chanigng the color onscreen&lt;br /&gt;
    void setCompleteness(int which, float completeNess);&lt;br /&gt;
    ///this gets that completeness&lt;br /&gt;
    float getCompleteness(int which);&lt;br /&gt;
    ///this sets the owner of a completeness&lt;br /&gt;
    void setOwnerII(int which,Unit *owner);&lt;br /&gt;
    ///this gets an owner of a completeness (NULL means all players can see this objective)&lt;br /&gt;
    Unit* getOwner(int which);&lt;br /&gt;
    //gets the owner of this mission&lt;br /&gt;
    int getMissionOwner();&lt;br /&gt;
    //sets the owner of this mission to be a particular cockpit&lt;br /&gt;
    void setMissionOwner(int);&lt;br /&gt;
    ///returns number missions running to tweak difficulty&lt;br /&gt;
    int numActiveMissions();&lt;br /&gt;
    ///this sends an IO message... I'm not sure if delay currently works, but from, to and message do :-) ... if you want to send to the bar do &amp;quot;bar&amp;quot; as the to string... if you want to make news for the news room specify &amp;quot;news&amp;quot;&lt;br /&gt;
    void IOmessage(int delay,std::string from,std::string to,std::string message);&lt;br /&gt;
    ///this gets a unit with 1 of each cargo type in it&lt;br /&gt;
    Unit *GetMasterPartList ();&lt;br /&gt;
    ///this gets a unit with a faction's contraband list... may be null (check with isNull)&lt;br /&gt;
    Unit *GetContrabandList (std::string faction);&lt;br /&gt;
    ///this sets whether or not a player may autopilot.  Normally they are both 0 and the autopiloting is allowed based on if enemies are near... if you pass in 1 then autopilot will be allowed no matter who is near... if you set -1 then autopilot is never allowed.  global affects all players... player just affects the player who accepted the mission.&lt;br /&gt;
    void SetAutoStatus (int global_auto, int player_auto);&lt;br /&gt;
    void LoadMission (std::string missionname);&lt;br /&gt;
    void LoadMissionScript (std::string scriptcontents);&lt;br /&gt;
    QVector SafeEntrancePoint (QVector,float radial_size=-1);&lt;br /&gt;
    QVector SafeStarSystemEntrancePoint (StarSystem *sts, QVector,float radial_size=-1);&lt;br /&gt;
    float getPlanetRadiusPercent ();&lt;br /&gt;
 &lt;br /&gt;
    void cacheAnimation (std::string anim);&lt;br /&gt;
    ///this function launches a wormhole or ajump point.&lt;br /&gt;
    Unit *launchJumppoint(std::string name_string,&lt;br /&gt;
       std::string faction_string,&lt;br /&gt;
       std::string type_string,&lt;br /&gt;
       std::string unittype_string,&lt;br /&gt;
       std::string ai_string,&lt;br /&gt;
       int nr_of_ships,&lt;br /&gt;
       int nr_of_waves,&lt;br /&gt;
       QVector pos,&lt;br /&gt;
       std::string squadlogo,&lt;br /&gt;
       std::string destinations);&lt;br /&gt;
    ///this function launches a normal fighter  the name is the flightgroup name, the type is the ship type, the faction is who it belongs to, the unittype is usually &amp;quot;unit&amp;quot; unless you want to make asteroids or nebulae or jump points or planets.  the aistring is either a python filename or &amp;quot;default&amp;quot;  the nr of ships is the number of ships to be launched with this group, the number of waves is num reinforcements... the position is a tuple (x,y,z) where they appear and the squadlogo is a squadron image...you can leave this the empty string '' for the default squadron logo.&lt;br /&gt;
    Unit* launch (std::string name_string,std::string type_string,std::string faction_string,std::string unittype, std::string ai_string,int nr_of_ships,int nr_of_waves, QVector pos, std::string sqadlogo);&lt;br /&gt;
    ///this gets a random cargo type (useful for cargo missions) from either any category if category is '' or else from a specific category  'Contraband'  comes to mind!&lt;br /&gt;
    Cargo getRandCargo(int quantity, std::string category);&lt;br /&gt;
    ///this gets the current time in seconds&lt;br /&gt;
    float GetGameTime ();&lt;br /&gt;
    ///this sets the time compresison value to zero&lt;br /&gt;
    void SetTimeCompression ();&lt;br /&gt;
    ///this adds a playlist to the music and may be triggered with an int&lt;br /&gt;
    int musicAddList(std::string str);&lt;br /&gt;
    ///this plays a specific song&lt;br /&gt;
    void musicPlaySong(std::string str);&lt;br /&gt;
    ///this plays msuci from a given list (where the int is what was returned by musicAddList)&lt;br /&gt;
    void musicPlayList(int which);&lt;br /&gt;
    ///this plays msuci from a given list (where the int is what was returned by musicAddList)&lt;br /&gt;
    void musicLoopList(int numloops);&lt;br /&gt;
    ///this plays a sound at a location...if the sound has dual channels it will play in the center&lt;br /&gt;
    void playSound(std::string soundName, QVector loc, Vector speed);&lt;br /&gt;
    ///this plays an image (explosion or warp animation) at a location&lt;br /&gt;
    void playAnimation(std::string aniName, QVector loc, float size);&lt;br /&gt;
    void playAnimationGrow(std::string aniName, QVector loc, float size,float growpercent);&lt;br /&gt;
    ///this gets the player belonging to this mission&lt;br /&gt;
    Unit *getPlayer();&lt;br /&gt;
    ///this gets a player number (if in splitscreen mode)&lt;br /&gt;
    Unit *getPlayerX(int which);&lt;br /&gt;
    void StopAllSounds(void);&lt;br /&gt;
    unsigned int getCurrentPlayer();&lt;br /&gt;
    ///this gets the number of active players&lt;br /&gt;
    int getNumPlayers ();&lt;br /&gt;
    int maxMissions ();&lt;br /&gt;
    bool networked ();&lt;br /&gt;
    bool isserver ();&lt;br /&gt;
    // Forwards this request onto the server if this is a client, or send back to client.&lt;br /&gt;
    void sendCustom (int cp, string cmd, string args, string id);&lt;br /&gt;
    // Executes a python script&lt;br /&gt;
    void receivedCustom (int cp, bool trusted, string cmd, string args, string id);&lt;br /&gt;
    &lt;br /&gt;
    std::string getVariable(std::string section,std::string name,std::string def);&lt;br /&gt;
    std::string getSubVariable(std::string section,std::string subsection,std::string name,std::string def);&lt;br /&gt;
    double timeofday ();&lt;br /&gt;
    double sqrt (double);&lt;br /&gt;
    double log (double);&lt;br /&gt;
    double exp (double);&lt;br /&gt;
    double cos (double);&lt;br /&gt;
    double sin (double);&lt;br /&gt;
    double acos (double);&lt;br /&gt;
    double asin (double);&lt;br /&gt;
    double atan (double);&lt;br /&gt;
    double tan (double);&lt;br /&gt;
    void micro_sleep(int n);&lt;br /&gt;
    void addParticle (QVector loc, Vector velocity, Vector color, float size);&lt;br /&gt;
 &lt;br /&gt;
    void    ComputeGalaxySerials( std::vector&amp;lt;std::string&amp;gt; &amp;amp; stak);&lt;br /&gt;
    void    ComputeSystemSerials( std::string &amp;amp; systempath);&lt;br /&gt;
 &lt;br /&gt;
    std::string getSaveDir();&lt;br /&gt;
    std::string getSaveInfo(const std::string &amp;amp;filename, bool formatForTextbox);&lt;br /&gt;
    std::string getCurrentSaveGame();&lt;br /&gt;
    std::string setCurrentSaveGame(const std::string &amp;amp;newsave);&lt;br /&gt;
    std::string getNewGameSaveName();&lt;br /&gt;
    void loadGame(const std::string &amp;amp;savename);&lt;br /&gt;
    void saveGame(const std::string &amp;amp;savename);&lt;br /&gt;
 &lt;br /&gt;
    // Splash stuff&lt;br /&gt;
    void showSplashScreen(const std::string &amp;amp;filename);&lt;br /&gt;
    void showSplashMessage(const std::string &amp;amp;text);&lt;br /&gt;
    void showSplashProgress(float progress);&lt;br /&gt;
    void hideSplashScreen();&lt;br /&gt;
    bool isSplashScreenShowing();&lt;br /&gt;
 &lt;br /&gt;
    // Defined in gamemenu.cpp for vegastrike, universe_util_server.cpp for vegaserver.&lt;br /&gt;
    void startMenuInterface(bool firsttime, string alert=string()); // If game fails, bring it back to a common starting point.&lt;br /&gt;
 }&lt;br /&gt;
 #undef activeSys&lt;br /&gt;
 #endif&lt;/div&gt;</summary>
		<author><name>chuck_starchaser</name></author>	</entry>

	</feed>