public Value allValues() { if (this.allValues != null) return this.allValues; ArrayList<Value> list = new ArrayList<Value>(); switch (this.type) { case DataTypes.TYPE_BOOLEAN: this.addValues(list, DataTypes.BOOLEANS); break; case DataTypes.TYPE_ITEM: int limit = ItemDatabase.maxItemId(); for (int i = 1; i <= limit; ++i) { if (i != 13 && ItemDatabase.getItemDataName(i) != null) { list.add(DataTypes.makeItemValue(i)); } } break; case DataTypes.TYPE_LOCATION: this.addValues(list, AdventureDatabase.getAsLockableListModel()); break; case DataTypes.TYPE_CLASS: this.addValues(list, DataTypes.CLASSES); break; case DataTypes.TYPE_STAT: this.addValues(list, DataTypes.STATS, 0, 3); break; case DataTypes.TYPE_SKILL: this.addValues(list, SkillDatabase.entrySet()); break; case DataTypes.TYPE_EFFECT: this.addValues(list, EffectDatabase.entrySet()); break; case DataTypes.TYPE_FAMILIAR: this.addValues(list, FamiliarDatabase.entrySet()); break; case DataTypes.TYPE_SLOT: this.addValues(list, EquipmentRequest.slotNames); break; case DataTypes.TYPE_MONSTER: this.addValues(list, MonsterDatabase.entrySet()); break; case DataTypes.TYPE_ELEMENT: this.addValues(list, MonsterDatabase.elementNames, 1, -1); break; case DataTypes.TYPE_COINMASTER: this.addValues(list, CoinmasterRegistry.MASTERS); break; case DataTypes.TYPE_PHYLUM: this.addValues(list, MonsterDatabase.phylumNames, 1, -1); break; default: return null; } this.allValues = new PluralValue(this, list); return this.allValues; }