Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function GenerateMTFPersonnelReward(XComGameState_Reward RewardState, XComGameState NewGameState, optional float RewardScalar = 1.0, optional StateObjectReference RegionRef)
- {
- local XComGameState_HeadquartersResistance ResistanceHQ;
- local XComGameStateHistory History;
- local XComGameState_Unit NewUnitState;
- local XComGameState_WorldRegion RegionState;
- local int idx, NewRank, StartingRank;
- local name nmCountry;
- local name nmCharacter;
- local name nmlegs;
- local name iGender;
- local name iWeaponTint;
- local bool UseAlternate;
- local bool PairOne;
- local bool PairTwo;
- History = `XCOMHISTORY;
- //nmCharacter = 'Soldier'; //not needed
- nmCountry = '';
- RegionState = XComGameState_WorldRegion(`XCOMHISTORY.GetGameStateForObjectID(RegionRef.ObjectID));
- if(RegionState != none)
- {
- nmCountry = RegionState.GetMyTemplate().GetRandomCountryInRegion();
- }
- NewUnitState = CreateMTFPersonnelUnit(NewGameState, RewardState.GetMyTemplate().rewardObjectTemplateName, nmCountry, (RewardState.GetMyTemplateName() == 'Reward_MTF'));
- NewUnitState.RandomizeStats();
- UseAlternate = `SYNC_RAND(100) > 50; //Stolen from reality, because he is good at this shit
- PairOne = `SYNC_RAND(100) > 50; //Definig my own randomizers, to make the MTF looks more random, as using the same operator more than once in the same line does not seem to work.
- PairTwo = `SYNC_RAND(100) > 50;
- //NewUnitState.kAppearance.iGender = (UseAlternate) ? eGender_Female : eGender_Male; //Already defined in NewUnitState, so not needed here
- if(NewUnitState.kAppearance.iGender == eGender_Male) //Here we check if newly generated unit is a male
- {
- NewUnitState.kAppearance.nmarms = 'gign_arms2'; //Arms with XCom badge on them
- }
- else //If they're not male, we use Female body parts
- {
- NewUnitState.kAppearance.nmarms = 'gign_arms2_f';
- }
- if(NewUnitState.kAppearance.iGender == eGender_Male) //we check if newly generated unit is a male
- {
- //NewUnitState.kAppearance.nmlegs = (UseAlternate) ? 'gign_Legs3' : 'gign_Legs2'); //Less random set of body parts, not using my own randomizers
- NewUnitState.kAppearance.nmlegs = (UseAlternate) ? ((PairOne) ? 'gign_Legs3' : 'gign_Legs3') : ((PairTwo) ? 'gign_Legs' : 'gign_Legs2'); //legs
- }
- else //If they're not male, we use Female body parts
- {
- //NewUnitState.kAppearance.nmlegs = (UseAlternate) ? 'gign_Legs3_F' : 'gign_Legs2_F'); //Less random set of body parts, not using my own randomizers
- NewUnitState.kAppearance.nmlegs = (UseAlternate) ? ((PairOne) ? 'gign_Legs3_F' : 'gign_Legs3_F') : ((PairTwo) ? 'gign_Legs_F' : 'gign_Legs2_F'); //Arms
- }
- if(NewUnitState.kAppearance.iGender == eGender_Male) //we check if newly generated unit is a male
- {
- //NewUnitState.kAppearance.nmtorso = (UseAlternate) ? 'gign_Torso3' : 'gign_Torso4'; //Less random set of body parts, not using my own randomizers
- NewUnitState.kAppearance.nmtorso = (UseAlternate) ? ((PairOne) ? 'gign_Torso3' : 'gign_Torso4') : ((PairTwo) ? 'gign_Torso' : 'gign_Torso2'); //Torsos
- }
- else //If they're not male, we use Female body parts
- {
- //NewUnitState.kAppearance.nmtorso = (UseAlternate) ? 'gign_Torso3_F' : 'gign_Torso4_F'; //Less random set of body parts, not using my own randomizers
- NewUnitState.kAppearance.nmtorso = (UseAlternate) ? ((PairOne) ? 'gign_Torso3_F' : 'gign_Torso4_F') : ((PairTwo) ? 'gign_Torso_F' : 'gign_Torso2_F');
- }
- if (NewUnitState.kAppearance.iGender == eGender_Male) //we check if newly generated unit is a male
- {
- NewUnitState.kAppearance.nmHelmet = (UseAlternate) ? 'gign_helm3' : 'gign_helm'; //Helmets
- }
- else //If they're not male, we use Female body parts
- {
- NewUnitState.kAppearance.nmHelmet = (UseAlternate) ? 'ALL_WotC_MGSV_PMC_Heavy_Helmet_Opaque_F' : 'ALL_WotC_MGSV_PMC_Heavy_Helmet_Translucent_F';
- }
- if (NewUnitState.kAppearance.iGender == eGender_Male) //we check if newly generated unit is a male
- {
- NewUnitState.kAppearance.nmVoice = (UseAlternate) ? 'TVP_GHOST2' : 'TVP_GHOST3';
- }
- else //If they're not male, we use Female body parts
- {
- NewUnitState.kAppearance.nmVoice = (UseAlternate) ? 'TVP_GHOST4' : 'TVP_GHOST4'; //I don't have any more female voices for the operative. Randomizer not needed, but I'll keep it in here
- }
- NewUnitState.KAppearance.nmPatterns = 'Pat_Nothing';
- NewUnitState.kAppearance.iArmorTint = (UseAlternate) ? ((PairOne) ? 94 : 95) : ((PairTwo) ? 91 : 56);
- NewUnitState.kAppearance.iArmorTintSecondary = 70;
- NewUnitState.kAppearance.iWeaponTint = 94; //no gun metal grey bullshit, JUST BLACK https://www.youtube.com/watch?v=pAgnJDJN4VA
- NewGameState.AddStateObject(NewUnitState);
- if(!NewGameState.GetContext().IsStartState())
- {
- ResistanceHQ = XComGameState_HeadquartersResistance(NewGameState.CreateStateObject(class'XComGameState_HeadquartersResistance', ResistanceHQ.ObjectID));
- NewGameState.AddStateObject(ResistanceHQ);
- }
- ResistanceHQ = XComGameState_HeadquartersResistance(History.GetSingleGameStateObjectForClass(class'XComGameState_HeadquartersResistance'));
- NewUnitState.ApplyInventoryLoadout(NewGameState);
- StartingRank = NewUnitState.GetRank(); //this is so in case we get an unit that already starts off with a class
- NewRank = GetPersonnelRewardRank(true, (RewardState.GetMyTemplateName() == 'Reward_MTF'));
- NewUnitState.SetXPForRank(NewRank);
- NewUnitState.StartingRank = NewRank;
- NewUnitState.RankUpSoldier(NewGameState, 'MTFChief'); //||NO MATTER WHATEVER THE FUCK HAPPENS, THIS FUCKING GUY'S CLASS HAS TO BE THE CHIEF||
- for(idx = StartingRank; idx < NewRank; idx++)
- {
- // Rank up to squaddie if this is an unit that starts off as a rookie
- if(idx == 0)
- {
- NewUnitState.RankUpSoldier(NewGameState, 'MTFChief'); //||NO MATTER WHATEVER THE FUCK HAPPENS, THIS FUCKING GUY'S CLASS HAS TO BE THE CHIEF||
- NewUnitState.ApplySquaddieLoadout(NewGameState);
- NewUnitState.bNeedsNewClassPopup = true;
- }
- else
- {
- NewUnitState.RankUpSoldier(NewGameState, 'MTFChief'); //||NO MATTER WHATEVER THE FUCK HAPPENS, THIS FUCKING GUY'S CLASS HAS TO BE THE CHIEF||
- }
- }
- //class'XGCharacterGenerator_MTFSoldier'.static.TSoldier_CreateTSoldier(KSoldier);
- RewardState.RewardObjectReference = NewUnitState.GetReference();
- }
- static function XComGameState_Unit CreateMTFPersonnelUnit(XComGameState NewGameState, name nmCharacter, name nmCountry, optional bool bIsRookie) //That's my bootleg version of CreatePersonnelUnit function, that is set to give the soldier class of mtf chief no matter what
- {
- local XComGameStateHistory History;
- local XComGameState_Unit NewUnitState;
- local XComGameState_HeadquartersXCom XComHQ;
- local XComGameState_HeadquartersResistance ResistanceHQ;
- local int idx, NewRank, StartingIdx;
- History = `XCOMHISTORY;
- //Use the character pool's creation method to retrieve a unit
- NewUnitState = `CHARACTERPOOLMGR.CreateCharacter(NewGameState, `XPROFILESETTINGS.Data.m_eCharPoolUsage, nmCharacter, nmCountry);
- NewUnitState.RandomizeStats();
- if (NewUnitState.IsSoldier())
- {
- XComHQ = XComGameState_HeadquartersXCom(History.GetSingleGameStateObjectForClass(class'XComGameState_HeadquartersXCom'));
- ResistanceHQ = XComGameState_HeadquartersResistance(History.GetSingleGameStateObjectForClass(class'XComGameState_HeadquartersResistance'));
- if (!NewGameState.GetContext().IsStartState())
- {
- ResistanceHQ = XComGameState_HeadquartersResistance(NewGameState.ModifyStateObject(class'XComGameState_HeadquartersResistance', ResistanceHQ.ObjectID));
- }
- NewUnitState.ApplyInventoryLoadout(NewGameState);
- NewRank = GetPersonnelRewardRank(true, bIsRookie);
- NewUnitState.SetXPForRank(NewRank);
- NewUnitState.StartingRank = NewRank;
- StartingIdx = 0;
- if(NewUnitState.GetMyTemplate().DefaultSoldierClass != '' && NewUnitState.GetMyTemplate().DefaultSoldierClass != class'X2SoldierClassTemplateManager'.default.DefaultSoldierClass)
- {
- // Some character classes start at squaddie on creation
- StartingIdx = 1;
- }
- for (idx = StartingIdx; idx < NewRank; idx++)
- {
- // Rank up to squaddie
- if (idx == 0)
- {
- NewUnitState.RankUpSoldier(NewGameState, 'MTFChief');
- NewUnitState.ApplySquaddieLoadout(NewGameState);
- NewUnitState.bNeedsNewClassPopup = false;
- }
- else
- {
- NewUnitState.RankUpSoldier(NewGameState, 'MTFChief');
- }
- }
- // Set an appropriate fame score for the unit
- NewUnitState.StartingFame = XComHQ.AverageSoldierFame;
- NewUnitState.bIsFamous = true;
- `XEVENTMGR.TriggerEvent('RewardUnitGenerated', NewUnitState, NewUnitState); //issue #185 - fires off event with unit after they've been promoted to their reward rank
- }
- else
- {
- NewUnitState.SetSkillLevel(GetPersonnelRewardRank(false));
- }
- return NewUnitState;
- }```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement