Mod Concept: Q-Ship

Freeform discussion about anything related to modding Transcendence.
Post Reply
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

I'm working on AI-controlled ships quite a lot at present, but I've never implemented them as encounters.

I'd like to make a Q-ship. Exactly how this would work, I don't know. Possibly as an NPC that goes from station to station like a regular freighter.

I've made a prototype, a modified Antares V which uses a combination of PK25s, a MK.III and an omni-makayev launcher firing green strelkas (yes, that's overdoing it, I admit).
It's one heck of a ship, but is definately killable, since the armor is only advanced plasteel (at present. For initial AI testing to get it to use weapons right, I had it with orthosteel/light orthosteel armor. At which point it was soaking up M5s and still gunning away. I may tone it down some more...)

It works as either a Q-ship, an assault cruiser, or as a very-late game freighter (except that PK25s are useless in the end game except for soaking up missiles). Maybe both friendly and enemy ones as well...

Would anyone either point me in the direction of tutorials for setting up any/all of these encounters, or give a hand directly? Otherwise I'll probably modify a few files,but that will take a while and I won't know what I'm doing....
Mischievous local moderator. She/Her pronouns.
User avatar
Aury
Fleet Admiral
Fleet Admiral
Posts: 5421
Joined: Tue Feb 05, 2008 1:10 am
Location: Somewhere in the Frontier on a Hycrotan station, working on new ships.

Just look at the new encounter tables (ie, at the end of commonwealth.xml)
(shpOrder gPlayership 'barrelRoll)
(plySetGenome gPlayer (list 'Varalyn 'nonBinary))
Homelab Servers: Xeon Silver 4110, 16GB | Via Quadcore C4650, 16GB | Athlon 200GE, 8GB | i7 7800X, 32GB | Threadripper 1950X, 32GB | Atom x5 8350, 4GB | Opteron 8174, 16GB | Xeon E5 2620 v3, 8GB | 2x Xeon Silver 4116, 96GB, 2x 1080ti | i7 8700, 32GB, 6500XT
Workstations & Render machines: Threadripper 3990X, 128GB, 6900XT | Threadripper 2990WX, 32GB, 1080ti | Xeon Platinum 8173M, 48GB, 1070ti | R9 3900X, 16GB, Vega64 | 2x E5 2430L v2, 24GB, 970 | R7 3700X, 32GB, A6000
Gaming Systems: R9 5950X, 32GB, 6700XT
Office Systems: Xeon 5318Y, 256GB, A4000
Misc Systems: R5 3500U, 20GB | R5 2400G, 16GB | i5 7640X, 16GB, Vega56 | E5 2620, 8GB, R5 260 | P4 1.8ghz, 0.75GB, Voodoo 5 5500 | Athlon 64 x2 4400+, 1.5GB, FX 5800 Ultra | Pentium D 3.2ghz, 4GB, 7600gt | Celeron g460, 8GB, 730gt | 2x Athlon FX 74, 8GB, 8800gts 512 | FX 9590, 16GB, R9 295x2 | E350, 8GB | Phenom X4 2.6ghz, 16GB, 8800gt | random core2 duo/atom/i5/i7 laptops
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

Wolfy wrote:Just look at the new encounter tables (ie, at the end of commonwealth.xml)
So what do I put and where in order to get various things? I've never meddled with this before.
Mischievous local moderator. She/Her pronouns.
User avatar
Prophet
Militia Captain
Militia Captain
Posts: 826
Joined: Tue Nov 18, 2008 6:09 pm

The easies way to make an encounter is to have a station spawn.

this is a slightly modified xenophobe encounter taken from line 492 of encountersVol01.xml. The 'station' is simply an asteroid but it serves as a launch point for your ship. You can also assign escorts here and the initial orders for your ship.

Code: Select all

<StationType UNID="&stMyFreighterEncounter;"
		name=				"(freighter encounter)"
		scale=				"world"
		sovereign=			"&svIndependentTrader;"
		controllingSovereign="&svIndependentTrader;"

		ejectaType=			"&vtStoneAsteroidEjecta;"

		attributes=			"asteroid,enemy,envFire,envAvoidsWater"
		levelFrequency=		"----v cuv-- ----- ----- -----"
		locationCriteria=	"*"
		>

	<ImageVariants>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="0"   imageWidth="64" imageHeight="64"/>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="64"  imageWidth="64" imageHeight="64"/>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="128" imageWidth="64" imageHeight="64"/>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="192" imageWidth="64" imageHeight="64"/>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="256" imageWidth="64" imageHeight="64"/>

		<Image imageID="&rsWorlds1;" imageX="128" imageY="320" imageWidth="64" imageHeight="64"/>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="384" imageWidth="64" imageHeight="64"/>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="448" imageWidth="64" imageHeight="64"/>
	</ImageVariants>

	<Ships>
		<Ship	count="1"	class="&scMyFreighter;" orders="trade route" sovereign="&svIndependentTrader;" >
			<Escorts>
				<Ship		count="1d4+1"	class="&scSomeEscortShip;"	orders="escort"/>
			</Escorts>
		</Ship>
	</Ships>

	<Events>
		<OnMining>
			(intAsteroidOnMining 100)
		</OnMining>
	</Events>

</StationType>
I have the independent merchant sovereign used here but I would suggest changing it to something more dynamic... being neutral is pretty boring.

As a much more advanced option you can write a new event handler and have it applied to the ship instead of the orders.

Code: Select all

<Ship count="1" class="&scMyFreighter;"  eventHandler="&evStdPatrolEncounterBehavior;">
This is the standard event handler used for most random encounters. You can look at it's code in the main Transcendence.xml at line 6646 to see how it works.
The new handlers are very powerful and you can create custom behaviours this way.
Coming soon: The Syrtian War adventure mod!
A Turret defense genre mod exploring the worst era in Earth's history.
Can you defend the Earth from the Syrtian invaders?
Stay tuned for updates!
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

Prophet wrote:The easies way to make an encounter is to have a station spawn.

this is a slightly modified xenophobe encounter taken from line 492 of encountersVol01.xml. The 'station' is simply an asteroid but it serves as a launch point for your ship. You can also assign escorts here and the initial orders for your ship.

Code: Select all

<StationType UNID="&stMyFreighterEncounter;"
		name=				"(freighter encounter)"
		scale=				"world"
		sovereign=			"&svIndependentTrader;"
		controllingSovereign="&svIndependentTrader;"

		ejectaType=			"&vtStoneAsteroidEjecta;"

		attributes=			"asteroid,enemy,envFire,envAvoidsWater"
		levelFrequency=		"----v cuv-- ----- ----- -----"
		locationCriteria=	"*"
		>

	<ImageVariants>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="0"   imageWidth="64" imageHeight="64"/>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="64"  imageWidth="64" imageHeight="64"/>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="128" imageWidth="64" imageHeight="64"/>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="192" imageWidth="64" imageHeight="64"/>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="256" imageWidth="64" imageHeight="64"/>

		<Image imageID="&rsWorlds1;" imageX="128" imageY="320" imageWidth="64" imageHeight="64"/>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="384" imageWidth="64" imageHeight="64"/>
		<Image imageID="&rsWorlds1;" imageX="128" imageY="448" imageWidth="64" imageHeight="64"/>
	</ImageVariants>

	<Ships>
		<Ship	count="1"	class="&scMyFreighter;" orders="trade route" sovereign="&svIndependentTrader;" >
			<Escorts>
				<Ship		count="1d4+1"	class="&scSomeEscortShip;"	orders="escort"/>
			</Escorts>
		</Ship>
	</Ships>

	<Events>
		<OnMining>
			(intAsteroidOnMining 100)
		</OnMining>
	</Events>

</StationType>
I have the independent merchant sovereign used here but I would suggest changing it to something more dynamic... being neutral is pretty boring.

As a much more advanced option you can write a new event handler and have it applied to the ship instead of the orders.

Code: Select all

<Ship count="1" class="&scMyFreighter;"  eventHandler="&evStdPatrolEncounterBehavior;">
This is the standard event handler used for most random encounters. You can look at it's code in the main Transcendence.xml at line 6646 to see how it works.
The new handlers are very powerful and you can create custom behaviours this way.
So, as a simple starter, I could modify, say, the Marauder Stronghold code with Ronin/Ds docked and guarding, and Anteres VI ships with an escort of Ronin/Es orbiting it.... and changing the station stuff around so it looks different. Just to learn about coding encounters before trying something harder.

I think that should work rather nicely. :)
Mischievous local moderator. She/Her pronouns.
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

I've finished my prototype, and I'm now modifying it so that it works exactly how I want it.


The main thing I have as an issue:

At what level of solar system do kinetic weapons really become obsolete? The current Antares VI Cruiser design uses a pair of PK25s as short-range weapons and anti-missile weapons (they actually work a LOT better than an ICX or Longreach, thanks to the...ah...."twitchy" targeting on current anti-missile systems), and I'd rather they didn't wipe the player out in seconds (it already has makayev-spam ability, which I'm working on toning down, and a howitzer....), but I do want it to be a challenging enemy if the player is silly enough to get close....

Currently, I have the spawning similar to the Xenophobe Defender spawn.
Mischievous local moderator. She/Her pronouns.
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

Modified Antares Vs have a lot of potential, and I'm doing a lot of experiements. Here's the latest, which i am probably NOT going to release....but I might lend any bits of it to anyone who wants to develop this kind of Q-ship.

The Antares VII mounts four "Dual hellfire cannons", which are evil spitty-fire things of evilness. Did I mention they were evil? There are two on each side, forward and back, and they fire sideways. This basically means you've got a 4 shot broadside, that puts about....15,000 particles in the air in about 2 seconds. And iff you fly RIGHT over it, you can get 2 broadsides at once, or have them fired at separate enemies. 30,000 particles. Thirty THOUSAND. It's quite something to watch, believe me.....even though it's spread over 4 fixed areas, and is NOT concentrated, that is truly amazing to see. It's not that damaging (well, for a weapon setup firing THAT much stuff) against all bar immobile or really, really, REALLY massive stuff, but it's got a serious OMGWTF?!!! value......it also REALLY plays merry hell with your controls when the blasts hit you. It's also epically laggy, hence why the first thing I'm going to do after writing this is nerf it down to something remotely sane.

The recoil is also enough to send a wolfen at full power with a megadrive flying backwards. At speed. While thrusting. This gun is BIG. It is a gun designed specifically to have a right end and a wrong end, and to let you know immediately when the wrong is pointing at you. It is, in short a gun designed so you can go out there and make people miserable. It does this so well, that balancing it, but still keeping it looking awesome, will probably take me ages.

Anyway. 2 of them firing at once is amazing to see.


Here's a testing shot of a single (2 gun) broadside in it's initial stages, as it starts to pelt my Wolfen. It gets a LOT bigger in the following second...as it's a 25 shot burst, each burst firing 300 particles.....I'm going to change that down to 20X200-250 though, for continued testing.

Image


Yeah. I'm trying to make these things impossible to mount on playerships, because these are REALLY nasty weapons against big targets that can't get thrown out of the way by the high momentum value of the particles......
Mischievous local moderator. She/Her pronouns.
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

I'm an utter idiot when it comes to coding encounters...ships and weapons are fairly easy (I've even balanced the OMGWTF "Hellfire" cannon now).....

But I need a way to get these things working as Q-ships.....anyone got any coding that would work to get something working as a trade ship, but also be something that will blast things?

Edit: Oh. And preferably avoid asteroid belts. It gets kinda..........laggy..........when a Hellfire goes off in an asteroid belt.
Mischievous local moderator. She/Her pronouns.
User avatar
Darth Saber
Militia Commander
Militia Commander
Posts: 290
Joined: Mon Aug 04, 2008 4:53 pm
Location: Korriban

Shrike, please define the term "Q-ship" for me. Do you mean "Q" as in the omnipotent being "Q" who put Capt. Picard on trial for the crimes of humanity in the Star Trek TNG, or is this a different "Q?"
User avatar
ptbptb
Militia Lieutenant
Militia Lieutenant
Posts: 143
Joined: Mon May 10, 2010 7:34 pm

Darth Saber wrote:Shrike, please define the term "Q-ship" for me. Do you mean "Q" as in the omnipotent being "Q" who put Capt. Picard on trial for the crimes of humanity in the Star Trek TNG, or is this a different "Q?"
A Q-ship is a merchant ship covertly decked out with offensive weaponry. It's used to sail merrily along during a war then, when a hapless submarine attacks it, suddenly it drops the concealing hatches, etc. and blows them out of the water.

http://en.wikipedia.org/wiki/Q-ship

The term is used more generally for any heavily armed fake merchant ship - including a memorable example in E.E.Doc Smith's Lensman series.
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

ptbptb wrote:
Darth Saber wrote:Shrike, please define the term "Q-ship" for me. Do you mean "Q" as in the omnipotent being "Q" who put Capt. Picard on trial for the crimes of humanity in the Star Trek TNG, or is this a different "Q?"
A Q-ship is a merchant ship covertly decked out with offensive weaponry. It's used to sail merrily along during a war then, when a hapless submarine attacks it, suddenly it drops the concealing hatches, etc. and blows them out of the water.

http://en.wikipedia.org/wiki/Q-ship

The term is used more generally for any heavily armed fake merchant ship - including a memorable example in E.E.Doc Smith's Lensman series.
Exactly. In this case, it's an Antares V that does trade routes (possibly as a supply ship for hostiles).....but UNLIKE a normal Antares V, it will give a rather nasty shock if you get too close.....


And like historical Q-ships, it will be utterly useless UNLESS you get too close. :P
Mischievous local moderator. She/Her pronouns.
Post Reply