New to Transcendence, Wanna know some stuff?

Freeform discussion about anything related to modding Transcendence.
User avatar
Betelgeuse
Fleet Officer
Fleet Officer
Posts: 1920
Joined: Sun Mar 05, 2006 6:31 am

for starting credits you can change that with startingCredits in the PlayerSettings for the ship (starting credits depends on what ship you pick).

You can make any kind of ship you want to be a player ship. Any ship that has a PlayerSettings can be used as a playable ship.

Do you know how to make extensions? If you have any other questions please feel free to ask.
Crying is not a proper retort!
User avatar
Betelgeuse
Fleet Officer
Fleet Officer
Posts: 1920
Joined: Sun Mar 05, 2006 6:31 am

First go to http://neurohack.com/transcendence/desi ... sData.html and read the page and download Transdata then decompile Transcendence.tdb with the switch /decompile
That will give you all the xmls in a folder called TranscendenceSource. Use that as the source of knowledge for many things.

Ok the first line of any extention is

Code: Select all

<?xml version="1.0" ?>
The next section is the doctype where you declair the ENTITYs

Code: Select all

<!DOCTYPE TranscendenceExtension
[
	<!ENTITY unidExtension		"0xD0050001"/>
]>
Just a note the entities you create must start with DXXX or EXXX. I use D005 try to pick something no one else is using,you can not use the same number as something else so if you have more than one mod change the last 4 digits. More things will be added later to this section if you create new things but lets not worry about that for now.

The next section is the important part

Code: Select all

	<TranscendenceExtension UNID="&unidExtension;" version="0.98c">
The UNID is just the unid that you created for this extention and the version is the version of the game you created the mod for. Mods will most likely work for all future versions but will not run on past versions.

now lets say you want to change the Sapphire player ship. You go to Playership.xml and copy the scSapphirePlayer section. It will look like this.

Code: Select all

	<ShipClass UNID="&scSapphirePlayer;"
			manufacturer=		"Zubrin Systems"
			class=				"Sapphire"
			type=				"yacht"
			score=				"95"
			techOrder=			"biomech"
			
			mass=				"30"
			reactorPower=		"150"
			fuelCapacity=		"37500"
			cargoSpace=			"50"
			thrust=				"150"
			rotationCount=		"40"
			maneuver=			"2"
			maxSpeed=			"20"

			maxArmor=			"6000"
			maxCargoSpace=		"150"
			maxDevices=			"7"
			
			leavesWreck=		"30"
			>

		<Armor>
			<ArmorSection start="315" span="90" armorID="&itReactiveArmor;" areaSet="0,2" />
			<ArmorSection start="225" span="90" armorID="&itReactiveArmor;" areaSet="3,4" />
			<ArmorSection start="45"  span="90" armorID="&itReactiveArmor;" areaSet="7,13" />
			<ArmorSection start="135" span="90" armorID="&itReactiveArmor;" areaSet="1,6" />
		</Armor>

		<Devices>
			<Device deviceID="&itRecoillessCannon;"/>
			<Device deviceID="&itClass1Deflector;"/>
		</Devices>

		<Items>
			<Item count="4d6" item="&itHelium3FuelRod;"/>
		</Items>

		<AISettings
			fireRateAdj=		"30"
			fireAccuracy=		"90"
			perception=			"4"
			/>

		<Image imageID="&rsSapphireYacht;" imageX="0" imageY="0" imageWidth="48" imageHeight="48"/>

		<DriveImages>
			<NozzleImage imageID="&rsDriveExhaust2;" imageX="0" imageY="0" imageWidth="48" imageHeight="48"/>
			<NozzlePos x="-28" y="-4"/>
			<NozzlePos x="-28" y="5"/>
		</DriveImages>

		<PlayerSettings
			desc=				"The verstile Sapphire yacht strikes a good balance between a gunship and a freighter."
			largeImage=			"&rsZubrinLarge;"
			initialClass=		"true"
			startingCredits=	"10d100+1000"
			
			startingSystem=		"SE"
			startingPos=		"Start"
			>

			<ArmorDisplay>
				<ArmorSection name="forward"
						imageID="&rsZubrinArmor;" 
						imageX="0" imageY="0" imageWidth="52" imageHeight="29"
						destX="42" destY="15" hpX="55" hpY="14"
						nameY="8" nameBreakWidth="200" nameDestX="0" nameDestY="10" />

				<ArmorSection name="starboard"
						imageID="&rsZubrinArmor;" 
						imageX="52" imageY="0" imageWidth="22" imageHeight="59"
						destX="92" destY="45" hpX="95" hpY="60"
						nameY="30" nameBreakWidth="360" nameDestX="12" nameDestY="0" />

				<ArmorSection name="port"
						imageID="&rsZubrinArmor;" 
						imageX="142" imageY="0" imageWidth="22" imageHeight="59"
						destX="22" destY="45" hpX="15" hpY="60"
						nameY="52" nameBreakWidth="200" nameDestX="0" nameDestY="8" />

				<ArmorSection name="aft"
						imageID="&rsZubrinArmor;" 
						imageX="74" imageY="0" imageWidth="68" imageHeight="14"
						destX="34" destY="103" hpX="55" hpY="105"
						nameY="74" nameBreakWidth="360" nameDestX="12" nameDestY="0" />
			</ArmorDisplay>

			<ShieldDisplay>
				<Image imageID="&rsZubrinShields;" imageX="0" imageY="0" imageWidth="136" imageHeight="136"/>
			</ShieldDisplay>
				
			<ReactorDisplay>
				<Image imageID="&rsZubrinReactor;" 
						imageX="0" imageY="0" imageWidth="256" imageHeight="60"/>
				
				<PowerLevelImage imageID="&rsZubrinReactor;"
						imageX="0" imageY="60" imageWidth="202" imageHeight="14"
						destX="54" destY="9"/>
						
				<FuelLevelImage imageID="&rsZubrinReactor;"
						imageX="0" imageY="74" imageWidth="194" imageHeight="14"
						destX="54" destY="37"/>
						
				<FuelLowLevelImage imageID="&rsZubrinReactor;"
						imageX="0" imageY="88" imageWidth="194" imageHeight="14"/>
						
				<ReactorText x="62" y="22" width="154" height="14"/>
				<PowerLevelText x="62" y="0" width="154" height="9"/>
				<FuelLevelText x="62" y="51" width="154" height="9"/>
			</ReactorDisplay>
			
		</PlayerSettings>

	</ShipClass>
Now before we start editing lets put the last part in before we forget.

Code: Select all

</TranscendenceExtension>
Now we can change whatever we want to change.

Lets say you don't want to overwrite the Sapphire you want to make a new ship.

First you need to add a new UNID for the new ship just edit the doctype section like this.

Code: Select all

<!DOCTYPE TranscendenceExtension
[
	<!ENTITY unidExtension		"0xD0050001"/>
	<!ENTITY scModdedSapphirePlayer		"0xD0050002"/>
]>
Then you change the UNID of the ship below to match like this.

Code: Select all

	<ShipClass UNID="&scModdedSapphirePlayer;"
Now you have a ship you can do anything you want too without effecting the original ship.

In the PlayerSettings section you can see the startingCredits. This can be added to any PlayerSettings section.
In this case it is 10d100+1000. That means roll 10 100 sided dice and add them up and add 1000. That is the number of credits you will start out with.

One thing that would be good to do is change the description on the ship selection screen so you know what ship is the one you modded.
So in the PlayerSettings edit the desc to

Code: Select all

			desc=	"I made this ship."
There are the basics of making an extention. If you have any other question just ask.
Crying is not a proper retort!
User avatar
Betelgeuse
Fleet Officer
Fleet Officer
Posts: 1920
Joined: Sun Mar 05, 2006 6:31 am

just the error doesn't help much can you upload the xml somewhere or paste it here?

Also the tabs in front of the code are not needed but greatly encouraged. It helps find the end of sections among other things. Don't expect to get much help if you put up code without the spaces (it would be too hard to read).
Look at the various xml files for examples of the spaces.
Crying is not a proper retort!
User avatar
Betelgeuse
Fleet Officer
Fleet Officer
Posts: 1920
Joined: Sun Mar 05, 2006 6:31 am

couple helpful xmls to look in are

StdShields.xml and StdWeapons.xml
Those will give you most of the weapons and shields.

Just be careful to not go over your reactors limit (unless you edit that too of course)
Crying is not a proper retort!
Bobby
Militia Captain
Militia Captain
Posts: 675
Joined: Wed Jul 25, 2007 7:39 pm

edit the "refuel" dockscreen and delete the line deletes your fuel... i'm validating this guess now.

EDIT: this will need more work than simply deleting a line of code(this will work in most invoke calls)

you could:
create a compatible fuel item that has a VERY high data=""
or give your reactor 100 efficiency

these simply make fuel last longer, checking a new method now.


put this code in an item or dockscreen you can call on whenever you need fuel: it will refuel your ship for free without using your fuel, put it on a timer to make it automatic.

(block (count itemsToUse)
(setq count (shpGetFuelNeeded gPlayerShip (itmCreate &itHelium3FuelRod; 1)))
(setq itemsToUse (itmCreate &itHelium3FuelRod; count))
(shpRefuelFromItem gPlayerShip itemsToUse)
)



EDIT: if you simply add 0s as suggested below, this is still finite, although will last longer, and will cost a LOT to refuel, unles you have a super solar panel installed.
Last edited by Bobby on Sun Dec 16, 2007 12:38 am, edited 3 times in total.
User avatar
Periculi
Fleet Officer
Fleet Officer
Posts: 1282
Joined: Sat Oct 13, 2007 7:48 pm
Location: Necroposting in a forum near you

Add a few zeroes to the fuel capacity of the playership. Not too many more, you can break the graphic for the fuel for one thing. Since you start the game full of fuel you can start with enough fuel to make it to Heretic.
User avatar
Betelgeuse
Fleet Officer
Fleet Officer
Posts: 1920
Joined: Sun Mar 05, 2006 6:31 am

or make a item that refuels your ship when invoked and doesn't get removed. That would allow you to upgrade your reactor.
Crying is not a proper retort!
User avatar
Periculi
Fleet Officer
Fleet Officer
Posts: 1282
Joined: Sat Oct 13, 2007 7:48 pm
Location: Necroposting in a forum near you

Sure, I could say that.
User avatar
Betelgeuse
Fleet Officer
Fleet Officer
Posts: 1920
Joined: Sun Mar 05, 2006 6:31 am

fuel gauges depend on the reactor. the default will be overwritten when you install a reactor so that isn't a good idea just to put your fuel max very high. Only two real choices are make custom reactors with tons of fuel capacity or make the refuel item and worry about using it when your fuel gets low.
Crying is not a proper retort!
Post Reply