/// <summary> /// create a pack, and some number of things it contains /// </summary> /// <returns></returns> private static DmItemContainer CreateContainer() { DmItemContainer item = null; // pick type of container int choices = Enum.GetValues( typeof( DmItemTypeContainer ) ).Length; DmItemTypeContainer choice = (DmItemTypeContainer)rand.Next( choices ); // create the item of that type item = new DmItemContainer( choice ); // based on the type of container, pick a number of items it contains int numItems = 0; switch( choice ) { case DmItemTypeContainer.ScrollCase: numItems = rand.Next(3)+1; for( int i=0; i<numItems; i++ ) { DmItemEquipment tmpItem = new DmItemEquipment( DmItemTypeEquipment.Parchment ); if( rand.Next( 100 ) > 50 ) { tmpItem.Quality = DmItemQuality.Masterwork; tmpItem.Enchantment = PickEnchantmentConsumable(); } item.Contents.Add( tmpItem ); } break; case DmItemTypeContainer.SmallSack: numItems = rand.Next( 2, 4 ); item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Money ) ); item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Food ) ); for( int i=0; i<numItems; i++ ) item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Equipment ) ); break; case DmItemTypeContainer.LargeSack: numItems = rand.Next( 3, 7 ); item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Money ) ); item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Food ) ); for( int i=0; i<numItems; i++ ) item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Equipment ) ); break; case DmItemTypeContainer.Backpack: numItems = rand.Next( 6, 8 ); item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Money ) ); item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Food ) ); for( int i=0; i<numItems; i++ ) item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Equipment ) ); break; case DmItemTypeContainer.BasketWicker: numItems = rand.Next( 2, 4 ); for( int i=0; i<numItems; i++ ) item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Food ) ); break; case DmItemTypeContainer.BucketWooden: numItems = rand.Next( 2, 4 ); for( int i=0; i<numItems; i++ ) item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Food ) ); break; case DmItemTypeContainer.Chest: numItems = rand.Next( 10, 20 ); item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Money ) ); item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Food ) ); for( int i=0; i<numItems; i++ ) item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Equipment ) ); break; case DmItemTypeContainer.Barrel: numItems = rand.Next( 3, 8 ); for( int i=0; i<numItems; i++ ) item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Equipment ) ); break; default: // BeltPouch contents by default // only money item.Contents.Add( DmItemFactory.CreateItem( DmItemType.Money ) ); break; } return item; }
/// <summary> /// Create a random equipment item (bedrool, tent, rope, etc). /// </summary> /// <returns></returns> private static DmItemEquipment CreateEquipment() { DmItemEquipment item = null; item = new DmItemEquipment( (DmItemTypeEquipment)(rand.Next( Enum.GetValues( typeof( DmItemTypeEquipment ) ).Length )) ); // can this chuck of gear be enchanted? If so, set about a per-item-type random enchant. switch( item.Type ) { case DmItemTypeEquipment.Parchment: if( rand.Next( 100 ) >= 95 ) { item.Quality = DmItemQuality.Masterwork; item.Enchantment = PickEnchantmentConsumable(); } break; } return item; }