public Potion(int IDno, int goldVal, string myName, Potion p) : base(IDno, goldVal, myName) { my_type = p.get_type(); is_empty = p.is_potion_empty(); quantity = p.get_my_quantity(); potency = p.potion_potency(); }
public void draw_my_zone_backgrounds(ref SpriteBatch sBatch) { sBatch.Draw(my_blank_texture, cancel_zone, my_d_grey_color); sBatch.Draw(my_blank_texture, ingest_zone, my_d_grey_color); if (p.get_type() == Potion.Potion_Type.Repair) { Color OA_tab_color = my_d_grey_color; if (repair_over_armor) { OA_tab_color = my_grey_color; } Color UA_tab_color = my_d_grey_color; if (!repair_over_armor) { UA_tab_color = my_grey_color; } sBatch.Draw(my_blank_texture, over_armor_tab, OA_tab_color); sBatch.Draw(my_blank_texture, under_armor_tab, UA_tab_color); } }
public List <Item> retrieve_random_consumables(Player pl, int number) { PotionDC[] raw_potion_data = cManager.Load <PotionDC[]>("XmlData/Items/potions"); List <PotionDC> selected_potion_data = new List <PotionDC>(); List <Item> fetched_list = new List <Item>(); int tiers_available = 0; int playerGold = pl.get_my_gold(); if (playerGold < 1500) { tiers_available = 1; } else { tiers_available = 2; } string pl_chclass = pl.my_class_as_string(); for (int i = 0; i < raw_potion_data.Count(); i++) { string[] available_for = raw_potion_data[i].ValidClasses.Split(' '); bool valid_class = false; for (int cl = 0; cl < available_for.Count(); cl++) { if (String.Compare(pl_chclass, available_for[cl]) == 0) { valid_class = true; } } if (valid_class && (raw_potion_data[i].ItemTier == tiers_available || raw_potion_data[i].ItemTier == tiers_available - 1) && (raw_potion_data[i].Cost <= playerGold || raw_potion_data[i].Cost == 500)) { selected_potion_data.Add(raw_potion_data[i]); } } while ((fetched_list.Count) < number && selected_potion_data.Count > 0) { int selected_p_index = rGen.Next(selected_potion_data.Count); bool duplicate_type = false; //Check to see if it's a duplicate type first. for (int j = 0; j < fetched_list.Count; j++) { if (fetched_list[j] is Potion) { Potion p = (Potion)fetched_list[j]; string rpdType = selected_potion_data[selected_p_index].PotionType; switch (p.get_type()) { case Potion.Potion_Type.Health: duplicate_type = String.Compare(rpdType, "Health") == 0; break; case Potion.Potion_Type.Repair: duplicate_type = String.Compare(rpdType, "Repair") == 0; break; } } } //If it is not a duplicate type, add the potion intialized from the data //to fectched item list. //regardless, the potion is removed from selected raw data. if (!duplicate_type) { fetched_list.Add(process_pDC(selected_potion_data[selected_p_index])); } selected_potion_data.RemoveAt(selected_p_index); } //Raw potion data 0 should be minor Health Potion. it's the first one //in the list. This guarantees that if no other health potion is present you //At least get a minor one. Toss the player a bone. bool health_potion_present = false; for (int i = 0; i < fetched_list.Count; i++) { if (fetched_list[i] is Potion) { Potion p = (Potion)fetched_list[i]; if (p.get_type() == Potion.Potion_Type.Health) { health_potion_present = true; } } } if (!health_potion_present) { int MPID = raw_potion_data[0].IDNumber; int MPC = raw_potion_data[0].Cost; string MPN = raw_potion_data[0].Name; int MPP = raw_potion_data[0].PotionPotency; fetched_list.Add(new Potion(MPID, MPC, MPN, Potion.Potion_Type.Health, MPP)); } bool bonus_quan = false; while (!bonus_quan) { int item_index = rGen.Next(fetched_list.Count); if (fetched_list[item_index] is Potion) { Potion p = (Potion)fetched_list[item_index]; p.adjust_quantity(1); bonus_quan = true; } } return(fetched_list); }