dubiousintent Posted May 17, 2013 Share Posted May 17, 2013 (edited) 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 May 17, 2013 by dubiousintent Link to comment Share on other sites More sharing options...
Amineri Posted May 17, 2013 Author Share Posted May 17, 2013 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 LauncherWeapons=(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 SuperchargerWeapons=(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 FeedsWeapons=(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);HoloTargeterWeapons=(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 DamperWeapons=(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 ModuleWeapons=(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 ArmoringWeapons=(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 ArmorWeapons=(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 WeaponWeapons=(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 AmmoWeapons=(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 RoundsWeapons=(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 ArmorWeapons=(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 More sharing options...
Vereist Posted May 17, 2013 Share Posted May 17, 2013 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 More sharing options...
Amineri Posted May 17, 2013 Author Share Posted May 17, 2013 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 More sharing options...
Amineri Posted May 24, 2013 Author Share Posted May 24, 2013 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_DoubleTapHoloTargeter - eItem_BEGIN_GRENADES //grants ePerk_TracerBeamsEnergy Damper - eItem_BEGIN_ALIEN_GRENADES //grants ePerk_LightningReflexes Ghost Module - eItem_END_ALIEN_GRENADES // grants ePerk_StealthCore Armoring - eItem_FloaterGrenadev // grants perk ePerk_ResilienceHEAT 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 More sharing options...
Amineri Posted May 24, 2013 Author Share Posted May 24, 2013 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 More sharing options...
Amineri Posted May 25, 2013 Author Share Posted May 25, 2013 Here's perks that I've confirmed work on SHIVS: HolotargettingHEAT AmmoDouble Tap (with fix to remove Sniper req)Lightning ReflexesResilience Perks that don't work:Stealth (Stealth ability does not appear) Link to comment Share on other sites More sharing options...
anUser Posted May 25, 2013 Share Posted May 25, 2013 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 More sharing options...
kara42 Posted June 16, 2013 Share Posted June 16, 2013 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 More sharing options...
Amineri Posted June 16, 2013 Author Share Posted June 16, 2013 (edited) @ 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 June 16, 2013 by Amineri Link to comment Share on other sites More sharing options...
Recommended Posts