Advertisement
Guest User

Untitled

a guest
Feb 27th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class X2EventListener_Babes extends X2EventListener;
  2.  
  3. var localized string Babe1_FirstName;
  4. var localized string Babe1_LastName;
  5. var localized string Babe1_NickName;
  6. var localized string Babe1_Background;
  7.  
  8. var localized string Babe2_FirstName;
  9. var localized string Babe2_LastName;
  10. var localized string Babe2_NickName;
  11. var localized string Babe2_Background;
  12.  
  13. static function array<X2DataTemplate> CreateTemplates()
  14. {
  15.     local array<X2DataTemplate> Templates;
  16.  
  17.     Templates.AddItem(CreateTacticalListeners());
  18.  
  19.     return Templates;
  20. }
  21.  
  22. static function CHEventListenerTemplate CreateTacticalListeners()
  23. {
  24.     local CHEventListenerTemplate Template;
  25.  
  26.     `CREATE_X2TEMPLATE(class'CHEventListenerTemplate', Template, 'DukeBabeAppearanceChanger');
  27.     Template.AddCHEvent('OnTacticalBeginPlay', ChangeBabeAppearance);   //defaults to ELD Submitted
  28.     Template.RegisterInTactical = true;
  29.  
  30.     return Template;
  31. }
  32.  
  33. static protected function EventListenerReturn ChangeBabeAppearance(Object EventData, Object EventSource, XComGameState GameState, Name EventID, Object CallbackData)
  34. {
  35.     local XComTacticalMissionManager    MissionManager;
  36.     local XComGameState_Unit            UnitState;
  37.     local XComGameState_AIGroup         GroupState;
  38.     local XComGameStateHistory          History;
  39.     local XComGameState                 NewGameState;
  40.     local bool ChangedSomething;
  41.     local int i;
  42.  
  43.     MissionManager = `TACTICALMISSIONMGR;
  44.  
  45.     if (MissionManager.ActiveMission.sType == "DukeMission")
  46.     {
  47.         `LOG("Iridar UI Screen listener is triggered!",, 'IRIDAR');
  48.  
  49.         History = `XCOMHISTORY;
  50.         NewGameState = class'XComGameStateContext_ChangeContainer'.static.CreateChangeState("Changing Babes Appearance");
  51.         ChangedSomething = false;
  52.  
  53.         foreach History.IterateByClassType(class'XComGameState_AIGroup', GroupState)
  54.         {
  55.             if (GroupState.EncounterID == 'ResistanceTeamMember_VIP')
  56.             {
  57.                 if(GroupState.PrePlacedEncounterTag == 'ResistanceTeamMember_01')
  58.                 {
  59.                     for (i = 0; i < GroupState.m_arrMembers.Length; ++i)
  60.                     {
  61.                         //UnitState = XComGameState_Unit(History.GetGameStateForObjectID(GroupState.m_arrMembers[i].ObjectID));
  62.                         UnitState = XComGameState_Unit(NewGameState.ModifyStateObject(class'XComGameState_Unit', GroupState.m_arrMembers[i].ObjectID));
  63.                         if (UnitState != none)
  64.                         {
  65.                             `LOG("Found babe #1: " @ UnitState.GetFullName(),, 'IRIDAR');
  66.  
  67.                             SetUp_BabeAppearance(UnitState, 1);
  68.                             ChangedSomething = true;
  69.  
  70.                         }
  71.                     }
  72.                 }
  73.                
  74.                 if (GroupState.PrePlacedEncounterTag == 'ResistanceTeamMember_02')
  75.                 {
  76.                     for (i = 0; i < GroupState.m_arrMembers.Length; ++i)
  77.                     {
  78.                         //UnitState = XComGameState_Unit(History.GetGameStateForObjectID(GroupState.m_arrMembers[i].ObjectID));
  79.                         UnitState = XComGameState_Unit(NewGameState.ModifyStateObject(class'XComGameState_Unit', GroupState.m_arrMembers[i].ObjectID));
  80.                         if (UnitState != none)
  81.                         {
  82.                             `LOG("Found babe #1: " @ UnitState.GetFullName(),, 'IRIDAR');
  83.                            
  84.                             SetUp_BabeAppearance(UnitState, 2);
  85.                             ChangedSomething = true;
  86.                         }
  87.                     }
  88.                 }
  89.             }
  90.         }
  91.        
  92.         if (ChangedSomething)
  93.         {  
  94.             `LOG("Babe Appearance configured, submitting New Game State",, 'IRIDAR');
  95.             `XCOMGAME.GameRuleset.SubmitGameState(NewGameState);
  96.             //`GAMERULES.SubmitGameState(NewGameState);
  97.         }
  98.     }
  99.     return ELR_NoInterrupt;
  100. }
  101.  
  102. static function SetUp_BabeAppearance(XComGameState_Unit UnitState, int iTwin)
  103. {  
  104.     UnitState.kAppearance.iGender = 0;
  105.     UnitState.kAppearance.iRace = 0;
  106.     UnitState.kAppearance.nmHead = 'CaucFem_E';
  107.     UnitState.kAppearance.nmHaircut = 'FemHair_M'; // Bob haircut, hopefully
  108.     UnitState.kAppearance.iSkinColor = 0;
  109.     UnitState.kAppearance.iEyeColor = 3;    //  blue
  110.     UnitState.kAppearance.iArmorTint = 35//  blue
  111.     UnitState.kAppearance.iArmorTintSecondary = 96; //  white
  112.     UnitState.kAppearance.iAttitude = 4;    //  happy go lucky
  113.     UnitState.kAppearance.nmArms = '';
  114.     UnitState.kAppearance.nmBeard = '';
  115.     UnitState.kAppearance.nmArms_Underlay = 'CnvUnderlay_Std_Arms_A_M';
  116.     UnitState.kAppearance.nmLeftArmDeco = '';
  117.     UnitState.kAppearance.nmRightArmDeco = '';
  118.     UnitState.kAppearance.nmEye = 'DefaultEyes';
  119.     UnitState.kAppearance.nmFacePropLower = '';
  120.     UnitState.kAppearance.nmFacePropUpper = '';
  121.     UnitState.kAppearance.nmPatterns = 'Pat_Nothing';
  122.     UnitState.kAppearance.nmHelmet = '';
  123.     UnitState.kAppearance.nmLeftForearm = '';
  124.     UnitState.kAppearance.nmRightForearm = '';
  125.     UnitState.kAppearance.nmThighs = '';
  126.     UnitState.kAppearance.nmShins = '';
  127.     UnitState.kAppearance.nmTorsoDeco = '';
  128.     UnitState.kAppearance.nmTattoo_LeftArm = 'Tattoo_Arms_BLANK';
  129.     UnitState.kAppearance.nmTattoo_RightArm = 'Tattoo_Arms_BLANK';
  130.     UnitState.kAppearance.nmTeeth = 'DefaultTeeth';
  131.     UnitState.kAppearance.iWeaponTint = 5;
  132.     UnitState.kAppearance.nmWeaponPattern = 'Pat_Nothing';
  133.     UnitState.kAppearance.nmLeftArm = 'DLC_30_Arms_Left_Bare_F';
  134.     UnitState.kAppearance.nmRightArm = 'DLC_30_Arms_Right_Bare_F';
  135.     UnitState.kAppearance.nmLegs = 'DLC_30_Legs_E_F';   //  "hot pants" - just shorts
  136.     UnitState.kAppearance.nmLegs_Underlay = 'DLC_30_Legs_E_F';
  137.     UnitState.kAppearance.nmTorso = 'DLC_30_Torso_A_F'; //  bare torso (bra only)
  138.     UnitState.kAppearance.nmTorso_Underlay = 'DLC_30_Torso_A_F';
  139.     UnitState.kAppearance.nmVoice = 'FemaleVoice10_English_US';
  140.  
  141.     if (iTwin == 1)
  142.     {
  143.         UnitState.SetCharacterName(default.Babe1_FirstName, default.Babe1_LastName, default.Babe1_NickName);
  144.         UnitState.SetCountry('Country_USA');
  145.         UnitState.SetBackground(default.Babe1_Background);
  146.     }
  147.     if (iTwin == 2)
  148.     {
  149.         UnitState.SetCharacterName(default.Babe2_FirstName, default.Babe2_LastName, default.Babe2_NickName);
  150.         UnitState.SetCountry('Country_USA');
  151.         UnitState.SetBackground(default.Babe2_Background);
  152.     }
  153.  
  154.     RefreshPawn(UnitState);
  155.     UnitState.StoreAppearance();
  156. }
  157.  
  158. //  refreshes the pawn so that new appearance takes effect
  159. //  thanks to Mr. Nice and robojumper for this!
  160. static function RefreshPawn(XComGameState_Unit UnitState)
  161. {
  162.     local UIPawnMgr PawnMgr;
  163.     local int idx;
  164.  
  165.     PawnMgr=`PRESBASE.GetUIPawnMgr();
  166.     idx=PawnMgr.Pawns.Find('PawnRef', UnitState.ObjectID);
  167.     if (idx != INDEX_NONE) PawnMgr.Pawns[idx].Pawn.SetAppearance(UnitState.kAppearance);
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement