Jump to content

WIP - share the fun


Drakous79

Recommended Posts

Hard to tell. But there is stuff like function CycleInterceptor() and function NextUFO() in XGInterceptionThrowdownUI. Maybe there was only HQ protecting entire Earth before devs decided to add continent hangars. It seems unfinished, as function UpdateThrowdown() is empty.

 

Bingo. To allow UFOs to be destroyed, change

ea 33 00 00 24 01 06 e0 01 07

to

ea 33 00 00 24 02 06 e0 01 07

 

But you also must set a much greater threshold of damage, or *everything* will be shot down and nothing will crash land. I set -600 (and altered some UFO hit points elsewhere to ensure big ones never go below -600 with existing weapon damage).

 

Change

1d f6 ff ff ff 16

to

1d a8 fd ff ff 16

Link to comment
Share on other sites

I would like a condition like "if is the ship armed with EMP cannon, UFO cannot be destroyed". Just one value for all weapons is hard to balance. Maybe rebalance all weapons and ships with armor penetration.
Link to comment
Share on other sites

I would like a condition like "if is the ship armed with EMP cannon, UFO cannot be destroyed". Just one value for all weapons is hard to balance. Maybe rebalance all weapons and ships with armor penetration.

 

What I'm doing to get around that is lower the EMP cannon's damage to 500 but increase its rate of fire, so it will do the same damage but in smaller chunks. That way the EMP cannon will never hit the -600 threshhold, and it will always result in shootdowns.

Link to comment
Share on other sites

Hopefully this is the right place to post this. I'm working on making my own mod, primarily focused on rebalancing the classes. To give context, allow me to briefly outline my thoughts:

 

Assault: currently a little overpowered, capable of both taking/avoiding the most damage and delivering the most against a single target. Hoping to rebalance to have more risk entailed as well as possibly providing In The Zone to allow him to engage multiple targets. Offence is the best defense mentality.

 

Sniper: currently capable of potentially the most attacks per turn as well as the most effective user of overwatch; both somewhat counterintuitive for a sniper IMO. Attempting to balance towards reliable high damage against priority targets, almost swapping roles with the assault. To that end he will be receiving many of the Assault's perks.

 

Support: role will remain much the same, discarding some of its weaker perks such as Revive and Smoke Grenade (in favour of Smoke & Mirrors) in order to adopt perks such as Battle Scanner from other classes. Also considering making the predominant overwatch user.

 

Heavy: also similar to the original, focused on entrenchment through cover buffing perks and crowd control with the addition of Flush.

 

To this end I am currently struggling with two main problems: creating new perks, or at least assigning new abilities to existing ones to replace those being discarded, and modifying existing perks to address new gaps in classes' performance. I have been trying to modify the perk Close & Personal, which is now the Assault's sole crit-buffing perk, to allow it give a bonus over a longer range, allowing him to retain his ability to become a mid-range combatant. I believe I have finally found the relevant code, this snippet is from the function GetCritSummaryModFromPerks:

 

else
{
	// End:0x406 Loop:False
	if(UnitCharacter.aUpgrades[34] > 0)
	{
		fDistance = 1.00 + XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.9.00 / XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.1.50;
		fCloseAndPersonal = XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.5.00 * float(int(fDistance - m_fDistanceToTarget / XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.1.50));
		// End:0x406 Loop:False
		if(fCloseAndPersonal > float(0))
		{
			kInfo.arrCritBonusStrings.AddItem(m_strBonusCritDistance);
			kInfo.arrCritBonusValues.AddItem(int(fCloseAndPersonal));
		}
	}
	// End:0x4e7 Loop:False
	if(UnitCharacter.aUpgrades[2] > 0 && (GetType() == 61))
	{
		kInfo.arrCritBonusStrings.AddItem(m_strBonusCritPrecision);
		kInfo.arrCritBonusValues.AddItem(XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.30);
	}
	iAggression = m_kUnit.GetAggressionBonus();
	// End:0x571 Loop:False
	if(iAggression > 0)
	{
		kInfo.arrCritBonusStrings.AddItem(m_strBonusCritAggression);
		kInfo.arrCritBonusValues.AddItem(iAggression);
	}
	// End:0x63c Loop:False
	if(m_kUnit.m_bInCombatDrugs)
	{
		kInfo.arrCritBonusStrings.AddItem(m_strBonusCritCombatDrugs);
		kInfo.arrCritBonusValues.AddItem(XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.10);
	}
}

 

The relevant values here are 34, 9, 1.5, and 5. 34 is the perk index for Close & Personal. 9 is the maximum distance in game units that the perk will take effect. 1.5 is the value used to convert game units into tiles, each tile being 1.5 game units. Finally, 5 is the increment in which the bonus is applied; that is to say, +5% crit chance per tile closer than the maximum effective distance, to express it as the code does. For my purposes, I would want to increase 9 to a suitable mid-range value, perhaps 22.5, and decrease 5 to 3. This would result in a maximum effective distance of 15 tiles (22.5 / 1.5), with a maximum bonus of +45% crit chance (15 * 3) which decreases by 3% per tile. The combat drugs' crit bonus is handled here as well, in addition to a call to the function handling Aggression. EDIT: I just noticed m_strBonusCritPrecision, which would indicate that section handles the Sniper's Headshot.

Edited by ZantarV
Link to comment
Share on other sites

  • Recently Browsing   0 members

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