Shrike's Mines & Missiles ++

A place to discuss mods in development and concepts for new mods.
Locked
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

I've altered the heliotropes slightly. The sunflare cannon used to have a pretty nice unique effect, but it got given a brand new boring generic particle effect with a slight tweak in the big shakeup of weapon effects a while back. I currently can't really improve it (if someone has the source for the old version, I'd like to see how that was made so I can try to replicate and make it better), but I've at least made it unique. I'll keep poking it though.


I also added device disruption. The results are hilarious, and I'm leaving it in.*


NAMI missile launcher and ammo is locked down except for the last missile, which needs some balance adjustments. The XML file is currently at 7779 lines of code, and I'm expecting that to climb a bit as I find all the missing vanilla weapons needing sound fixes....then drop back down as I start separating things out into the multiple XMLs the mod will be released in. This is so that you can turn off some features if you don't want them, or call on the sound effects in another mod without running the weapons themselves.



*Although it is worth noting that disruption is currently bugged. Unless you disable and re-power the device after disruption shuts off, some things (eg. Shields) won't power back. I expect this will get fixed some time though.
Mischievous local moderator. She/Her pronouns.
User avatar
pixelfck
Militia Captain
Militia Captain
Posts: 571
Joined: Tue Aug 11, 2009 8:47 pm
Location: Travelling around in Europe

Shrike wrote:(...) (if someone has the source for the old version, I'd like to see how that was made so I can try to replicate and make it better) (...)
From the Transcendence 1.1 source:

Code: Select all

<!-- Sunflare Cannon -->

<ItemType UNID="&itSunflareCannon;"
        name=               "sunflare cannon"
        level=              "5"
        value=              "8500"
        mass=               "6000"
        frequency=          "veryrare"
        numberAppearing=    "1"
        attributes=         "EnergyWeapon; Heliotropes; MajorItem; NotForSale;"

        description=        "Heliotropes developed this heavy ion particle cannon. Its blast is almost as destructive as a solar eruption."
        >

    <Image imageID="&rsItems1;" imageX="96" imageY="0" imageWidth="96" imageHeight="96"/>

    <Weapon
            type=               "beam"

            damage=             "particle:6d8; WMD2"
            fireRate=           "30"
            lifetime=           "40"
            powerUse=           "200"

            sound=              "&snLaserCannon;"
            >
        <Effect>
            <Beam
                    beamType=           "heavyblaster"
                    primaryColor=       "0xe6, 0xff, 0x6f"
                    secondaryColor=     "0xff, 0x8c, 0x00"
                    intensity=          "10"
                    />
        </Effect>
    </Weapon>

</ItemType>
I'm not sure when the 'big shakeup of weapon effects' happened, so maybe this is not the effect you are looking for, but is different from the current (1.6b3) effect.

~Pixelfck
Image
Download the Black Market Expansion from Xelerus.de today!
My other mods at xelerus.de
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

pixelfck wrote:
Shrike wrote:(...) (if someone has the source for the old version, I'd like to see how that was made so I can try to replicate and make it better) (...)
From the Transcendence 1.1 source:

Code: Select all

<!-- Sunflare Cannon -->

<ItemType UNID="&itSunflareCannon;"
        name=               "sunflare cannon"
        level=              "5"
        value=              "8500"
        mass=               "6000"
        frequency=          "veryrare"
        numberAppearing=    "1"
        attributes=         "EnergyWeapon; Heliotropes; MajorItem; NotForSale;"

        description=        "Heliotropes developed this heavy ion particle cannon. Its blast is almost as destructive as a solar eruption."
        >

    <Image imageID="&rsItems1;" imageX="96" imageY="0" imageWidth="96" imageHeight="96"/>

    <Weapon
            type=               "beam"

            damage=             "particle:6d8; WMD2"
            fireRate=           "30"
            lifetime=           "40"
            powerUse=           "200"

            sound=              "&snLaserCannon;"
            >
        <Effect>
            <Beam
                    beamType=           "heavyblaster"
                    primaryColor=       "0xe6, 0xff, 0x6f"
                    secondaryColor=     "0xff, 0x8c, 0x00"
                    intensity=          "10"
                    />
        </Effect>
    </Weapon>

</ItemType>
I'm not sure when the 'big shakeup of weapon effects' happened, so maybe this is not the effect you are looking for, but is different from the current (1.6b3) effect.

~Pixelfck
Cheers. It's the right effect, but it doesn't render properly on 1.6b3. That or the old effect was far worse than I'd thought. I think it's just codebase changes though. I'll have to redo from scratch. Still, it's jogged my memory enough that I've got an idea or two.
Mischievous local moderator. She/Her pronouns.
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

Today I finalised the S1 'Hydra' missile. NAMI launcher and missiles are now pretty much locked down.


I also tackled a missile that is one of the classic cases of bad vanilla missile design: the black strelka. This used to be a very good weapon. But power creep has rendered it terrible...the damage per fragment is about a third of what it should be to meet the level curve with its general rarity. It also has no sound defined in the hiteffect, so it's completely silent. While I'm not a fan of the default armor hit sound, for consistancy's sake I have fixed this bug with SM&M++.

The new black strelka is exactly the same as the old one, but with that increased damage it now genuinely packs a punch. Save them up and use them when you really need them. 100 of these things will not kill a Deimos (yay internal hitpoints being better than all armor in the game), but they will seriously mess it up.....don't use these if you don't want to knock out guns and devices on the ship you're attacking, because you are going to be landing a lot of compartment hits with this weapon.

It's worth noting that the game doesn't recognise it as a fragmentation weapon, and so displays the damage per missile as being lower than the red strelka. This is true.....but it's the damage *per fragment* that is displayed, not the damage per missile.


Next on the list is the MAG launcher. In SM&M+ (and again in ++) I altered it to be a multi-mode weapon. Standard mod has reduced range, minelayer mode has lowered rate of fire but extended lifetime, and bombardment mode increases range and projectile speed at the cost of rate of fire (and a small failsafe on all fragmentation MAGs). I do need to play around with the stats of each mode.

Unfortunately because no one uses it much, several MAGs in vanilla are hilariously broken. The cluster mag is going to need a nerf, and the 800F has the same problem as the black strelka only more so: it's rubbish. 5d6 (bad range, bad lifetime) fragments with 1d6+2 kinetic damage per hit? No thanks....on a lot of enemies that's going to get soaked up by armor. And that's if it actually lands hits in the first place. I'm going to need to spend some time playing around with these and getting them good and ready. Unfortunately the fact that the launcher is a multi-mode weapon means I can't just do all this at the missile level....I have to work on all three weapon items used to make it.

Even better, the old Northwind/WE4 weapon swap code has been broken by engine changes...it now duplicates the launcher (which looking at the code, may have happened all the time since this was put into SM&M+ in 2012 or so) and gives it a dummy '+enhanced' tag every time you change mode. That shouldn't be too bad to fix though. If anyone feels like taking a stab at it, I've put it below.

Code: Select all

<Globals>
 (block Nil
		; Define the function for switching weapon.  (NB-- This function is lifted straight from WE4/5 and can have problems in Mines and Missiles if we use it too quickly)
(setq nwfswitchweapon (lambda (theweapon)
			(block (nil)			
				(if (eq (itmIsDamaged theitem) Nil)
					(block (status enhweapon theitem)
						(setq theitem gItem)
						(setq status (ItmIsEnhanced theitem))
						(setq enhweapon (itmSetEnhanced theweapon status))
						(objAddItem gSource enhweapon)
						; even worse kludge to handle launchers
						(if(itmMatches theitem "l")
							(block (nil)
								(objEnumItems gSource "Il" variable 
									(block (nil)
										(shpEnhanceItem gSource theitem status)
									))
						))

						(shpInstallDevice gSource enhweapon)

						; kludge for new item weirdness
						(shpEnhanceItem gSource theitem status)

						; Remove previous weapon
						(shpRemoveDevice gSource (itmSetEnhanced theitem status))
						(objRemoveItem gSource (itmSetEnhanced (itmCreate (itmGetUNID theitem) 1) status) 1)
					)
					(objSendMessage gSource Nil "Device non-functional: Error!")
				)
			)
  
		))
		)
</Globals>
This code is pretty old, so I'm not surprised it's broken.
Mischievous local moderator. She/Her pronouns.
PM
Fleet Admiral
Fleet Admiral
Posts: 2570
Joined: Wed Sep 01, 2010 12:54 am

This is based off a similar function I wrote for my mods, which I am trying not to rely on anymore due to various reasons.

The function accepts the new item type, not the new item itself.

Code: Select all

(setq swapTest912 (lambda (newType)
	(block (theSource oldDevice)
		(setq theSource gSource)
		(setq oldDevice gItem)

		(switch
			(not theSource)
				(objSendMessage gPlayerShip Nil "ERROR: No source object")

			(not oldDevice)
				(objSendMessage gPlayerShip Nil "ERROR: No source item")

			(not newType)
				(objSendMessage gPlayerShip Nil "ERROR: No new item type")

			(not (itmMatches (itmCreate newType 1) "d"))
				(objSendMessage gPlayerShip Nil "ERROR: New type must be a device ItemType")

			; Could check if device is enabled or not, but [I]nvoke checks that for us.

			; We do not want to allow conversion if item is damaged.
			; I don't know if it is possible to get ionized duration, so in case of ionization, treat as damaged.
			(or (itmGetProperty oldDevice 'damaged) (itmGetProperty oldDevice 'disrupted))
				(objSendMessage theSource Nil "Cannot convert a non-functional device")

			; Weapon is functional, attempt the swap.
			;  What really happens is we spawn a new item and copy the properties of the old item to the new.
			;  The new weapon gets installed while the old gets deleted.  The player won't know this unless he reads the code.
			(block (theBuffs theCharges theMissile  theArc theLink thePos theSec removed wasOnShip)
				(setq theBuffs (itmIsEnhanced oldDevice))
				(setq theCharges (itmGetProperty oldDevice 'charges))
				(setq theMissile (objGetProperty theSource 'selectedMissile))

				; Uninstall the old item.
				(setq removed Nil)
				(if (itmIsInstalled oldDevice)
					; YES:  Uninstall, then search and destroy.
					(block (thisItem)
						(setq theArc (objGetItemProperty theSource oldDevice 'fireArc))
						(setq theLink (objGetItemProperty theSource oldDevice 'linkedFireOptions))
						(setq thePos (objGetItemProperty theSource oldDevice 'pos))
						(setq theSec (objGetItemProperty theSource oldDevice 'secondary))

						(if (setq thisItem (shpRemoveDevice theSource oldDevice))
							; YES:  We uninstalled, now remove!
							(block Nil
								(setq removed True)
								(setq wasOnShip True)
								(objRemoveItem theSource thisItem 1)
							)
							; NO:  Failed to uninstall, cannot remove.
						)
					)
					; NO:  Simply remove it.
					(block Nil
						(setq removed True)
						(setq wasOnShip Nil)
						(objRemoveItem theSource oldDevice 1)
					)
				)

				(if removed
					; YES:  Install replacement.
					(block (newDevice newDeviceOnShip)
						; Create new item
						(setq newDevice (itmCreate newType 1))

						; Preserve relevant data.
						(setq newDevice (itmSetEnhanced newDevice theBuffs))
						(setq newDevice (itmSetProperty newDevice 'charges theCharges))

						; Add and install.
						(objAddItem theSource newDevice)
						(setq newDeviceOnShip (shpInstallDevice theSource newDevice))

						; If new item is a launcher that uses the same ammo,  Preserve that stat.
						(if (and (itmMatches newDevice "l") (typGetDataField newType "ammoType") theMissile)
							(for i 0 (subtract (typGetDataField newType "variantCount") 1)
								(if (eq (typGetDataField newType (cat "ammoType:" i)) (itmGetType theMissile))
									(objSetProperty theSource 'selectedMissile theMissile)
								)
							)
						)

						(if wasOnShip
							; YES:  Was installed, preserve data in case of linked or secondary weapons.
							(block Nil
								(objSetItemProperty theSource newDeviceOnShip 'fireArc theArc)
								(objSetItemProperty theSource newDeviceOnShip 'linkedFireOptions theLink)
								(objSetItemProperty theSource newDeviceOnShip 'pos thePos)
								(objSetItemProperty theSource newDeviceOnShip 'secondary theSec)
							)
							; NO:  Not applicable this time.
						)

						; Identify the item if it was unknown.
						; We do this because names change and we used the item.
						(itmSetKnown oldDevice)
						(itmSetKnown newDevice)

						(objSendMessage theSource Nil (cat "Conversion to " (itmGetName newDevice 0) " complete"))
					)

					; NO:  Nothing to do because we did not remove old item.
					(objSendMessage theSource Nil "Conversion failed")
				)
			)

		)
	)
))
Download and Play in 1.9 beta 1...
Drake Technologies (Alpha): More hardware for combat in parts 1 and 2!
Star Castle Arcade: Play a classic arcade game adventure, with or without more features (like powerups)!
Playership Drones: Buy or restore exotic ships to command!

Other playable mods from 1.8 and 1.7, waiting to be updated...
Godmode v3 (WIP): Dev/cheat tool compatible with D&O parts 1 or 2.
bzm3r
Militia Lieutenant
Militia Lieutenant
Posts: 100
Joined: Tue Oct 23, 2012 2:38 pm

Just a quick thought about the Penitent weapons issue -- we couldn't have something where there is a Penitent weapon "mark 2", that for sure won't show up on Penitent ships early on, but might show up on Penitent ships later on?

This is such a simple idea that I am sure it has been thought about and dismissed for good reason, but I hope you can catch me up on why that isn't possible.
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

bzm3r wrote:Just a quick thought about the Penitent weapons issue -- we couldn't have something where there is a Penitent weapon "mark 2", that for sure won't show up on Penitent ships early on, but might show up on Penitent ships later on?

This is such a simple idea that I am sure it has been thought about and dismissed for good reason, but I hope you can catch me up on why that isn't possible.
It's *possible*, but it would basically mean making an entire new shipclass just for the tutorial mission. Personally I'd just make that first mission feature penitent *mercenaries* rather than the dudes themselves. It's also really hard to balance exotic weapons so they don't suck *and* they don't tear everything apart.....the damage type curve is really bad for them.
Mischievous local moderator. She/Her pronouns.
bzm3r
Militia Lieutenant
Militia Lieutenant
Posts: 100
Joined: Tue Oct 23, 2012 2:38 pm

Shrike wrote:
bzm3r wrote:Just a quick thought about the Penitent weapons issue -- we couldn't have something where there is a Penitent weapon "mark 2", that for sure won't show up on Penitent ships early on, but might show up on Penitent ships later on?

This is such a simple idea that I am sure it has been thought about and dismissed for good reason, but I hope you can catch me up on why that isn't possible.
It's *possible*, but it would basically mean making an entire new shipclass just for the tutorial mission. Personally I'd just make that first mission feature penitent *mercenaries* rather than the dudes themselves. It's also really hard to balance exotic weapons so they don't suck *and* they don't tear everything apart.....the damage type curve is really bad for them.
What's so bad about having exotic weapons tear everything apart though? Isn't that the point of their exotic-ness? Even though Penitent guns might be made powerful, they could still be overpowered by other AI through numbers, or sheer AI-randomness?

Or, maybe Penitent bases would naturally form wreck-space around them...acting as indications of something ominous?
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

bzm3r wrote:
Shrike wrote:
bzm3r wrote:Just a quick thought about the Penitent weapons issue -- we couldn't have something where there is a Penitent weapon "mark 2", that for sure won't show up on Penitent ships early on, but might show up on Penitent ships later on?

This is such a simple idea that I am sure it has been thought about and dismissed for good reason, but I hope you can catch me up on why that isn't possible.
It's *possible*, but it would basically mean making an entire new shipclass just for the tutorial mission. Personally I'd just make that first mission feature penitent *mercenaries* rather than the dudes themselves. It's also really hard to balance exotic weapons so they don't suck *and* they don't tear everything apart.....the damage type curve is really bad for them.
What's so bad about having exotic weapons tear everything apart though? Isn't that the point of their exotic-ness? Even though Penitent guns might be made powerful, they could still be overpowered by other AI through numbers, or sheer AI-randomness?

Or, maybe Penitent bases would naturally form wreck-space around them...acting as indications of something ominous?
Short answer: Balance is tricky. And you can't have a weapon obviously better than everything else, or players will grab it and use nothing else.

Longer answer: The penitent weapons (Harrass and the cannon) use the dark acid type of damage. This means (according to the 1.01 damage curve which I think is the one still being used) that below level 5 they're doing at least 300% damage to shields (at L1 it's 384%), and below level 8 they're doing at least 200% damage to shields. But with each new level, they are doing significantly less damage. This means that if you're balancing a new gun (and you really do have to balance NPC weapons, especially if they get used against the player, and especially at lower levels) then it's not going to perform consistently. Contrast this with thermonuclear damage, which has the same damage adjustment for the first seven levels (not including armor-specific resistances)....a thermonuclear weapon in the early game would actually be easier to balance, since it does a reliable level of damage.

Armor has slightly saner balancing, but it's still got the same problem: L1-3 is 300% damage, 4-6 is 200%, and after that it's 125%. Most of the damage types ingame have a shallow dropoff over time, then a stupidly sharp dropoff when they become obsolete very, very rapidly (you can sorta tell I'm not a fan of the way George balances armor)....but the problem is still there: because of how high the damage type is, the drop between stages is very abrupt, and has a major impact....exotic weapons always have low damage to counter the multiplier effect of turning up too early, and this always makes them suck very quickly past their intended level, and be a bit harsh below that level (although not as bad as with shields). THis makes it really really hard to balance them because they're so unpredictable.
Having unreliable damage makes it useless to the player (because with a rare gun they'll get it after its level, and it will do reduced damage against the enemies they face) and either useless or insanely overpowered against the player (or NPCs) depending on when the RNG or mission coding decides to throw it into the mix.
Mischievous local moderator. She/Her pronouns.
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

Today I massively buffed the 800F hexagene MAG. It's now up to the level curve and performing well. The Molotok is a bit hardcore as a result, but it's only really correcting power-creep. They used to be pretty good back in the day.

I had a look at the Slicer as well, but I can't see a way to fix it right now...I've made a ticket about it instead.
Mischievous local moderator. She/Her pronouns.
Kourtious
Militia Lieutenant
Militia Lieutenant
Posts: 187
Joined: Fri Nov 14, 2014 10:00 pm
Location: Off in the distance

Shrike wrote:Today I massively buffed the 800F hexagene MAG. It's now up to the level curve and performing well. The Molotok is a bit hardcore as a result, but it's only really correcting power-creep. They used to be pretty good back in the day.

I had a look at the Slicer as well, but I can't see a way to fix it right now...I've made a ticket about it instead.
What do you mean you can't see a way to fix it right now?

Well in the first place, the Arena is kind of bland. The Arena could use more variety. For example, 1 v 2 or 3 v 3. In addition, there should be more missions pre-Splicer. This way the Splicer can be buffed, so it isn't a push over if played against a mediocre player.
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

Kourtious wrote:
Shrike wrote:Today I massively buffed the 800F hexagene MAG. It's now up to the level curve and performing well. The Molotok is a bit hardcore as a result, but it's only really correcting power-creep. They used to be pretty good back in the day.

I had a look at the Slicer as well, but I can't see a way to fix it right now...I've made a ticket about it instead.
What do you mean you can't see a way to fix it right now?

Well in the first place, the Arena is kind of bland. The Arena could use more variety. For example, 1 v 2 or 3 v 3. In addition, there should be more missions pre-Splicer. This way the Splicer can be buffed, so it isn't a push over if played against a mediocre player.
It's mostly AI problems. I can't do AI.
Mischievous local moderator. She/Her pronouns.
Kourtious
Militia Lieutenant
Militia Lieutenant
Posts: 187
Joined: Fri Nov 14, 2014 10:00 pm
Location: Off in the distance

Shrike wrote:It's mostly AI problems. I can't do AI.
Just remove the shields from the Splicer and then modify the Splicer with stronger equipment(preferably 2x patcher).
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

Kourtious wrote:
Shrike wrote:It's mostly AI problems. I can't do AI.
Just remove the shields from the Splicer and then modify the Splicer with stronger equipment(preferably 2x patcher).
Still doesn't fix the problems. Beleive me, I've tried most of the simple stuff. The AI has significant flaws that can't be fixed without an engine patch that will always result in something going wrong. Fortunately, the ticket I put on ministry has been tagged for the next version (after 1.6), so hopefully it will get looked at.
Mischievous local moderator. She/Her pronouns.
User avatar
Song
Fleet Admiral
Fleet Admiral
Posts: 2801
Joined: Mon Aug 17, 2009 4:27 am

End of term stuff means I'll probably be taking a little break from development. I've also asked for (and received) permission to adapt some articles from the registered developer's wiki into a guide to weapon balance.....and I've decided to expand that into a guide on weapons design. So hopefully that'll be a thing in a week or three, in between bits of work. Even though I'm adapting them, I'll be including the raw tables as well, so anyone can use them for weapons balance (SM&M++ uses them heavily and they are nominally what is used by stock. They're not enough for balance by themselves though....there's other stuff besides the numbers.
Mischievous local moderator. She/Her pronouns.
Locked