Jump to content

Custom Soldier Ability Trees


graaa

Recommended Posts

Great job... I am thinking on creating a visual GUI to allow to change the abilities easily and generate the HEX code needed to be modified in the UPK.

 

Also here is an uber assault class, I was thinking on a one man army kind of unit, that is able to go alone... The alternatives in each level are for an aggressive build and the others mainly for survival.

 

ONEMAN:

 

Squaddie

Run & Gun: Allows firing or Overwatch after Dashing. Two turn cooldown.

 

Corporal

Lightning Reflexes:Forces the first reaction shot against this unit each turn to miss.

Low Profile: Converts partial cover to full cover

 

Sergeant

Close Combat Specialist: Confers a reaction shot against any enemy who closes within 4 tiles.

Will to Survive: Reduces normal damage taken by 2 if in cover and not flanked.

 

Lieutenant

Sentinel: Allows two reaction shots during Overwatch instead of one.

Extra Conditioning: Confers bonus health based on which type of armor is equipped. Heavier armor increases the bonus..

 

Captain

HEAT Ammo: Confers +100% damage against robotic enemies.

Bullet Swarm: Firing the primary weapon as the first action no longer ends the turn.

 

Major

Sprinter: Allows the unit to move 3 additional tiles.

 

Colonel

Resilience: Confers immunity to critical hits.

Killer Instinct: Activating Run & Gun now also grants +50% critical damage for the rest of the turn.

Link to comment
Share on other sites

  • Replies 47
  • Created
  • Last Reply

Top Posters In This Topic

Also here is an uber assault class, I was thinking on a one man army kind of unit, that is able to go alone... The alternatives in each level are for an aggressive build and the others mainly for survival.

 

Nice build... Run & Gun, Sentinal, Heat Ammo, Lightning Reflexes OR Low profile (nice), close combat specialist, sprinter at major (double nice)... this looks like a guy that can handle ANYTHING. I've tried testing bulletstorm on the assault tho, and it doesn't seem to work. At the moment I'm wondering if adding the _heavy property to the shotgun will allow it but I'm currently in the middle of testing a .ini rebalance mod with my new builds. Maybe rapid fire will have to suffice instead of bulletstorm for now?

 

Keep the ideas coming!

Link to comment
Share on other sites

Also here is an uber assault class, I was thinking on a one man army kind of unit, that is able to go alone... The alternatives in each level are for an aggressive build and the others mainly for survival.

 

Nice build... Run & Gun, Sentinal, Heat Ammo, Lightning Reflexes OR Low profile (nice), close combat specialist, sprinter at major (double nice)... this looks like a guy that can handle ANYTHING. I've tried testing bulletstorm on the assault tho, and it doesn't seem to work. At the moment I'm wondering if adding the _heavy property to the shotgun will allow it but I'm currently in the middle of testing a .ini rebalance mod with my new builds. Maybe rapid fire will have to suffice instead of bulletstorm for now?

 

Keep the ideas coming!

 

I've added Bullet Swarm to my Support class and _Heavy to the assault rifle. Sadly, Bullet Swarm doesn't seem to work like this either. I haven't tested Bullet Swarm on an LMG though (will try in a bit), but maybe Bullet Swarm is somehow tied with the Heavy class itself?

 

EDIT: Just tried it with the Heavy Plasma. Bullet Swarm still did not work on Support :(

Edited by kaijin2k3
Link to comment
Share on other sites

Great job... I am thinking on creating a visual GUI to allow to change the abilities easily and generate the HEX code needed to be modified in the UPK.

That would be an awesome and very useful little tool, regardless of any other tools being worked on too; just an "ability manager editor" GUI would make this a lot faster and easier.

Link to comment
Share on other sites

If I understand this right, this might be the code that ties in Bullet Swarm to the Heavy : (it's in xcomgame.upk/XGUnit)

simulated function int GetRemainingActions()
{
       local int maxActions, currentActionsUsed;

       maxActions = 2;
       // End:0x48 Loop:False
       if(m_iFireActionsPerformed == 1 && (GetSoldierClass() != 2))
       {
               currentActionsUsed = maxActions;
       }
       // End:0x5b
       else
       {
               currentActionsUsed = m_iMovesActionsPerformed;
       }
       return Max(0, maxActions - currentActionsUsed);

ie if a firing action is performed, it returns that all actions are used regardless of perks unless soldierclass=2. I didn't check, but my money is on class "2" being Heavy. Modding this out should be fairly easy (some smart person gave a way to skip a whole IF check in the code, in the Next Step thread). Maybe I'll try to look into it if I find the time but honestly my backlog of testing is growing much faster that I can handle right now.

Link to comment
Share on other sites

If I understand this right, this might be the code that ties in Bullet Swarm to the Heavy : (it's in xcomgame.upk/XGUnit)

 

ie if a firing action is performed, it returns that all actions are used regardless of perks unless soldierclass=2. I didn't check, but my money is on class "2" being Heavy. Modding this out should be fairly easy (some smart person gave a way to skip a whole IF check in the code, in the Next Step thread). Maybe I'll try to look into it if I find the time but honestly my backlog of testing is growing much faster that I can handle right now.

 

I changed it to == 255. Sadly, it didn't affect anything.

 

EDIT: Nevermind on my edit. I should sleep v.v

Edited by kaijin2k3
Link to comment
Share on other sites

If I understand this right, this might be the code that ties in Bullet Swarm to the Heavy : (it's in xcomgame.upk/XGUnit)

simulated function int GetRemainingActions()
{
       local int maxActions, currentActionsUsed;

       maxActions = 2;
       // End:0x48 Loop:False
       if(m_iFireActionsPerformed == 1 && (GetSoldierClass() != 2))
       {
               currentActionsUsed = maxActions;
       }
       // End:0x5b
       else
       {
               currentActionsUsed = m_iMovesActionsPerformed;
       }
       return Max(0, maxActions - currentActionsUsed);

ie if a firing action is performed, it returns that all actions are used regardless of perks unless soldierclass=2. I didn't check, but my money is on class "2" being Heavy. Modding this out should be fairly easy (some smart person gave a way to skip a whole IF check in the code, in the Next Step thread). Maybe I'll try to look into it if I find the time but honestly my backlog of testing is growing much faster that I can handle right now.

 

 

 

Nice catch :)

You found what i searched for 2 days :) If we could change currentActionsUsed = maxActions; to currentActionsUsed = m_iMovesActionsPerformed; then every squad member (and maybe the aliens too) get the bulletswarm ability.

Link to comment
Share on other sites

Perk Visual Editor

 

Still under construction, not sure if it is useful, it will generate a text with HEX lines in pairs, the first one is the default perk and the following is the change needed for the new perk. Some sort of HEX search & replace script will be needed (will work on it afterwards) what I need to know if it is worth changing the HEX values in the uncompressed UPK XComGame file directly.

Edited by rf900
Link to comment
Share on other sites

I have a bad news. I think this is not where the magic happens. I changed the code to:

maxActions = 2;
// End:0x48 Loop:False
if(m_iFireActionsPerformed == 1 && (GetSoldierClass() != 2))
{
	currentActionsUsed = m_iMovesActionsPerformed;
}
// End:0x5b
else
{
	currentActionsUsed = m_iMovesActionsPerformed;
}
return Max(0, maxActions - currentActionsUsed);

 

But isn't working.

I mean, think it consequently. If the actor performed a shot and it's not class=2, then all of the action points used, cause, currentActionsUsed=maxActions and in the return, maxActions -currentActionsUsed (what is equal to maxActions) it will return 0, and that say, you have 0 action remaning, in the else section, currentActionsUsed will be equal to m_iMovesActionsPerformed who's value i think is 1, and then the return part will be 1.

So what did i do? is simple: copy the else part to the if part, and nobody care what the if says, because it will do the same thing, it will return with number 1.

If i wrong somewhere, please correct me.

By the way in the game, it's not working ... i dont know why ... i think it's the same magic, as the constants in the XGTacticalGameCoreNativeBase dosent do anything.

Link to comment
Share on other sites

I have a bad news. I think this is not where the magic happens. I changed the code to:

maxActions = 2;
// End:0x48 Loop:False
if(m_iFireActionsPerformed == 1 && (GetSoldierClass() != 2))
{
	currentActionsUsed = m_iMovesActionsPerformed;
}
// End:0x5b
else
{
	currentActionsUsed = m_iMovesActionsPerformed;
}
return Max(0, maxActions - currentActionsUsed);

 

But isn't working.

I mean, think it consequently. If the actor performed a shot and it's not class=2, then all of the action points used, cause, currentActionsUsed=maxActions and in the return, maxActions -currentActionsUsed (what is equal to maxActions) it will return 0, and that say, you have 0 action remaning, in the else section, currentActionsUsed will be equal to m_iMovesActionsPerformed who's value i think is 1, and then the return part will be 1.

So what did i do? is simple: copy the else part to the if part, and nobody care what the if says, because it will do the same thing, it will return with number 1.

If i wrong somewhere, please correct me.

By the way in the game, it's not working ... i dont know why ... i think it's the same magic, as the constants in the XGTacticalGameCoreNativeBase dosent do anything.

 

You did give your non-heavies the Bullet Swarm perk right ? Modding this code would remove the impossibility for non-heavies to fire twice, not actually give them the ability to do it.

I think your mod to the code is good and should do the trick.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...