コード例 #1
0
ファイル: ItemDrop.cs プロジェクト: ingvard/valheim-jserver
 // Token: 0x060006DC RID: 1756 RVA: 0x00038A80 File Offset: 0x00036C80
 public static void LoadFromZDO(ItemDrop.ItemData itemData, ZDO zdo)
 {
     itemData.m_durability  = zdo.GetFloat("durability", itemData.m_durability);
     itemData.m_stack       = zdo.GetInt("stack", itemData.m_stack);
     itemData.m_quality     = zdo.GetInt("quality", itemData.m_quality);
     itemData.m_variant     = zdo.GetInt("variant", itemData.m_variant);
     itemData.m_crafterID   = zdo.GetLong("crafterID", itemData.m_crafterID);
     itemData.m_crafterName = zdo.GetString("crafterName", itemData.m_crafterName);
 }
コード例 #2
0
            static bool Prefix(ref CookingStation __instance, ref ZNetView ___m_nview, Humanoid user, bool hold)
            {
                if (hold)
                {
                    return(false);
                }

                Traverse t_cookingStation = Traverse.Create(__instance);
                ZDO      zdo = ___m_nview.GetZDO();

                for (int slot = 0; slot < __instance.m_slots.Length; ++slot)
                {
                    string itemName   = zdo.GetString(nameof(slot) + slot);
                    bool   isItemDone = t_cookingStation.Method("IsItemDone", itemName).GetValue <bool>();

                    if (itemName != "" && itemName != __instance.m_overCookedItem.name && isItemDone)
                    {
                        JustAnotherCookingSkill.raiseCookingSkill(user, JustAnotherCookingSkill.cookingStaticExperienceGain.Value * 0.5f);

                        string qualityPrefix = JustAnotherCookingSkill.getQualityBasedOnSkill(user);

                        // check if such object exist
                        string qualifyMealName = qualityPrefix + itemName;
                        if (Prefab.Cache.GetPrefab <ItemDrop>(qualifyMealName) == null)
                        {
                            Log.LogError($"No object registered for qualify meal: {qualifyMealName}");
                            return(true);
                        }

                        // instead of processing normal food, we spawn qualified variant
                        MethodInfo method = __instance.GetType().GetMethod("SpawnItem");
                        if (method == null)
                        {
                            Log.LogError("Method SpawnItem does not exist on type CookingStation");
                            return(true);
                        }

                        method.Invoke(__instance, new object[] { qualifyMealName });

                        zdo.Set("slot" + slot, "");

                        ___m_nview.InvokeRPC(ZNetView.Everybody, "SetSlotVisual", new object[]
                        {
                            slot,
                            ""
                        });

                        // Unfortunately we replace this hook totally and extra modifications will conflict on those. I gonna find better way
                        return(false);
                    }
                }

                return(true);
            }
コード例 #3
0
ファイル: Game.cs プロジェクト: ingvard/valheim-jserver
 // Token: 0x06000AC7 RID: 2759 RVA: 0x0004DA3C File Offset: 0x0004BC3C
 private IEnumerator ConnectPortals()
 {
     for (;;)
     {
         this.m_tempPortalList.Clear();
         int  index = 0;
         bool done  = false;
         do
         {
             done = ZDOMan.instance.GetAllZDOsWithPrefabIterative(this.m_portalPrefab.name, this.m_tempPortalList, ref index);
             yield return(null);
         }while (!done);
         foreach (ZDO zdo in this.m_tempPortalList)
         {
             ZDOID  zdoid   = zdo.GetZDOID("target");
             string @string = zdo.GetString("tag", "");
             if (!zdoid.IsNone())
             {
                 ZDO zdo2 = ZDOMan.instance.GetZDO(zdoid);
                 if (zdo2 == null || zdo2.GetString("tag", "") != @string)
                 {
                     zdo.SetOwner(ZDOMan.instance.GetMyID());
                     zdo.Set("target", ZDOID.None);
                     ZDOMan.instance.ForceSendZDO(zdo.m_uid);
                 }
             }
         }
         foreach (ZDO zdo3 in this.m_tempPortalList)
         {
             string string2 = zdo3.GetString("tag", "");
             if (zdo3.GetZDOID("target").IsNone())
             {
                 ZDO zdo4 = this.FindRandomUnconnectedPortal(this.m_tempPortalList, zdo3, string2);
                 if (zdo4 != null)
                 {
                     zdo3.SetOwner(ZDOMan.instance.GetMyID());
                     zdo4.SetOwner(ZDOMan.instance.GetMyID());
                     zdo3.Set("target", zdo4.m_uid);
                     zdo4.Set("target", zdo3.m_uid);
                     ZDOMan.instance.ForceSendZDO(zdo3.m_uid);
                     ZDOMan.instance.ForceSendZDO(zdo4.m_uid);
                 }
             }
         }
         yield return(new WaitForSeconds(5f));
     }
     yield break;
 }
コード例 #4
0
ファイル: EpicLoot.cs プロジェクト: JamesEddie18/ValheimMods
        public static MagicItem GetMagicItem(string guid)
        {
            if (_zdo == null)
            {
                return(null);
            }

            var magicItemJson = _zdo.GetString(guid);

            if (string.IsNullOrEmpty(magicItemJson))
            {
                return(null);
            }

            var magicItem = JsonMapper.ToObject <MagicItem>(magicItemJson);

            return(magicItem);
        }
コード例 #5
0
            private static bool DoCheck(Player player, ZDO zdo, string equipKey, string legendaryDataKey, ref ItemDrop.ItemData itemData)
            {
                var zdoLegendaryID = zdo.GetString(legendaryDataKey);

                if (string.IsNullOrEmpty(zdoLegendaryID))
                {
                    var hadItem = itemData != null;
                    if (hadItem)
                    {
                        ForceResetVisEquipment(player, itemData);
                    }
                    itemData = null;
                    return(hadItem);
                }

                var currentLegendaryID = itemData?.GetMagicItem()?.LegendaryID;

                if (currentLegendaryID == zdoLegendaryID)
                {
                    return(false);
                }

                var itemHash   = zdo.GetInt(equipKey);
                var itemPrefab = ObjectDB.instance.GetItemPrefab(itemHash);

                if (itemPrefab?.GetComponent <ItemDrop>()?.m_itemData is ItemDrop.ItemData targetItemData)
                {
                    itemData = new ExtendedItemData(targetItemData);
                    itemData.m_durability = float.PositiveInfinity;
                    var magicItemComponent = itemData.Extended().AddComponent <MagicItemComponent>();
                    var stubMagicItem      = new MagicItem {
                        Rarity = ItemRarity.Legendary, LegendaryID = zdoLegendaryID
                    };
                    magicItemComponent.SetMagicItem(stubMagicItem);

                    ForceResetVisEquipment(player, itemData);
                }

                return(false);
            }
コード例 #6
0
            static void Prefix(ref CookingStation __instance, ref ZNetView ___m_nview, Humanoid user, bool hold)
            {
                if (hold)
                {
                    return;
                }

                Traverse t_cookingStation = Traverse.Create(__instance);
                ZDO      zdo = ___m_nview.GetZDO();

                for (int slot = 0; slot < __instance.m_slots.Length; ++slot)
                {
                    string itemName   = zdo.GetString(nameof(slot) + slot);
                    bool   isItemDone = t_cookingStation.Method("IsItemDone", itemName).GetValue <bool>();

                    if (itemName != "" && itemName != __instance.m_overCookedItem.name && isItemDone)
                    {
                        ((Player)user).RaiseSkill((Skills.SkillType)COOKING_SKILL_ID, configCookingStationXPIncrease.Value * 0.75f);
                        //Log($"[Removed Cooked Item from Cook Station] Increase Cooking Skill by {configCookingStationXPIncrease.Value * 0.75f}");
                        break;
                    }
                }
            }
コード例 #7
0
ファイル: BountyTarget.cs プロジェクト: shindomdt/ValheimMods
        private bool HasBeenSetup()
        {
            var bountyID = _zdo.GetString(BountyTarget.BountyIDKey);

            return(!string.IsNullOrEmpty(bountyID));
        }
コード例 #8
0
 public bool isFilled()
 {
     return(!String.IsNullOrEmpty(zdo.GetString(zdoVar)));
 }