XGAbilityTree.BuildAbilities

From Nexus Mods Wiki
Jump to: navigation, search

Overview

This function is used for both XCOM Soldier and Alien abilities. It is found in the XComGame.upk file.

Function

  • Path: XComGame.upk >> XGAbilityTree >> BuildAbilities()
  • Values: See for tables of related enumerated values such as Ability, DisplayProperty, Effect, Property, Range, and Target.

Signature

  • simulated function BuildAbilities()
  • no return value

History

  • Available since version 1.0?

Header in Hex

XCom Enemy Unknown; version unknown; patch unknown
8E 7E 00 00 47 55 00 00 00 00 00 00 79 7E 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4D 00 00 00 A4 0C 00 00 13 0D 00 00 F7 0C 00 00

Code Break Down


simulated function BuildAbilities()
{

   m_iCurrentCategory = 1;
   BuildAbility(7, 2, 1, -1, -20, 1, 1, 46, 8);
   BuildAbility(9, 2, 5, -1, -20, 1, 1, 25, 36, 11);
   BuildAbility(10, 2, 5, -1, -20, 1, 1, 26, 36, 11, 3, 9);
   BuildAbility(11, 1, 2, -1, -20, 1, 1, 3, 9);
   BuildAbility(8, 2, 1, -1, -20, 1, 1, 1, 9);
   BuildAbility(25, 8, 3, 2, -20, 1, 12, 1, 4, 45, 3, 7, 9);
   BuildAbility(66, 8, 3, 2, -20, 1, 2, 12, 1, 4, 45, 44, 3, 7, 9);
   BuildAbility(12, 2, 1, -1, -20, 4, 1, 1, 44, 9);
   BuildAbility(17, 2, 1, 2, -20, 2, 5, 18, 1, 3, 29, 38, 40, 44, 9);
   BuildAbility(67, 2, 1, 2, -20, 2, 5, 1, 18, 1, 3, 38, 40, 44, 9, 9);
   BuildAbility(20, 8, 2, -1, -20, 12, 1, 33, 13);
   BuildAbility(81, 8, 2, -1, -20, 12, 1, 33, 13);
   BuildAbility(33, 1, 0, -1, 20, 6, 39, 3);
   BuildAbility(34, 8, 2, -1, -20, 21, 12, 1, 4, 3, 7);
   BuildAbility(22, 8, 1, -1, -20, 1, 12, 1, 3, 4, 7);
   BuildAbility(24, 8, 1, -1, -20, 1, 12, 1, 3, 4, 7);
   BuildAbility(23, 8, 1, -1, -20, 21, 12, 1, 4, 30, 3, 4, 7);
   BuildAbility(71, 8, 1, -1, -20, 21, 12, 1, 4, 3, 4, 7);
   BuildAbility(30, 1, 0, 3, -20, 22, 3, 2);
   BuildAbility(31, 1, 0, -1, -20, 23, 1, 8, 3);
   BuildAbility(32, 1, 0, -1, -20, 24, 1, 8, 3);
   BuildAbility(13, 2, 1, 3, -20, 8, 1);
   BuildAbility(14, 2, 1, 2, -20, 2, 1);
   BuildAbility(15, 1, 1, 1, -20, 8, 1);
   BuildAbility(48, 2, 2, -1, -20, 1, 1, 2, 47, 10);
   BuildAbility(70, 8, 2, -1, -20, 1, 12, 13, 9, 3, 1);
   BuildAbility(52, 2, 2, 7, -20, 17, 1, 2, 21, 32, 44, 10, 11);
   BuildAbility(75, 2, 2, 7, -20, 17, 1, 2, 21, 32, 44, 11);
   BuildAbility(35, 8, 2, -1, -20, 21, 1, 4, 42, 12, 44, 3, 7, 9, 3);
   BuildAbility(28, 2, 2, -1, -20, 18);
   BuildAbility(61, 2, 1, 4, -20, 1, 1, 44, 9, 3);
   BuildAbility(62, 2, 1, 4, -20, 1, 1, 44, 9, 5);
   BuildAbility(72, 2, 2, 5, -20, 1, 2, 1, 2, 32, 44, 3, 3);
   BuildAbility(73, 3, 2, 8, -20, 2, 12, 2, 4, 1, 44, 21, 3, 7, 9);
   BuildAbility(53, 2, 2, 5, -20, 16, 1, 2, 32, 44, 25, 5);
   m_iCurrentCategory = 2;
   BuildAbility(76, 1, 1, 5, -20, 2, 2, 1, 44, 3, 9);
   BuildAbility(82, 3, 1, 5, -20, 2, 2, 8, 44, 1);
   BuildAbility(74, 1, 2, 2, -20, 2, 1, 2, 44, 21, 3, 9);
   BuildAbility(39, 4, 3, -1, -20, 20, 3);
   BuildAbility(38, 1, 0, 2, -20, 2, 23, 38, 39, 3, 2);
   BuildAbility(86, 1, 0, 2, -20, 2, 38, 39, 3, 2);
   BuildAbility(26, 1, 0, 3, -20, 2, 18, 3);
   BuildAbility(44, 1, 0, -1, -20, 16, 3, 1);
   BuildAbility(45, 1, 0, -1, -20, 11, 3);
   BuildAbility(36, 4, 3, -1, -20, 12, 24, 11, 25, 1, 3);
   BuildAbility(37, 4, 3, -1, -20, 13, 24, 11, 25, 1, 3, 9);
   BuildAbility(40, 1, 0, 3, -20, 14, 2, 19, 21, 8, 3);
   BuildAbility(41, 5, 3, -1, -20, 2, 56, 1, 11, 25, 3);
   BuildAbility(42, 4, 5, -1, -20, 2, 1, 26, 11, 3);
   BuildAbility(43, 1, 0, 5, -20, 1, 3);
   BuildAbility(47, 4, 2, 2, -20, 2, 29, 15, 1, 2, 27, 34, 21);
   BuildAbility(51, 7, 2, -1, -20, 2, 29, 15, 1, 2, 27, 34, 21);
   BuildAbility(55, 1, 0, 3, -20, 2, 3, 9);
   BuildAbility(56, 9, 1, -1, -20, 25, 2, 1, 3);
   BuildAbility(57, 10, 1, -1, -20, 26, 2, 1, 3);
   BuildAbility(58, 4, 2, -1, -20, 27, 2, 1, 25, 3);
   BuildAbility(59, 4, 1, -1, -20, 28, 2, 1, 3);
   BuildAbility(88, 11, 2, 6, -20, 2, 44, 27, 9, 3, 9);
   m_iCurrentCategory = 3;
   BuildAbility(27, 2, 2, -1, -20, 8, 1);
   BuildAbility(87, 2, 2, -1, -20, 15, 8, 1);
   m_iCurrentCategory = 2;
   BuildAbility(6, 8, 1, -1, -20, 7, 1, 12, 3, 7);
   BuildAbility(1, 8, 0, -1, -3, 15, 7, 1, 3);
   BuildAbility(2, 1, 0, -1, -20, 8, 35, 3);
   BuildAbility(3, 1, 0, -1, -20, 15, 2, 7);
   BuildAbility(4, 1, 0, -1, -20, 15, 2, 7);
   BuildAbility(5, 8, 0, -1, -20, 15, 12, 3, 7);
   BuildAbility(68, 1, 0, 6, 0, 30, 8, 44, 3, 9, 6);
   m_iCurrentCategory = 1;
   BuildAbility(78, 3, 2, 10, -20, 1, 1, 43, 42, 44, 9, 3, 9, 8);
   m_iCurrentCategory = 2;
   BuildAbility(77, 1, 0, -1, 0, 8, 3, 9);
   BuildAbility(83, 4, 1, -1, -20, 2, 1, 26, 3, 2, 9);
   m_iCurrentCategory = 1;
   BuildAbility(79, 2, 2, 2, 40, 1, 6, 1, 7, 9);
   BuildAbility(80, 8, 3, 2, -20, 1, 12, 1, 44, 9, 7, 3, 10);
   //return;    

}

Code Breakdown

Function header
8E 7E 00 00 47 55 00 00 00 00 00 00 79 7E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4D 00 00 00 A4 0C 00 00 13 0D 00 00 F7 0C 00 00

m_iCurrentCategory = 1; >> 0F 01 72 7E 00 00 26
calling BuildAbility >> 1B 7A 0D 00 00 00 00 00 00
ability >> 24 07
target >> 24 02
range >> 2C 02
duration >> 1D FF FF FF FF
reaction cost >> 1D EC FF FF FF
effect 1 >> 24 01
effects 2-3 >> 4A 4A
property 1 >> 24 01
property 2 >> 24 2E
prop 3-8 >> 4A 4A 4A 4A 4A 4A
visual prop 1 >>24 08
visual prop 2-3 >> 4A 4A
cooldown >> 4A
charges >> 4A
end param >> 16

from there it just keeps repeating function calls.

Replacement Codes


  • eAbility_ShotStandard, range set by weapon (ini setting)

SF: 1B 7A 0D 00 00 00 00 00 00 24 07 24 02 2C 02 1D FF FF FF FF 1D EC FF FF FF 24 01 4A 4A 24 01 24 2E 4A 4A 4A 4A 4A 4A 24 08 4A 4A4A 4A 16
RW: 1B 7A 0D 00 00 00 00 00 00 24 07 24 02 2C 01 1D FF FF FF FF 1D EC FF FF FF 24 01 4A 4A 24 01 24 2E 4A 4A 4A 4A 4A 4A 24 08 4A 4A4A 4A 16

  • eAbility_RapidFire, range set by weapon (ini setting)

SF: 1B 7A 0D 00 00 00 00 00 00 24 08 24 02 2C 02 1D FF FF FF FF 1D EC FF FF FF 24 01 24 01 4A 24 01 4A 4A 4A 4A 4A 4A 4A 24 09 4A 4A 4A 4A 16
RW: 1B 7A 0D 00 00 00 00 00 00 24 08 24 02 2C 01 1D FF FF FF FF 1D EC FF FF FF 24 01 24 01 4A 24 01 4A 4A 4A 4A 4A 4A 4A 24 09 4A 4A 4A 4A 16

  • eAbility_ShotFlush, range set by weapon (ini setting)

SF: 1B 7A 0D 00 00 00 00 00 00 24 0C 24 02 2C 02 1D FF FF FF FF 1D EC FF FF FF 24 04 24 01 4A 24 01 24 2C 4A 4A 4A 4A 4A 4A 24 09 4A 4A 4A 4A 16
RW: 1B 7A 0D 00 00 00 00 00 00 24 0C 24 02 2C 01 1D FF FF FF FF 1D EC FF FF FF 24 04 24 01 4A 24 01 24 2C 4A 4A 4A 4A 4A 4A 24 09 4A 4A 4A 4A 16

  • eAbility_ShotSuppress, range set by weapon (ini setting)

SF: 1B 7A 0D 00 00 00 00 00 00 24 11 24 02 2C 02 2C 02 1D EC FF FF FF 24 02 24 05 4A 24 12 24 01 24 03 24 1D 24 26 24 28 24 2C 4A 24 09 4A 4A 4A 4A 16
RW: 1B 7A 0D 00 00 00 00 00 00 24 11 24 02 2C 01 2C 02 1D EC FF FF FF 24 02 24 05 4A 24 12 24 01 24 03 24 1D 24 26 24 28 24 2C 4A 24 09 4A 4A 4A 4A 16

  • eAbility_ShotMayhem, range set by weapon (ini setting)

SF: 1B 7A 0D 00 00 00 00 00 00 24 43 24 02 2C 02 2C 02 1D EC FF FF FF 24 02 24 05 24 01 24 12 24 01 24 03 24 26 24 28 24 2C 24 09 4A 24 09 4A 4A 4A 4A 16
RW: 1B 7A 0D 00 00 00 00 00 00 24 43 24 02 2C 01 2C 02 1D EC FF FF FF 24 02 24 05 24 01 24 12 24 01 24 03 24 26 24 28 24 2C 24 09 4A 24 09 4A 4A 4A 4A 16

  • eAbility_PrecisionShot, range set by weapon (ini setting) and cooldown reduced to 1 turn

SF: 1B 7A 0D 00 00 00 00 00 00 24 3D 24 02 2C 02 2C 04 1D EC FF FF FF 24 01 4A 4A 24 01 24 2C 4A 4A 4A 4A 4A 4A 24 09 4A 4A 2C 05 4A 16
RW: 1B 7A 0D 00 00 00 00 00 00 24 3D 24 02 2C 01 2C 04 1D EC FF FF FF 24 01 4A 4A 24 01 24 2C 4A 4A 4A 4A 4A 4A 24 09 4A 4A 2C 03 4A 16
It seems the game counts both your and AI turns. Do not know for sure if the ability cooldown must finish on AI turn for it to work the next.

  • eAbility_DisablingShot, range set by ini weapon setting

SF: 1B 7A 0D 00 00 00 00 00 00 24 3E 24 02 2C 02 2C 04 1D EC FF FF FF 24 01 4A 4A 24 01 24 2C 4A 4A 4A 4A 4A 4A 24 09 4A 4A 2C 05 4A 16
RW: 1B 7A 0D 00 00 00 00 00 00 24 3E 24 02 2C 01 2C 04 1D EC FF FF FF 24 01 4A 4A 24 01 24 2C 4A 4A 4A 4A 4A 4A 24 09 4A 4A 2C 05 4A 16

References

Referred to by this article:


That refer to this article: