public virtual void Init(DropListComponentData data) { if (data.parentElement == null) { m_DropList = new ItemDropList(); } else { DropListFactory factory = new DropListFactory(); m_DropList = new ItemDropList(factory.Create(data.parentElement)); } }
private void FillForDamager(DamageInfo damager, ItemDropList dropList, ChestSourceInfo sourceInfo) { ConcurrentDictionary <string, ServerInventoryItem> newObjects = new ConcurrentDictionary <string, ServerInventoryItem>(); Workshop lootWorkshop = (Workshop)damager.workshop; //in 10% dropped source workshop items if (sourceInfo != null && sourceInfo.hasWorkshop) { if (Rand.Float01() < 0.1f) { lootWorkshop = sourceInfo.sourceWorkshop; } } DropManager dropManager = DropManager.Get(resource); int lootLevel = damager.level; if (sourceInfo != null && sourceInfo.level != 0) { log.InfoFormat("set loot level = {0} yellow", sourceInfo.level); lootLevel = sourceInfo.level; } Difficulty d = Difficulty.starter; if (sourceInfo != null) { d = sourceInfo.difficulty; } int groupCount = 1; NebulaObject playerObject = GetNebulaObject(damager); groupCount = GetGroupCount(playerObject); float remapWeight = GetColorRemapWeight(playerObject, groupCount); if (dropList == null) { //generate single weapon GenerateWeapons(dropManager, lootLevel, lootWorkshop, d, newObjects, remapWeight); GenerateSchemes(dropManager, lootLevel, lootWorkshop, d, newObjects, remapWeight); } else { GenerateFromDropList( (Race)damager.race, dropManager, lootLevel, lootWorkshop, d, newObjects, remapWeight, dropList, damager.level, groupCount); } //generate single scheme //generate creadits //CreditsObject creadits = new CreditsObject(resource.MiscItemDataRes.CreditsObject()); //creadits.SetCount(20); //newObjects.TryAdd(creadits.Id, creadits); if (content.TryAdd(damager.DamagerId, newObjects)) { if (damager.DamagerType == (byte)ItemType.Avatar) { NotifyChestDamager(damager); } } }
private void GenerateFromDropList( Race race, DropManager dropManager, int lootLevel, Workshop lootWorkshop, Difficulty difficulty, ConcurrentDictionary <string, ServerInventoryItem> newObjects, float remapWeight, ItemDropList dropList, int playerLevel, int groupCount) { foreach (var dropItem in dropList.items) { int count; if (dropItem.Roll(out count, groupCount, playerLevel)) { if (count > 0) { switch (dropItem.type) { case InventoryObjectType.Weapon: { for (int i = 0; i < count; i++) { GenerateWeapon(dropManager, lootLevel, lootWorkshop, difficulty, newObjects, remapWeight); } } break; case InventoryObjectType.Scheme: { for (int i = 0; i < count; i++) { GenerateScheme(dropManager, lootLevel, lootWorkshop, difficulty, newObjects, remapWeight); } } break; case InventoryObjectType.Material: { var matDropItem = dropItem as MaterialDropItem; if (matDropItem != null) { GenerateMaterials(matDropItem.templateId, count, newObjects); } } break; case InventoryObjectType.nebula_element: { var nebElemDropItem = dropItem as NebulaElementDropItem; if (nebElemDropItem != null) { GenerateNebulaElements(nebElemDropItem.templateId, count, newObjects); } } break; case InventoryObjectType.craft_resource: { var craftResourceDropItem = dropItem as CraftResourceDropItem; if (craftResourceDropItem != null) { GenerateCraftResource(craftResourceDropItem.templateId, count, newObjects); } } break; case InventoryObjectType.pet_scheme: { var petSchemeDropItem = dropItem as PetSchemeDropItem; if (petSchemeDropItem != null) { GeneratePetScheme(race, petSchemeDropItem.template, petSchemeDropItem.petColor, count, newObjects); } } break; case InventoryObjectType.contract_item: { var contractDropItem = dropItem as ContractObjectDropItem; if (contractDropItem != null) { GenerateContractItemObject(contractDropItem.templateId, contractDropItem.contractId, count, newObjects); } } break; case InventoryObjectType.planet_resource_hangar: { var hangarDropItem = dropItem as PlanetHangarDropItem; if (hangarDropItem != null && count > 0) { GeneratePlanetHangarScheme(count, newObjects); } } break; case InventoryObjectType.planet_resource_accelerator: { var accDropItem = dropItem as PlanetResourceAcceleratorDropItem; if (accDropItem != null && count > 0) { GeneratePlanetResourceAcceleratorScheme(count, newObjects); } } break; } } } } }
public ActorDropListPair(DamageInfo actor, ItemDropList dropList) { m_Player = actor; m_DropList = dropList; }
public void SetDropList(List <DropItem> items) { m_DropList = new ItemDropList(items); }
void Start() { itemDropList = this; OnceSetup(); //util.LogAllInteractables(); }