Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class X2EventListener_Babes extends X2EventListener;
- var localized string Babe1_FirstName;
- var localized string Babe1_LastName;
- var localized string Babe1_NickName;
- var localized string Babe1_Background;
- var localized string Babe2_FirstName;
- var localized string Babe2_LastName;
- var localized string Babe2_NickName;
- var localized string Babe2_Background;
- static function array<X2DataTemplate> CreateTemplates()
- {
- local array<X2DataTemplate> Templates;
- Templates.AddItem(CreateTacticalListeners());
- return Templates;
- }
- static function CHEventListenerTemplate CreateTacticalListeners()
- {
- local CHEventListenerTemplate Template;
- `CREATE_X2TEMPLATE(class'CHEventListenerTemplate', Template, 'DukeBabeAppearanceChanger');
- Template.AddCHEvent('OnTacticalBeginPlay', ChangeBabeAppearance); //defaults to ELD Submitted
- Template.RegisterInTactical = true;
- return Template;
- }
- static protected function EventListenerReturn ChangeBabeAppearance(Object EventData, Object EventSource, XComGameState GameState, Name EventID, Object CallbackData)
- {
- local XComTacticalMissionManager MissionManager;
- local XComGameState_Unit UnitState;
- local XComGameState_AIGroup GroupState;
- local XComGameStateHistory History;
- local XComGameState NewGameState;
- local bool ChangedSomething;
- local int i;
- MissionManager = `TACTICALMISSIONMGR;
- if (MissionManager.ActiveMission.sType == "DukeMission")
- {
- `LOG("Iridar UI Screen listener is triggered!",, 'IRIDAR');
- History = `XCOMHISTORY;
- NewGameState = class'XComGameStateContext_ChangeContainer'.static.CreateChangeState("Changing Babes Appearance");
- ChangedSomething = false;
- foreach History.IterateByClassType(class'XComGameState_AIGroup', GroupState)
- {
- if (GroupState.EncounterID == 'ResistanceTeamMember_VIP')
- {
- if(GroupState.PrePlacedEncounterTag == 'ResistanceTeamMember_01')
- {
- for (i = 0; i < GroupState.m_arrMembers.Length; ++i)
- {
- //UnitState = XComGameState_Unit(History.GetGameStateForObjectID(GroupState.m_arrMembers[i].ObjectID));
- UnitState = XComGameState_Unit(NewGameState.ModifyStateObject(class'XComGameState_Unit', GroupState.m_arrMembers[i].ObjectID));
- if (UnitState != none)
- {
- `LOG("Found babe #1: " @ UnitState.GetFullName(),, 'IRIDARBABE');
- SetUp_BabeAppearance(UnitState, 1, NewGameState);
- ChangedSomething = true;
- }
- }
- }
- if (GroupState.PrePlacedEncounterTag == 'ResistanceTeamMember_02')
- {
- for (i = 0; i < GroupState.m_arrMembers.Length; ++i)
- {
- //UnitState = XComGameState_Unit(History.GetGameStateForObjectID(GroupState.m_arrMembers[i].ObjectID));
- UnitState = XComGameState_Unit(NewGameState.ModifyStateObject(class'XComGameState_Unit', GroupState.m_arrMembers[i].ObjectID));
- if (UnitState != none)
- {
- `LOG("Found babe #1: " @ UnitState.GetFullName(),, 'IRIDARBABE');
- SetUp_BabeAppearance(UnitState, 2, NewGameState);
- ChangedSomething = true;
- }
- }
- }
- }
- }
- if (ChangedSomething)
- {
- `LOG("Babe Appearance configured, submitting New Game State",, 'IRIDAR');
- //`CONTENT.RequestGameArchetype("FemaleVoice10_English.Voice_FemaleVoice10_English",,, true);
- `XCOMGAME.GameRuleset.SubmitGameState(NewGameState);
- History.AddGameStateToHistory(NewGameState);
- //`PRES.m_kUnitFlagManager.Update();
- //`PRES.m_kUnitFlagManager.ForceRefreshAllUnitFlags();
- //`GAMERULES.SubmitGameState(NewGameState);
- }
- }
- return ELR_NoInterrupt;
- }
- static function SetUp_BabeAppearance(XComGameState_Unit UnitState, int iTwin, optional XComGameState GameState)
- {
- local XComUnitPawn UnitPawn;
- local XGUnit Unit;
- local XComGameState_Item WeaponState;
- if (UnitState == none) `LOG("Babe UnitState is none, wtf",, 'IRIDAR');
- UnitState.kAppearance.nmPawn = 'XCom_Soldier_F';
- UnitState.kAppearance.iGender = eGender_Female; //2;
- UnitState.kAppearance.iRace = 0;
- UnitState.kAppearance.nmHead = 'CaucFem_E';
- UnitState.kAppearance.iSkinColor = 0;
- UnitState.kAppearance.iEyeColor = 3; // blue
- UnitState.kAppearance.iHairColor = 7; // blonde
- UnitState.kAppearance.iAttitude = 4; // happy go lucky
- UnitState.kAppearance.nmArms = '';
- UnitState.kAppearance.nmBeard = '';
- UnitState.kAppearance.nmArms_Underlay = 'CnvUnderlay_Std_Arms_A_M';
- UnitState.kAppearance.nmLeftArmDeco = '';
- UnitState.kAppearance.nmRightArmDeco = '';
- UnitState.kAppearance.nmEye = 'DefaultEyes';
- UnitState.kAppearance.nmFacePropUpper = 'Earring_F';
- UnitState.kAppearance.nmPatterns = 'Pat_Nothing';
- UnitState.kAppearance.nmHelmet = '';
- UnitState.kAppearance.nmLeftForearm = '';
- UnitState.kAppearance.nmRightForearm = '';
- UnitState.kAppearance.nmThighs = '';
- UnitState.kAppearance.nmShins = '';
- UnitState.kAppearance.nmTattoo_LeftArm = 'Tattoo_Arms_BLANK';
- UnitState.kAppearance.nmTattoo_RightArm = 'Tattoo_Arms_BLANK';
- UnitState.kAppearance.nmTeeth = 'DefaultTeeth';
- UnitState.kAppearance.iWeaponTint = 5;
- UnitState.kAppearance.nmWeaponPattern = 'Pat_Nothing';
- UnitState.kAppearance.nmVoice = 'FemaleVoice10_English_US';
- UnitState.kAppearance.nmLegs = 'DLC_30_Legs_E_F'; // "hot pants" - just shorts
- UnitState.kAppearance.nmLegs_Underlay = 'DLC_30_Legs_E_F';
- // eyeliner + soft red chopstick
- if (DLCLoaded('KetarosMakeupsPackage'))
- {
- `LOG("KetarosMakeupsPackage is loaded",, 'IRIDARBABE');
- UnitState.kAppearance.nmFacePaint = 'Makeup02';
- }
- // Hairstyle
- if (DLCLoaded('WOTC_Hair_Pack'))
- {
- `LOG("'WOTC_Hair_Pack is loaded",, 'IRIDARBABE');
- UnitState.kAppearance.nmHaircut = 'DW_Sun_Bob'; // Dynasty Warrior Sun
- }
- else
- {
- UnitState.kAppearance.nmHaircut = 'FemHair_M'; // Bob haircut
- }
- // clothes
- if (DLCLoaded('WOTC_Female_Clothing_Pack'))
- {
- `LOG("WOTC_Female_Clothing_Pack is loaded",, 'IRIDARBABE');
- UnitState.kAppearance.nmTorso = 'CNV_knot_F'; // Torso Knot Shirt
- UnitState.kAppearance.nmTorso_Underlay = 'CNV_knot_F';
- UnitState.kAppearance.nmTorsoDeco = 'Rebel_Vest';
- UnitState.kAppearance.nmFacePropLower = 'Necklace_01';
- UnitState.kAppearance.nmLeftArm = 'CNV_Arm_L_Thin';
- UnitState.kAppearance.nmRightArm = 'CNV_Arm_R_Thin';
- if (iTwin == 1)
- {
- UnitState.kAppearance.iArmorTint = 36; // blue
- UnitState.kAppearance.iArmorTintSecondary = 96; // white
- }
- if (iTwin == 2)
- {
- UnitState.kAppearance.iArmorTint = 7; // red
- UnitState.kAppearance.iArmorTintSecondary = 96; // white
- }
- if (!DLCLoaded('DLC_1')) // if no anarchy children DLC, which means no skimpy shorts
- {
- `LOG("DLC_1 is not loaded",, 'IRIDARBABE');
- UnitState.kAppearance.nmLegs = 'Jeans_Ripped_Cnv'; // skimpy jeans + boots
- UnitState.kAppearance.nmLegs_Underlay = 'Jeans_Ripped_Cnv';
- UnitState.kAppearance.nmShins = 'Low_Boots';
- }
- }
- else
- {
- `LOG("WOTC_Female_Clothing_Pack is not loaded",, 'IRIDARBABE');
- UnitState.kAppearance.nmLeftArm = 'DLC_30_Arms_Left_Bare_F';
- UnitState.kAppearance.nmRightArm = 'DLC_30_Arms_Right_Bare_F';
- UnitState.kAppearance.nmTorso = 'DLC_30_Torso_F'; // bare torso (bra only)
- UnitState.kAppearance.nmTorso_Underlay = 'DLC_30_Torso_F';
- UnitState.kAppearance.nmTorsoDeco = '';
- UnitState.kAppearance.nmFacePropLower = '';
- if (iTwin == 1)
- {
- UnitState.kAppearance.iArmorTint = 69; // white
- UnitState.kAppearance.iArmorTintSecondary = 49; // blue-grey
- }
- if (iTwin == 2)
- {
- UnitState.kAppearance.iArmorTint = 69; // white
- UnitState.kAppearance.iArmorTintSecondary = 81; // dark red
- }
- }
- if (iTwin == 1)
- {
- UnitState.SetCharacterName(default.Babe1_FirstName, default.Babe1_LastName, default.Babe1_NickName);
- UnitState.SetCountry('Country_USA');
- UnitState.SetBackground(default.Babe1_Background);
- }
- if (iTwin == 2)
- {
- UnitState.SetCharacterName(default.Babe2_FirstName, default.Babe2_LastName, default.Babe2_NickName);
- UnitState.SetCountry('Country_USA');
- UnitState.SetBackground(default.Babe2_Background);
- }
- // refreshes the pawn so that new appearance takes effect
- // thanks to Mr. Nice and robojumper and xymanek for this!
- Unit = XGUnit(`XCOMHISTORY.GetVisualizer(UnitState.ObjectID));
- UnitPawn = Unit.GetPawn();
- if (UnitPawn != None && Unit != none && GameState != none) // if there's a game state passed, it means we're patching babe appearance right during the mission
- { // so we need to re-Init their pawn and weapon.
- //`LOG ("Refreshing unit pawn for: " @ UnitState.GetFullName(),, 'IRIDAR');
- Unit.Uninit();
- UnitPawn.SetAppearance(UnitState.kAppearance);
- Unit.Init(Unit.GetPlayer(), Unit.GetSquad(), UnitState);
- WeaponState = UnitState.GetItemInSlot(eInvSlot_PrimaryWeapon);
- XGWeapon(WeaponState.FindOrCreateVisualizer(GameState)).Init(WeaponState);
- }
- UnitState.StoreAppearance();
- }
- static function bool DLCLoaded(name DLCName)
- {
- local XComOnlineEventMgr EventManager;
- local int Index;
- EventManager = `ONLINEEVENTMGR;
- for(Index = EventManager.GetNumDLC() - 1; Index >= 0; Index--)
- {
- if(EventManager.GetDLCNames(Index) == DLCName)
- {
- return true;
- }
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement