-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Issues with Skinpools and Challenge Rewards
It turns out there's some strange interactions which go on between the stock Borderlands 2 Challenge Rewards (where, for instance, you are awarded a skin for killing N enemies with an Assault Rifle, etc), and the UCP "Skinpool Fixes" section which reassigns skin and head pools for use by mods. This page attempts to detail the situation for anyone who might be curious what happens.
Basically, Borderlands has a "Rewards" pool for each flavor of skin/head, which contains a BalancedItems
section, one for each character. For instance, here is a very abbreviated version of the BalancedItems
array for GD_CustomItemPools_MainGame.Rewards.RedBoldAccent
:
BalancedItems(0)=(
ItmPoolDefinition=ItemPoolDefinition'GD_CustomItemPools_MainGame.Assassin.RedBoldAccent',
InvBalanceDefinition=None,
)
BalancedItems(1)=(
ItmPoolDefinition=ItemPoolDefinition'GD_CustomItemPools_MainGame.Mercenary.RedBoldAccent',
InvBalanceDefinition=None,
)
BalancedItems(2)=(
ItmPoolDefinition=ItemPoolDefinition'GD_CustomItemPools_MainGame.Siren.RedBoldAccent',
InvBalanceDefinition=None,
)
BalancedItems(3)=(
ItmPoolDefinition=ItemPoolDefinition'GD_CustomItemPools_MainGame.Soldier.RedBoldAccent',
InvBalanceDefinition=None,
)
BalancedItems(4)=(
ItmPoolDefinition=ItemPoolDefinition'GD_CustomItemPools_Lilac.Psycho.RedBoldAccent',
InvBalanceDefinition=None,
)
BalancedItems(5)=(
ItmPoolDefinition=ItemPoolDefinition'GD_CustomItemPools_tulip.Mechro.RedBoldAccent',
InvBalanceDefinition=None,
)
Each of those sub-pools that it calls out to have a BalancedItems
array itself, but with just a single item in it, which uses InvBalanceDefinition
instead of ItmPoolDefinition
. For instance, GD_CustomItemPools_MainGame.Assassin.RedBoldAccent
looks like this:
BalancedItems(0)=(
ItmPoolDefinition=None,
InvBalanceDefinition=InventoryBalanceDefinition'GD_Assassin_Items_MainGame.BalanceDefs.Assassin_Skin_RedB',
)
So what UCP does in this "Skinpool Fixes" section, is to cut out the middleman and move the InvBalanceDefinition
s up into the main Rewards
pool. Nothing ever calls those middle pools directly, so they become freed up for any mod to make use of. The main Rewards pool above, for instance, ends up looking like this after all the hotfixes:
BalancedItems(0)=(
ItmPoolDefinition=None,
InvBalanceDefinition=InventoryBalanceDefinition'GD_Assassin_Items_MainGame.BalanceDefs.Assassin_Skin_RedB',
)
BalancedItems(1)=(
ItmPoolDefinition=None,
InvBalanceDefinition=InventoryBalanceDefinition'GD_Assassin_Items_MainGame.BalanceDefs.Mercenary_Skin_RedB',
)
BalancedItems(2)=(
ItmPoolDefinition=None,
InvBalanceDefinition=InventoryBalanceDefinition'GD_Assassin_Items_MainGame.BalanceDefs.Siren_Skin_RedB',
)
BalancedItems(3)=(
ItmPoolDefinition=None,
InvBalanceDefinition=InventoryBalanceDefinition'GD_Assassin_Items_MainGame.BalanceDefs.Soldier_Skin_RedB',
)
BalancedItems(4)=(
ItmPoolDefinition=None,
InvBalanceDefinition=InventoryBalanceDefinition'GD_Psycho_Items_Lilac.BalanceDefs.Psycho_Skin_RedB',
)
BalancedItems(5)=(
ItmPoolDefinition=None,
InvBalanceDefinition=InventoryBalanceDefinition'GD_Mechro_Items_Tulip.BalanceDefs.Mechro_Skin_RedB',
)
So all six of those original pools, from GD_CustomItemPools_MainGame.Assassin.RedBoldAccent
to GD_CustomItemPools_tulip.Mechro.RedBoldAccent
, are now free for use. There's even a registry page here at the wiki where mod authors can claim skinpools for use in their mods: Custom Skin and Head Pool Registry
In general, using those freed skinpools works great, and many folks might never notice any problems. But it turns out that there's an unwanted side effect relating to how Borderlands hands out challenge rewards. It turns out to be related to the Probability
sections inside the main Rewards pools. I abbreviated the dump up at the top, but the full dump for one of the items in the Rewards pool looks like this:
BalancedItems(0)=(
ItmPoolDefinition=ItemPoolDefinition'GD_CustomItemPools_MainGame.Assassin.RedBoldAccent',
InvBalanceDefinition=None,
Probability=(
BaseValueConstant=1.000000,
BaseValueAttribute=None,
InitializationDefinition=AttributeInitializationDefinition'Transient.AttributeInitializationDefinition_10',
BaseValueScaleConstant=1.000000
),
bDropOnDeath=True
)
The problem happens because of that InitializationDefinition
attribute. This is something which Borderlands dynamically assigns to the skinpools. You can try changing the ID on these pools all you want, but the game will always silently overwrite your efforts with a new Transient ID. If you dig into those objects a bit with obj dump
on the console, you'll eventually find that they reference the character class that they're associated with. For instance, if you dig into that one, you'll find this:
*** Property dump for object 'PlayerClassAttributeValueResolver Transient.AttributeInitializationDefinition_10:AttributeDefinition_21.PlayerClassAttributeValueResolver_10' ***
=== PlayerClassAttributeValueResolver properties ===
PlayerClassId=PlayerClassIdentifierDefinition'GD_PlayerClassId.Assassin'
When giving out rewards for challenges, these Transient values end up resolving to 1
if they match the class you're currently playing, or 0
otherwise. The upshot being that when you complete a challenge to the required level, and the challenge rewards you from the Rewards pool, the only item which can drop is the one which matches your character. Nifty!
Well, not so nifty, because it turns out that actually using one of our freed skinpools ends up screwing up all these Transient attributes. Sometimes, the wrong Transient IDs end up getting assigned to the wrong characters' skinpools. So for instance if you're a Siren you might end up with a Gunzerker skin. In other cases, there might end up being no skin which can drop for your given class. Very frequently, this automatic Transient magic will even end up lopping off the very last entry in the Reward pool, which means that Mechromancers won't get any rewards at all!
The UCP 4.0 section Add Captain Blades Midnight Star and Manly Man Shield to H3RL-E
makes use of the skinpool GD_CustomItemPools_MainGame.Assassin.OrangeBoldAccent
, which happens to have originally been part of the challenge reward for killing enemies with grenades. As with all Rewards pools, the order of characters inside its BalancedItems
pool originally looks like this:
- Assassin
- Mercenary
- Siren
- Soldier
- Psycho
- Mechromancer
Once UCP adds some things to the Assassin.OrangeBoldAccent
pool, however, the Reward pool ends up looking like this:
- Assassin (but will drop if you're a Mercenary)
- Mercenary (but will drop if you're a Siren)
- Siren (but will drop if you're a Soldier)
- Soldier (but will drop if you're a Psycho)
- Psycho (but will drop if you're a Mechromancer)
Note the absence of a Mechromancer skin in there! It got totally lopped off. And all the other skins end up "offset" by one, so you don't actually get the skin which you should be getting.
Unfortunately, not much, apart from try not to use the skinpools involved in Challenge rewards. Since Challenge rewards seem to be the only thing actually affected by this, it may not be a super huge deal, but it's probably worth avoiding if possible.
Here are the master "Reward" pools affected by this, and the challenges they're associated with:
Pool | Name | Level | Description |
---|---|---|---|
GD_CustomItemPools_MainGame.Rewards.BanditEpic |
Knee-Deep in Brass | 5 | Fire a lot of rounds. |
GD_CustomItemPools_MainGame.Rewards.BanditUncommon |
Marauder? I Hardly Know 'Er! | 3 | Kill marauders. |
GD_CustomItemPools_MainGame.Rewards.BlueBold |
Open Pandora's Boxes | 3 | Open lootable crates, lockers, and other objects. |
GD_CustomItemPools_MainGame.Rewards.BlueBoldAccent |
Longshot | 3 | Kill enemies with sniper rifles. |
GD_CustomItemPools_MainGame.Rewards.BluePale |
Fisticuffs! | 3 | Kill enemies with melee attacks. |
GD_CustomItemPools_MainGame.Rewards.BluePattern |
This Is No Time for Lazy! | 5 | Revive a co-op partner. |
GD_CustomItemPools_MainGame.Rewards.CyanBold |
Aggravated Assault | 3 | Kill enemies with assault rifles. |
GD_CustomItemPools_MainGame.Rewards.DahlEpic |
Crouching Tiger, Hidden Assault Rifle | 5 | Kill enemies with assault rifles while crouched. |
GD_CustomItemPools_MainGame.Rewards.Gray |
Not Full of Monkeys | 3 | Kill enemies with stationary barrels. |
GD_CustomItemPools_MainGame.Rewards.GreenBold |
It's Not Easy Looting Green | 3 | Loot or purchase green-rarity items. |
GD_CustomItemPools_MainGame.Rewards.GreenBoldAccent |
Whaddaya Buyin'? | 3 | Purchase items with Eridium. |
GD_CustomItemPools_MainGame.Rewards.GreenPale |
Super Novas | 3 | Kill enemies with a Nova shield burst. |
GD_CustomItemPools_MainGame.Rewards.Head1 |
...To Pay the Bills | 5 | Kill enemies while using your Action Skill. |
GD_CustomItemPools_MainGame.Rewards.HyperionEpic |
Eviscerated | 5 | Kill shielded enemies with one shot using sniper rifles. |
GD_CustomItemPools_MainGame.Rewards.HyperionUncommon |
Load and Lock | 3 | Kill loaders. |
GD_CustomItemPools_MainGame.Rewards.JakobsEpic |
Quickdraw | 5 | Kill enemies shortly after aiming down the sights with a pistol. |
GD_CustomItemPools_MainGame.Rewards.MaliwanEpic |
I Just Want to Set the World on Fire | 5 | Deal damage with incendiary DoT (damage-over-time) effects. |
GD_CustomItemPools_MainGame.Rewards.MaliwanUncommon |
Slag-Licked | 3 | Deal bonus damage to slagged enemies. |
GD_CustomItemPools_MainGame.Rewards.OrangeBold |
The Killer | 3 | Kill enemies with pistols. |
GD_CustomItemPools_MainGame.Rewards.OrangeBoldAccent |
Pull the Pin | 3 | Kill enemies with grenades. |
GD_CustomItemPools_MainGame.Rewards.OrangePale |
For the Hoard! | 3 | Save a lot of money. |
GD_CustomItemPools_MainGame.Rewards.PinkPandoracorn |
Nothing Rhymes with Orange | 5 | Loot or purchase legendary items. |
GD_CustomItemPools_MainGame.Rewards.PurpleBold |
Badass Bingo | 5 | Get Second Winds by killing badass enemies. |
GD_CustomItemPools_MainGame.Rewards.RedBold |
Rocket and Roll | 3 | Kill enemies with rocket launchers. |
GD_CustomItemPools_MainGame.Rewards.RedBoldAccent |
Hail of Bullets | 3 | Kill enemies with SMGs. |
GD_CustomItemPools_MainGame.Rewards.RedPale |
EXPLOOOOOSIONS! | 3 | Kill enemies with MIRV grenades. |
GD_CustomItemPools_MainGame.Rewards.TedioreEpic |
Boomerbang | 5 | Kill enemies with Tediore reloads. |
GD_CustomItemPools_MainGame.Rewards.TorgueEpic |
Catch-a-Rocket! | 5 | Kill enemies with direct hits from rocket launchers. |
GD_CustomItemPools_MainGame.Rewards.TorgueUncommon |
Boom. | 3 | Kill enemies with explosive damage. |
GD_CustomItemPools_MainGame.Rewards.VladofEpic |
Ammo Eater | 5 | Absorb enemy ammo with an Absorption shield. |
GD_CustomItemPools_MainGame.Rewards.YellowBold |
Shotgun! | 3 | Kill enemies with shotguns. |
GD_CustomItemPools_MainGame.Rewards.YellowPale |
Blue Sparks | 3 | Kill enemies by power-sliding over them in a vehicle. |
Or at least, you should avoid these if you're concerned about the possibility of interfering with challenge reward drops. As I said above, that seems to be the only side effect (that we're aware of, anyway) with using these skinpools.
- GD_CustomItemPools_Lilac.Psycho.BanditEpic
- GD_CustomItemPools_Lilac.Psycho.BanditUncommon
- GD_CustomItemPools_Lilac.Psycho.BlueBold
- GD_CustomItemPools_Lilac.Psycho.BlueBoldAccent
- GD_CustomItemPools_Lilac.Psycho.BluePale
- GD_CustomItemPools_Lilac.Psycho.BluePattern
- GD_CustomItemPools_Lilac.Psycho.CyanBold
- GD_CustomItemPools_Lilac.Psycho.DahlEpic
- GD_CustomItemPools_Lilac.Psycho.Gray
- GD_CustomItemPools_Lilac.Psycho.GreenBold
- GD_CustomItemPools_Lilac.Psycho.GreenBoldAccent
- GD_CustomItemPools_Lilac.Psycho.GreenPale
- GD_CustomItemPools_Lilac.Psycho.Head1
- GD_CustomItemPools_Lilac.Psycho.HyperionEpic
- GD_CustomItemPools_Lilac.Psycho.HyperionUncommon
- GD_CustomItemPools_Lilac.Psycho.JakobsEpic
- GD_CustomItemPools_Lilac.Psycho.MaliwanEpic
- GD_CustomItemPools_Lilac.Psycho.MaliwanUncommon
- GD_CustomItemPools_Lilac.Psycho.OrangeBold
- GD_CustomItemPools_Lilac.Psycho.OrangeBoldAccent
- GD_CustomItemPools_Lilac.Psycho.OrangePale
- GD_CustomItemPools_Lilac.Psycho.PinkPandoracorn
- GD_CustomItemPools_Lilac.Psycho.PurpleBold
- GD_CustomItemPools_Lilac.Psycho.RedBold
- GD_CustomItemPools_Lilac.Psycho.RedBoldAccent
- GD_CustomItemPools_Lilac.Psycho.RedPale
- GD_CustomItemPools_Lilac.Psycho.TedioreEpic
- GD_CustomItemPools_Lilac.Psycho.TorgueEpic
- GD_CustomItemPools_Lilac.Psycho.TorgueUncommon
- GD_CustomItemPools_Lilac.Psycho.VladofEpic
- GD_CustomItemPools_Lilac.Psycho.YellowBold
- GD_CustomItemPools_Lilac.Psycho.YellowPale
- GD_CustomItemPools_MainGame.Assassin.BanditEpic
- GD_CustomItemPools_MainGame.Assassin.BanditUncommon
- GD_CustomItemPools_MainGame.Assassin.BlueBold
- GD_CustomItemPools_MainGame.Assassin.BlueBoldAccent
- GD_CustomItemPools_MainGame.Assassin.BluePale
- GD_CustomItemPools_MainGame.Assassin.BluePattern
- GD_CustomItemPools_MainGame.Assassin.CyanBold
- GD_CustomItemPools_MainGame.Assassin.DahlEpic
- GD_CustomItemPools_MainGame.Assassin.Gray
- GD_CustomItemPools_MainGame.Assassin.GreenBold
- GD_CustomItemPools_MainGame.Assassin.GreenBoldAccent
- GD_CustomItemPools_MainGame.Assassin.GreenPale
- GD_CustomItemPools_MainGame.Assassin.Head1
- GD_CustomItemPools_MainGame.Assassin.HyperionEpic
- GD_CustomItemPools_MainGame.Assassin.HyperionUncommon
- GD_CustomItemPools_MainGame.Assassin.JakobsEpic
- GD_CustomItemPools_MainGame.Assassin.MaliwanEpic
- GD_CustomItemPools_MainGame.Assassin.MaliwanUncommon
- GD_CustomItemPools_MainGame.Assassin.OrangeBold
- GD_CustomItemPools_MainGame.Assassin.OrangeBoldAccent
- GD_CustomItemPools_MainGame.Assassin.OrangePale
- GD_CustomItemPools_MainGame.Assassin.PinkPandoracorn
- GD_CustomItemPools_MainGame.Assassin.PurpleBold
- GD_CustomItemPools_MainGame.Assassin.RedBold
- GD_CustomItemPools_MainGame.Assassin.RedBoldAccent
- GD_CustomItemPools_MainGame.Assassin.RedPale
- GD_CustomItemPools_MainGame.Assassin.TedioreEpic
- GD_CustomItemPools_MainGame.Assassin.TorgueEpic
- GD_CustomItemPools_MainGame.Assassin.TorgueUncommon
- GD_CustomItemPools_MainGame.Assassin.VladofEpic
- GD_CustomItemPools_MainGame.Assassin.YellowBold
- GD_CustomItemPools_MainGame.Assassin.YellowPale
- GD_CustomItemPools_MainGame.Mercenary.BanditEpic
- GD_CustomItemPools_MainGame.Mercenary.BanditUncommon
- GD_CustomItemPools_MainGame.Mercenary.BlueBold
- GD_CustomItemPools_MainGame.Mercenary.BlueBoldAccent
- GD_CustomItemPools_MainGame.Mercenary.BluePale
- GD_CustomItemPools_MainGame.Mercenary.BluePattern
- GD_CustomItemPools_MainGame.Mercenary.CyanBold
- GD_CustomItemPools_MainGame.Mercenary.DahlEpic
- GD_CustomItemPools_MainGame.Mercenary.Gray
- GD_CustomItemPools_MainGame.Mercenary.GreenBold
- GD_CustomItemPools_MainGame.Mercenary.GreenBoldAccent
- GD_CustomItemPools_MainGame.Mercenary.GreenPale
- GD_CustomItemPools_MainGame.Mercenary.Head1
- GD_CustomItemPools_MainGame.Mercenary.HyperionEpic
- GD_CustomItemPools_MainGame.Mercenary.HyperionUncommon
- GD_CustomItemPools_MainGame.Mercenary.JakobsEpic
- GD_CustomItemPools_MainGame.Mercenary.MaliwanEpic
- GD_CustomItemPools_MainGame.Mercenary.MaliwanUncommon
- GD_CustomItemPools_MainGame.Mercenary.OrangeBold
- GD_CustomItemPools_MainGame.Mercenary.OrangeBoldAccent
- GD_CustomItemPools_MainGame.Mercenary.OrangePale
- GD_CustomItemPools_MainGame.Mercenary.PinkPandoracorn
- GD_CustomItemPools_MainGame.Mercenary.PurpleBold
- GD_CustomItemPools_MainGame.Mercenary.RedBold
- GD_CustomItemPools_MainGame.Mercenary.RedBoldAccent
- GD_CustomItemPools_MainGame.Mercenary.RedPale
- GD_CustomItemPools_MainGame.Mercenary.TedioreEpic
- GD_CustomItemPools_MainGame.Mercenary.TorgueEpic
- GD_CustomItemPools_MainGame.Mercenary.TorgueUncommon
- GD_CustomItemPools_MainGame.Mercenary.VladofEpic
- GD_CustomItemPools_MainGame.Mercenary.YellowBold
- GD_CustomItemPools_MainGame.Mercenary.YellowPale
- GD_CustomItemPools_MainGame.Siren.BanditEpic
- GD_CustomItemPools_MainGame.Siren.BanditUncommon
- GD_CustomItemPools_MainGame.Siren.BlueBold
- GD_CustomItemPools_MainGame.Siren.BlueBoldAccent
- GD_CustomItemPools_MainGame.Siren.BluePale
- GD_CustomItemPools_MainGame.Siren.BluePattern
- GD_CustomItemPools_MainGame.Siren.CyanBold
- GD_CustomItemPools_MainGame.Siren.DahlEpic
- GD_CustomItemPools_MainGame.Siren.Gray
- GD_CustomItemPools_MainGame.Siren.GreenBold
- GD_CustomItemPools_MainGame.Siren.GreenBoldAccent
- GD_CustomItemPools_MainGame.Siren.GreenPale
- GD_CustomItemPools_MainGame.Siren.Head1
- GD_CustomItemPools_MainGame.Siren.HyperionEpic
- GD_CustomItemPools_MainGame.Siren.HyperionUncommon
- GD_CustomItemPools_MainGame.Siren.JakobsEpic
- GD_CustomItemPools_MainGame.Siren.MaliwanEpic
- GD_CustomItemPools_MainGame.Siren.MaliwanUncommon
- GD_CustomItemPools_MainGame.Siren.OrangeBold
- GD_CustomItemPools_MainGame.Siren.OrangeBoldAccent
- GD_CustomItemPools_MainGame.Siren.OrangePale
- GD_CustomItemPools_MainGame.Siren.PinkPandoracorn
- GD_CustomItemPools_MainGame.Siren.PurpleBold
- GD_CustomItemPools_MainGame.Siren.RedBold
- GD_CustomItemPools_MainGame.Siren.RedBoldAccent
- GD_CustomItemPools_MainGame.Siren.RedPale
- GD_CustomItemPools_MainGame.Siren.TedioreEpic
- GD_CustomItemPools_MainGame.Siren.TorgueEpic
- GD_CustomItemPools_MainGame.Siren.TorgueUncommon
- GD_CustomItemPools_MainGame.Siren.VladofEpic
- GD_CustomItemPools_MainGame.Siren.YellowBold
- GD_CustomItemPools_MainGame.Siren.YellowPale
- GD_CustomItemPools_MainGame.Soldier.BanditEpic
- GD_CustomItemPools_MainGame.Soldier.BanditUncommon
- GD_CustomItemPools_MainGame.Soldier.BlueBold
- GD_CustomItemPools_MainGame.Soldier.BlueBoldAccent
- GD_CustomItemPools_MainGame.Soldier.BluePale
- GD_CustomItemPools_MainGame.Soldier.BluePattern
- GD_CustomItemPools_MainGame.Soldier.CyanBold
- GD_CustomItemPools_MainGame.Soldier.DahlEpic
- GD_CustomItemPools_MainGame.Soldier.Gray
- GD_CustomItemPools_MainGame.Soldier.GreenBold
- GD_CustomItemPools_MainGame.Soldier.GreenBoldAccent
- GD_CustomItemPools_MainGame.Soldier.GreenPale
- GD_CustomItemPools_MainGame.Soldier.Head1
- GD_CustomItemPools_MainGame.Soldier.HyperionEpic
- GD_CustomItemPools_MainGame.Soldier.HyperionUncommon
- GD_CustomItemPools_MainGame.Soldier.JakobsEpic
- GD_CustomItemPools_MainGame.Soldier.MaliwanEpic
- GD_CustomItemPools_MainGame.Soldier.MaliwanUncommon
- GD_CustomItemPools_MainGame.Soldier.OrangeBold
- GD_CustomItemPools_MainGame.Soldier.OrangeBoldAccent
- GD_CustomItemPools_MainGame.Soldier.OrangePale
- GD_CustomItemPools_MainGame.Soldier.PinkPandoracorn
- GD_CustomItemPools_MainGame.Soldier.PurpleBold
- GD_CustomItemPools_MainGame.Soldier.RedBold
- GD_CustomItemPools_MainGame.Soldier.RedBoldAccent
- GD_CustomItemPools_MainGame.Soldier.RedPale
- GD_CustomItemPools_MainGame.Soldier.TedioreEpic
- GD_CustomItemPools_MainGame.Soldier.TorgueEpic
- GD_CustomItemPools_MainGame.Soldier.TorgueUncommon
- GD_CustomItemPools_MainGame.Soldier.VladofEpic
- GD_CustomItemPools_MainGame.Soldier.YellowBold
- GD_CustomItemPools_MainGame.Soldier.YellowPale
- GD_CustomItemPools_tulip.Mechro.BanditEpic
- GD_CustomItemPools_tulip.Mechro.BanditUncommon
- GD_CustomItemPools_tulip.Mechro.BlueBold
- GD_CustomItemPools_tulip.Mechro.BlueBoldAccent
- GD_CustomItemPools_tulip.Mechro.BluePale
- GD_CustomItemPools_tulip.Mechro.BluePattern
- GD_CustomItemPools_tulip.Mechro.CyanBold
- GD_CustomItemPools_tulip.Mechro.DahlEpic
- GD_CustomItemPools_tulip.Mechro.Gray
- GD_CustomItemPools_tulip.Mechro.GreenBold
- GD_CustomItemPools_tulip.Mechro.GreenBoldAccent
- GD_CustomItemPools_tulip.Mechro.GreenPale
- GD_CustomItemPools_tulip.Mechro.Head1
- GD_CustomItemPools_tulip.Mechro.HyperionEpic
- GD_CustomItemPools_tulip.Mechro.HyperionUncommon
- GD_CustomItemPools_tulip.Mechro.JakobsEpic
- GD_CustomItemPools_tulip.Mechro.MaliwanEpic
- GD_CustomItemPools_tulip.Mechro.MaliwanUncommon
- GD_CustomItemPools_tulip.Mechro.OrangeBold
- GD_CustomItemPools_tulip.Mechro.OrangeBoldAccent
- GD_CustomItemPools_tulip.Mechro.OrangePale
- GD_CustomItemPools_tulip.Mechro.PinkPandoracorn
- GD_CustomItemPools_tulip.Mechro.PurpleBold
- GD_CustomItemPools_tulip.Mechro.RedBold
- GD_CustomItemPools_tulip.Mechro.RedBoldAccent
- GD_CustomItemPools_tulip.Mechro.RedPale
- GD_CustomItemPools_tulip.Mechro.TedioreEpic
- GD_CustomItemPools_tulip.Mechro.TorgueEpic
- GD_CustomItemPools_tulip.Mechro.TorgueUncommon
- GD_CustomItemPools_tulip.Mechro.VladofEpic
- GD_CustomItemPools_tulip.Mechro.YellowBold
- GD_CustomItemPools_tulip.Mechro.YellowPale