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));
     }
 }
Exemple #2
0
        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);
                }
            }
        }
Exemple #3
0
        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);
 }
Exemple #6
0
 void Start()
 {
     itemDropList = this;
     OnceSetup();
     //util.LogAllInteractables();
 }