Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languageactionscript3
titleHelmetsModCustomizationContent.uc
linenumberstrue
class HelmetsModCustomizationContent extends AOCCustomizationContent;
static function int GetDefaultCharacterIDFor(int Team, int PawnClass)
{
	LogAlwaysInternal("GetDefaultCharacterIDFor"@Team@PawnClass);
	switch(PawnClass)
	{
	case ECLASS_Archer:
		return Team == EFAC_Agatha ? default.Characters.Find(class'HelmetsModCharacterInfo_Agatha_Archer') : default.Characters.Find(class'HelmetsModCharacterInfo_Mason_Archer');
		break;
	case ECLASS_ManAtArms:
		return Team == EFAC_Agatha ? default.Characters.Find(class'HelmetsModCharacterInfo_Agatha_ManAtArms') : default.Characters.Find(class'HelmetsModCharacterInfo_Mason_ManAtArms');
		break;
	case ECLASS_Vanguard:
		return Team == EFAC_Agatha ? default.Characters.Find(class'HelmetsModCharacterInfo_Agatha_Vanguard') : default.Characters.Find(class'HelmetsModCharacterInfo_Mason_Vanguard');
		break;
	case ECLASS_Knight:
		return Team == EFAC_Agatha ? default.Characters.Find(class'HelmetsModCharacterInfo_Agatha_Knight') : default.Characters.Find(class'HelmetsModCharacterInfo_Mason_Knight');
		break;
	case ECLASS_King:
		return Team == EFAC_Agatha ? default.Characters.Find(class'HelmetsModCharacterInfo_Agatha_King') : default.Characters.Find(class'HelmetsModCharacterInfo_Mason_King');
		break;
	case ECLASS_Peasant:
	default:
		return default.Characters.Find(class'AOCCharacterInfo_Peasant');
	};
}

GetDefaultCharacterIDFor is the function that lets AOCCustomization know which AOCCharacterInfo to associate with what Team/Class, assuming the player hasn't manually chosen a different Character in the Customization screen. Here I've just changed it to point to our new characters. Pretty straightforward, eh? Now for the defaultproperties block, which actually contains the character and team lists.

...

That variable up at the top isn't used anywhere, so why did I add it? If you look back at all the other code, we don't have any direct references to class'HelmetsModCustomizationContent' anywhere other than the GameInfo. We have strings that contain the class's name, but that's it. When the game is running on a client the GameInfo doesn't exist, so as far as the game can tell, it doesn't need to bother loadingĀ class'HelmetsModCustomizationContent', and it won't. You could get around this with a DynamicLoadObject, but this dummy variable works just as well and doesn't require that I figure out where the heck to put a DLO so that it actually works.

...