Jump to content

R&D Additional Options for SHIV Customization


Amineri

Recommended Posts

Like. And in regards Vereist's question: if a SHIV is in for repair (i.e. 'injured') having their 'items' unequipped and in storage would presumably make them available for use by a spare SHIV?

 

I'm wondering if people realize that the most vulnerable component on an armored vehicle are the weapons (though they are not that easy to hit) and motive system, and then chassis and propulsion mechanism? Crew compartment is the most heavily armored, but once you eliminate that from the equation in a UV, you can distribute the armor to other areas that become more important. An immobile armored vehicle basically becomes a 'pillbox' as long as it retains a functional weapon system. The weapon system, tracks (or equivalent motive system) and (these days with supplemental ablatives) armor are 'applique components'. The power system and chassis are basically unitary. With DR, up to a certain point you are losing applique components, which are relatively quick to replace as they are designed that way. Below that cutoff point you are suffering damage to structural components that require a major refit or rebuild and thus more time and resources. The longer it takes to repair something, the more protection it is afforded. These are the realities of military equipment procurement. Up-time and reliability are much more important than cost. The same should apply here.

 

-Dubious-

Edited by dubiousintent
Link to comment
Share on other sites

With the current SHIV Loadout modlet, the weapon on a damaged SHIV can be swapped out and equipped to another non-damaged SHIV. I'm not sure if it auto-unequips the weapon like it does for soldiers, though. ReleaseLoadout is called for damaged SHIVs in UnloadSoldier, but I haven't dug into it to see if it works. It probably doesn't because there isn't a "default" SHIV weapon in the code to automatically swap to (like there is Assault Rifles for soldiers).

 

--------------------------------------------

 

As a sneak preview, here is the new set of DGC.ini Weapon= entries I'm currently working with for the new SHIV accessories:

 

 

;pistol slot SHIV upgrades

;Grenade Launcher
Weapons=(iType=eItem_CyberdiscGrenade,ABILITIES[0]=eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,ABILITIES[4]=eAbility_NONE,ABILITIES[5]=eAbility_NONE,Properties[0]=eWP_AnyClass,Properties[1]=eWP_Backpack,Properties[2]=eWP_None,Properties[3]=eWP_None,Properties[4]=eWP_None,Properties[5]=eWP_None,iDamage=0,iEnvironmentDamage=0,iRange=15,iReactionRange=-1,iReactionAngle=-1,iRadius=0,iCritical=0,iOffenseBonus=0,iSuppression=0,iSize=eItemSize_Small,iHPBonus=0,iWillBonus=0)
;Elerium Supercharger
Weapons=(iType=eItem_PlaceholderIntWeapon1,ABILITIES[0]=eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,ABILITIES[4]=eAbility_NONE,ABILITIES[5]=eAbility_NONE,Properties[0]=eWP_AnyClass,Properties[1]=eWP_Backpack,Properties[2]=eWP_None,Properties[3]=eWP_None,Properties[4]=eWP_None,Properties[5]=eWP_None,iDamage=0,iEnvironmentDamage=0,iRange=15,iReactionRange=-1,iReactionAngle=-1,iRadius=0,iCritical=0,iOffenseBonus=0,iSuppression=0,iSize=eItemSize_Small,iHPBonus=0,iWillBonus=0)
;Alloy Ammo Feeds
Weapons=(iType=eItem_MutonGrenade,ABILITIES[0]=eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,ABILITIES[4]=eAbility_NONE,ABILITIES[5]=eAbility_NONE,Properties[0]=eWP_AnyClass,Properties[1]=eWP_Backpack,Properties[2]=eWP_None,Properties[3]=eWP_None,Properties[4]=eWP_None,Properties[5]=eWP_None,iDamage=0,iEnvironmentDamage=0,iRange=15,iReactionRange=-1,iReactionAngle=-1,iRadius=0,iCritical=0,iOffenseBonus=0,iSuppression=0,iSize=eItemSize_Small,iHPBonus=0,iWillBonus=0)
;HoloTargeter
Weapons=(iType=eItem_SectoidGrenade,ABILITIES[0]=eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,ABILITIES[4]=eAbility_NONE,ABILITIES[5]=eAbility_NONE,Properties[0]=eWP_AnyClass,Properties[1]=eWP_Backpack,Properties[2]=eWP_None,Properties[3]=eWP_None,Properties[4]=eWP_None,Properties[5]=eWP_None,iDamage=0,iEnvironmentDamage=0,iRange=15,iReactionRange=-1,iReactionAngle=-1,iRadius=0,iCritical=0,iOffenseBonus=0,iSuppression=0,iSize=eItemSize_Small,iHPBonus=0,iWillBonus=0)
;Energy Damper
Weapons=(iType=eItem_PlaceholderWeapon4,ABILITIES[0]=eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,ABILITIES[4]=eAbility_NONE,ABILITIES[5]=eAbility_NONE,Properties[0]=eWP_AnyClass,Properties[1]=eWP_Backpack,Properties[2]=eWP_None,Properties[3]=eWP_None,Properties[4]=eWP_None,Properties[5]=eWP_None,iDamage=0,iEnvironmentDamage=0,iRange=15,iReactionRange=-1,iReactionAngle=-1,iRadius=0,iCritical=0,iOffenseBonus=0,iSuppression=0,iSize=eItemSize_Small,iHPBonus=0,iWillBonus=0)
;Ghost Module
Weapons=(iType=eItem_PlaceholderWeapon5,ABILITIES[0]=eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,ABILITIES[4]=eAbility_NONE,ABILITIES[5]=eAbility_NONE,Properties[0]=eWP_AnyClass,Properties[1]=eWP_Backpack,Properties[2]=eWP_None,Properties[3]=eWP_None,Properties[4]=eWP_None,Properties[5]=eWP_None,iDamage=0,iEnvironmentDamage=0,iRange=15,iReactionRange=-1,iReactionAngle=-1,iRadius=0,iCritical=0,iOffenseBonus=0,iSuppression=0,iSize=eItemSize_Small,iHPBonus=0,iWillBonus=0)
;Core Armoring
Weapons=(iType=eItem_PlaceholderWeapon6,ABILITIES[0]=eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,ABILITIES[4]=eAbility_NONE,ABILITIES[5]=eAbility_NONE,Properties[0]=eWP_AnyClass,Properties[1]=eWP_Backpack,Properties[2]=eWP_None,Properties[3]=eWP_None,Properties[4]=eWP_None,Properties[5]=eWP_None,iDamage=0,iEnvironmentDamage=0,iRange=15,iReactionRange=-1,iReactionAngle=-1,iRadius=0,iCritical=0,iOffenseBonus=0,iSuppression=0,iSize=eItemSize_Small,iHPBonus=0,iWillBonus=0)
;small item slot SHIV sidegrades
;Ablative Armor
Weapons=(iType=eItem_PlaceholderVehicle0,ABILITIES[0]=eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,ABILITIES[4]=eAbility_NONE,ABILITIES[5]=eAbility_NONE,Properties[0]=eWP_AnyClass,Properties[1]=eWP_Backpack,Properties[2]=eWP_None,Properties[3]=eWP_None,Properties[4]=eWP_None,Properties[5]=eWP_None,iDamage=0,iEnvironmentDamage=0,iRange=15,iReactionRange=-1,iReactionAngle=-1,iRadius=0,iCritical=0,iOffenseBonus=0,iSuppression=0,iSize=eItemSize_Small,iHPBonus=3,iWillBonus=0)
;Multi-barrel Weapon
Weapons=(iType=eItem_PlaceholderVehicle1,ABILITIES[0]=eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,ABILITIES[4]=eAbility_NONE,ABILITIES[5]=eAbility_NONE,Properties[0]=eWP_AnyClass,Properties[1]=eWP_Backpack,Properties[2]=eWP_None,Properties[3]=eWP_None,Properties[4]=eWP_None,Properties[5]=eWP_None,iDamage=-2,iEnvironmentDamage=0,iRange=15,iReactionRange=-1,iReactionAngle=-1,iRadius=80,iCritical=0,iOffenseBonus=10,iSuppression=0,iSize=eItemSize_Small,iHPBonus=0,iWillBonus=0)
;HEAT Ammo
Weapons=(iType=eItem_PlaceholderShivUpgrade0,ABILITIES[0]=eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,ABILITIES[4]=eAbility_NONE,ABILITIES[5]=eAbility_NONE,Properties[0]=eWP_AnyClass,Properties[1]=eWP_Backpack,Properties[2]=eWP_None,Properties[3]=eWP_None,Properties[4]=eWP_None,Properties[5]=eWP_None,iDamage=0,iEnvironmentDamage=0,iRange=15,iReactionRange=-1,iReactionAngle=-1,iRadius=0,iCritical=0,iOffenseBonus=-10,iSuppression=0,iSize=eItemSize_Small,iHPBonus=0,iWillBonus=0)
;High Energy Rounds
Weapons=(iType=eItem_PlaceholderShivUpgrade1,ABILITIES[0]=eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,ABILITIES[4]=eAbility_NONE,ABILITIES[5]=eAbility_NONE,Properties[0]=eWP_AnyClass,Properties[1]=eWP_Backpack,Properties[2]=eWP_None,Properties[3]=eWP_None,Properties[4]=eWP_None,Properties[5]=eWP_None,iDamage=3,iEnvironmentDamage=0,iRange=15,iReactionRange=-1,iReactionAngle=-1,iRadius=0,iCritical=0,iOffenseBonus=-10,iSuppression=0,iSize=eItemSize_Small,iHPBonus=0,iWillBonus=0)
;Reinforced Armor
Weapons=(iType=eItem_PlaceholderArmor0,ABILITIES[0]=eAbility_NONE,ABILITIES[1]=eAbility_NONE,ABILITIES[2]=eAbility_NONE,ABILITIES[3]=eAbility_NONE,ABILITIES[4]=eAbility_NONE,ABILITIES[5]=eAbility_NONE,Properties[0]=eWP_AnyClass,Properties[1]=eWP_Backpack,Properties[2]=eWP_None,Properties[3]=eWP_None,Properties[4]=eWP_None,Properties[5]=eWP_None,iDamage=0,iEnvironmentDamage=0,iRange=15,iReactionRange=-1,iReactionAngle=-1,iRadius=0,iCritical=0,iOffenseBonus=0,iSuppression=0,iSize=eItemSize_Small,iHPBonus=0,iWillBonus=0)

 

 

and here are the corresponding new ItemBalance= entries:

 

 

ItemBalance=(eItem=eItem_CyberdiscGrenade, iCash=-1, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)

ItemBalance=(eItem=eItem_ThinManGrenade, iCash=-1, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
ItemBalance=(eItem=eItem_MutonGrenade, iCash=-1, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
ItemBalance=(eItem=eItem_SectoidGrenade, iCash=-1, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
ItemBalance=(eItem=eItem_PlaceholderWeapon4, iCash=-1, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
ItemBalance=(eItem=eItem_PlaceholderWeapon5, iCash=-1, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
ItemBalance=(eItem=eItem_PlaceholderWeapon6, iCash=-1, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
ItemBalance=(eItem=eItem_PlaceholderVehicle0, iCash=-1, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
ItemBalance=(eItem=eItem_PlaceholderVehicle1, iCash=-1, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
ItemBalance=(eItem=eItem_PlaceholderShivUpgrade0, iCash=-1, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
ItemBalance=(eItem=eItem_PlaceholderShivUpgrade1, iCash=-1, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)
ItemBalance=(eItem=eItem_PlaceholderArmor0, iCash=-1, iElerium=0, iAlloys=0, iTime=-1, iEng=-1)

 

So far I haven't filled out any of the manufacturing cost values for the new items. Just getting the stuff squeezed into the DGC.ini and making sure the game runs.

Link to comment
Share on other sites

Well that's the reason I was asking. Because it doesn't have something that it falls back on, if it returns the equipment to the pool to be used by another SHIV, best case scenario, you wind up with one in the future that doesn't have equipment on it. Worst case, the whole thing crashes and burns and maybe eats the save too while it's at it.

Link to comment
Share on other sites

Shouldn't be anything that bad :)

 

People have been playing with the SHIV loadout mod for a while and there haven't been any disasters with injured SHIVs.

 

I did a little digging, and in XGStorage.InjuryReleaseLoadout, the first check is:

if(kSoldier.IsATank())
{
return;
}

 

So, SHIVs will not automatically release their weapons into the Locker. To re-use a weapon on a damaged SHIV you have to manually re-equip the starter Minigun and release the Sentry/Laser/Plasma back into the Locker and equip it to another SHIV.

 

One mini-gun is created with every SHIV (and destroyed when the SHIV is destroyed), so there will always be a mini-gun to equip.

 

I'll put auto-unloading onto the list for SHIV Loadout 2.0, which will switch it back to the default mini-gun and empty any small item slots when damaged.

Link to comment
Share on other sites

Definite progress.


I even have a screenshot! :smile:

 

http://wiki.tesnexus.com/images/4/49/SHIV_Module_Loadout.jpg

 

I've reworked the SHIV Loadout interface a bit.

 

I suppressed the Pistol slot for SHIVs (and switch the other test from "IsHeavy" to "HasFireRocketPerk").

 

Number of smallitem is controlled via DGC.ini edit to the SHIV armors. Since the SHIVs only have 1 armor and 1 weapon, with the "Third Small Item" mod to squeeze them together a SHIV would have room to configure up to four small items.

 

I don't really anticipate that many, but the limit should be on "how many is balanced?" as opposed to "what is the limit of the UI?"

 

---------------------------------

 

This is combined with the code that grants perks based on equipped items.

 

My initial testing here had:

 

Alloy Ammo Feeds - eItem_BEGIN_ITEMS // grants ePerk_DoubleTap
HoloTargeter - eItem_BEGIN_GRENADES //grants ePerk_TracerBeams
Energy Damper - eItem_BEGIN_ALIEN_GRENADES //grants ePerk_LightningReflexes
Ghost Module - eItem_END_ALIEN_GRENADES // grants ePerk_Stealth
Core Armoring - eItem_FloaterGrenadev // grants perk ePerk_Resilience
HEAT Ammo - eItem_PlaceholderShivUpgrade0 // grants perk ePerk_HEATAmmo
I haven't yet gone in and tested which perks work with SHIVs yet. Hopefully most of them will work fine, so then it will just become a matter of balancing them.
-------------------------------
I'm kind of on-the-fence about continuing to display the "SHIV Armor", the Tread Decks, since there won't be any selectable options for them.
I'm leaning toward leaving them in because then the Item Card could be set up to display information about the SHIV.
Link to comment
Share on other sites

Oh, I forgot to mention one other little thing.

 

I managed to get the SHIV items (both the SHIV weapons and the new SHIV modules) to be buildable under the Vehicles tab in Engineering, but still display in the Lockers.

 

Hopefully this will make things a bit less crowded in the soldier equipment build UI, especially since I'm adding new soldier items that could be buildable.

Link to comment
Share on other sites

Here's perks that I've confirmed work on SHIVS:

 

Holotargetting

HEAT Ammo

Double Tap (with fix to remove Sniper req)

Lightning Reflexes

Resilience

 

Perks that don't work:

Stealth (Stealth ability does not appear)

Link to comment
Share on other sites

I think stealth is one of those "state" perks. What I've done is making the invisibility module grants ghost charges but then I had to add the ghost property to armors in the ini. It isn't optimal because the ability is still displayed in the tactical game even if no charges are present, but it works. I was planning on investigating if editting the visual properties of the ghost ability (in BuildAbilities) it could be done so it only displays under certain circumpstances (when the item is present, like grenades), but that's near the bottom of my long to-do list.

Link to comment
Share on other sites

  • 4 weeks later...

How about adding the perk that gives the chitin plating the 50% melee reduction to the "armors" (decks?) that define the alloy and hover shiv (or failing that the shiv unit in general)?

 

I kinda dislike the fact that chrysalids or berserkers can tear a unit that is essentially a small tank to shreds in two attacks easily.

 

The perk in question should be BuildPerk(65, 0, "ChitinPlating"); but I have yet to find where it is assigned to the actual item chitin plating.

Link to comment
Share on other sites

@ kara42

 

That's a good idea. Currently the ChitinPlating perk appears to be unused by soldiers. The Melee damage reduction for Chiting plating is implemented in the function XGAbility_Targeted.CalcDamage via:

		if(kPrimTarget != none && (kPrimTarget.GetInventory() != none))
		{
			kItem = kPrimTarget.GetInventory().GetRearBackpackItem(eItem_ChitinPlating);
			// End:0x4e5 Loop:False
			if(kItem != none && (m_kWeapon.IsMelee()))
			{
				iTemp = FCeil(float(m_iActualDamage) * 0.50);
				m_iActualDamage = iTemp;
			}
		}

Basically it is explicitly checking for the presence of the item.

 

However, it should be possible to add to the above code to reduce melee damage if either the soldier has the item or has the perk.

 

That said, there is a previous function that adjusts damage based on perks,

m_iActualDamage = CalcOverallDamageModFromPerk(float(m_iActualDamage));

This function is written in native code, so I don't know what is happenining in there. I suspect it is a bit glitchy and responsible for some irregularities in crit damage, but haven't methodically tested this yet. Would definitely want to test out the ChitinPlating perk to see what side-effects it might have.

Edited by Amineri
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...