示例#1
0
        /*public void shift_up() {
         *  vertical_tile_offset++;
         *  Debug.Log(vertical_tile_offset);
         * }
         * public void shift_down() {
         *  vertical_tile_offset--;
         *  Debug.Log(vertical_tile_offset);
         * }
         * public void shift_left() {
         *  tile_size -= 0.5f;
         *  Debug.Log(tile_size);
         * }
         * public void shift_right() {
         *  tile_size += 0.5f;
         *  Debug.Log(tile_size);
         * }*/

        public void RegisterOffer(int ItemListLocation, CharacterBody CB)
        {
            // LocalUser User = LocalUserManager.GetFirstLocalUser();

            // Chat.AddMessage($"Item Loc: {ItemListLocation}, Item List: {InvData.Count}, {InvData[ItemListLocation].item_index}");

            ItemIndex item = InvData[ItemListLocation].item_index;

            Transform UserTransform = CB.transform;

            // Debug.Log(firstLocalUser.userProfile.name);
            CB.inventory.RemoveItem(item, 1);
            float player_rot = 0;

            Vector3 mod_rot = new Vector3((float)(Math.Cos(player_rot)) * 10, 20, (float)(Math.Sin(player_rot)) * 10);

            PickupDropletController.CreatePickupDroplet(
                new PickupIndex(item), UserTransform.position, mod_rot);

            string color_tag = "#" + ColorCatalog.GetColorHexString(ItemCatalog.GetItemDef(item).colorIndex);

            // Chat.AddMessage($"{CB.name} has dropped <color={color_tag}> {Language.GetString(ItemCatalog.GetItemDef(item).nameToken)} </color>");
            sendChatMessage($"{CB.GetUserName()} has dropped <color={color_tag}> {Language.GetString(ItemCatalog.GetItemDef(item).nameToken)} </color>");


            InvData[ItemListLocation].count -= 1;
            if (InvData[ItemListLocation].count <= 0)
            {
                InvData.RemoveAt(ItemListLocation);
                Destroy(TileList[TileList.Count - 1]);
                TileList.RemoveAt(TileList.Count - 1);
            }
        }
示例#2
0
        ////// Hooks //////

        private string CharacterBody_GetDisplayName(On.RoR2.CharacterBody.orig_GetDisplayName orig, CharacterBody self)
        {
            var retv = orig(self);

            if (self.name == "ItemDroneBody(Clone)")
            {
                var ward = self.GetComponent <ItemWard>();
                if (!ward || ward.itemcounts.Count == 0)
                {
                    return(retv);
                }
                var idef = ItemCatalog.GetItemDef(ward.itemcounts.First().Key);
                if (idef == null)
                {
                    return(retv);
                }

                var color = "FFFFFF";
                var itd   = ItemTierCatalog.GetItemTierDef(idef.tier);
                if (itd)
                {
                    color = ColorCatalog.GetColorHexString(itd.colorIndex);
                }
                return($"{retv} (<color=#{color}>{Language.GetString(idef.nameToken)}</color>)");
            }
            return(retv);
        }
示例#3
0
        public static string TierToHexString(ItemTier tier)
        {
            switch (tier)
            {
            case ItemTier.Tier1:
                return(ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier1Item));

            case ItemTier.Tier2:
                return(ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier2Item));

            case ItemTier.Tier3:
                return(ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier3Item));

            case ItemTier.Lunar:
                return(ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.LunarItem));

            case ItemTier.Boss:
                return(ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.BossItem));

            case ItemTier.NoTier:
                return(ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Unaffordable));

            default:
                return("FFF");
            }
        }
示例#4
0
        private string GetStylizedPickupName(PickupDef pickup)
        {
            var(nameToken, colorIndex) = pickup switch
            {
                PickupDef _ when EquipmentCatalog.GetEquipmentDef(pickup.equipmentIndex) is EquipmentDef def => (def.nameToken, def.colorIndex),
                PickupDef _ when ItemCatalog.GetItemDef(pickup.itemIndex) is ItemDef def => (def.nameToken, def.colorIndex),
                _ => ("", ColorCatalog.ColorIndex.None),
            };

            var color = ColorCatalog.GetColorHexString(colorIndex);
            return($"<color=#{color}>{Language.GetString(nameToken)}</color>");
        }
        public void wispShrineActivation(Interactor interactor, float monsterCredit)
        {
            combatDirector.enabled        = true;
            combatDirector.monsterCredit += monsterCredit;
            combatDirector.maximumNumberToSpawnBeforeSkipping = wispCount;
            combatDirector.monsterSpawnTimer = 0f;


            if (wispItem)
            {
                var itemColor = ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier1Item);
                if (tier == 2)
                {
                    itemColor = ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier2Item);
                }
                if (tier == 3)
                {
                    itemColor = ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier3Item);
                }
                if (acceptNext)
                {
                    Chat.SendBroadcastChat(new Chat.SubjectFormatChatMessage
                    {
                        subjectAsCharacterBody = interactor.GetComponent <CharacterBody>(),
                        baseToken   = "SHRINE_WISP_ACCEPT_MESSAGE",
                        paramTokens = new string[]
                        {
                            itemColor,
                            wispItem.nameToken,
                        }
                    });
                }
                else
                {
                    Chat.SendBroadcastChat(new Chat.SubjectFormatChatMessage
                    {
                        subjectAsCharacterBody = interactor.GetComponent <CharacterBody>(),
                        baseToken   = "SHRINE_WISP_DENY_MESSAGE",
                        paramTokens = new string[]
                        {
                            itemColor,
                            wispItem.nameToken,
                        }
                    });
                }
            }
        }
示例#6
0
 public static void SendColored(string?message, ColorCatalog.ColorIndex color, string?messageFrom)
 {
     SendColored(message, ColorCatalog.GetColorHexString(color), messageFrom);
 }
示例#7
0
 public static string ToHex(this ColorCatalog.ColorIndex colorIndex, bool excludeSymbol = false)
 {
     return((excludeSymbol ? "" : "#") + ColorCatalog.GetColorHexString(colorIndex));
 }
        private void GlobalEventManager_onCharacterDeathGlobal(DamageReport report)
        {
            if (IsActiveAndEnabled() && report.victimIsBoss && TeleporterInteraction.instance && TeleporterInteraction.instance.bossGroup.combatSquad.memberCount <= 1)
            {
                shouldDeferDrops = false;
                lootShowerLoc    = report.victim.transform.position + Vector3.up * 3f;
                var nodeGraph = SceneInfo.instance.GetNodeGraph(MapNodeGroup.GraphType.Ground);

                launchVelocities = CollectNearestNodeLaunchVelocities(nodeGraph, deferredDrops.Count, 10f, 1000f,
                                                                      lootShowerLoc, 5f, 0.625f, 3f, 10, LayerIndex.world.mask | LayerIndex.entityPrecise.mask, QueryTriggerInteraction.Ignore);

                if (launchVelocities.Count < deferredDrops.Count)
                {
                    var ls2   = TeleporterInteraction.instance.transform.position + Vector3.up * 3f;
                    var lvel2 = CollectNearestNodeLaunchVelocities(nodeGraph, deferredDrops.Count, 10f, 1000f,
                                                                   ls2, 5f, 0.625f, 3f, 10, LayerIndex.world.mask | LayerIndex.entityPrecise.mask, QueryTriggerInteraction.Ignore);
                    if (launchVelocities.Count == 0 && lvel2.Count == 0)
                    {
                        TinkersSatchelPlugin._logger.LogWarning("DelayLoot: found no free navnodes to drop items at, using fallback circle");
                        lootShowerLoc = ls2;
                        for (var i = 0; i < deferredDrops.Count; i++)
                        {
                            var theta = (float)i / (float)deferredDrops.Count * Mathf.PI * 2f;
                            launchVelocities.Add(new Vector3(Mathf.Cos(theta) * 10f, 20f, Mathf.Sin(theta) * 10f));
                        }
                    }
                    else if (lvel2.Count > launchVelocities.Count)
                    {
                        TinkersSatchelPlugin._logger.LogWarning("DelayLoot: couldn't find enough free navnodes to drop items at from boss, falling back to TP");
                        launchVelocities = lvel2;
                        lootShowerLoc    = ls2;
                    }
                    if (launchVelocities.Count < deferredDrops.Count)
                    {
                        TinkersSatchelPlugin._logger.LogWarning("DelayLoot: couldn't find enough free navnodes to drop items at from any source, some items will stack");
                    }
                }

                if (announceDrop == AnnounceDropMode.ItemTierCounts)
                {
                    Dictionary <ItemTier, int> totalItemTiers = new Dictionary <ItemTier, int>();
                    int totalEquipments      = 0;
                    int totalLunarEquipments = 0;
                    int totalOther           = 0;
                    foreach (var drop in deferredDrops)
                    {
                        if (drop && drop.TryGetComponent <PickupDropletController>(out var pickup))
                        {
                            var pdef = PickupCatalog.GetPickupDef(pickup.pickupIndex);
                            if (pdef != null)
                            {
                                if (pdef.itemIndex != ItemIndex.None && pdef.itemTier != ItemTier.NoTier)
                                {
                                    if (!totalItemTiers.ContainsKey(pdef.itemTier))
                                    {
                                        totalItemTiers[pdef.itemTier] = 0;
                                    }
                                    totalItemTiers[pdef.itemTier]++;
                                }
                                else if (pdef.equipmentIndex != EquipmentIndex.None)
                                {
                                    if (pdef.isLunar)
                                    {
                                        totalLunarEquipments++;
                                    }
                                    else
                                    {
                                        totalEquipments++;
                                    }
                                }
                                else
                                {
                                    totalOther++;
                                }
                            }
                            else
                            {
                                totalOther++;
                            }
                        }
                        else
                        {
                            totalOther++;
                        }
                    }
                    List <string> displays = new List <string>();
                    if (totalItemTiers.ContainsKey(ItemTier.Tier1))
                    {
                        displays.Add($"<color=#{ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier1Item)}>{totalItemTiers[ItemTier.Tier1]} tier-1 item{NPlur(totalItemTiers[ItemTier.Tier1])}</color>");
                    }
                    if (totalItemTiers.ContainsKey(ItemTier.Tier2))
                    {
                        displays.Add($"<color=#{ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier2Item)}>{totalItemTiers[ItemTier.Tier2]} tier-2 item{NPlur(totalItemTiers[ItemTier.Tier2])}</color>");
                    }
                    if (totalItemTiers.ContainsKey(ItemTier.Tier3))
                    {
                        displays.Add($"<color=#{ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier3Item)}>{totalItemTiers[ItemTier.Tier3]} tier-3 item{NPlur(totalItemTiers[ItemTier.Tier3])}</color>");
                    }
                    if (totalItemTiers.ContainsKey(ItemTier.Lunar))
                    {
                        displays.Add($"<color=#{ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.LunarItem)}>{totalItemTiers[ItemTier.Lunar]} lunar item{NPlur(totalItemTiers[ItemTier.Lunar])}</color>");
                    }
                    if (totalItemTiers.ContainsKey(ItemTier.Boss))
                    {
                        displays.Add($"<color=#{ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.BossItem)}>{totalItemTiers[ItemTier.Boss]} boss item{NPlur(totalItemTiers[ItemTier.Boss])}</color>");
                    }
                    if (totalEquipments > 0)
                    {
                        displays.Add($"<color=#{ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Equipment)}>{totalEquipments} equipment{NPlur(totalEquipments)}</color>");
                    }
                    if (totalLunarEquipments > 0)
                    {
                        displays.Add($"<color=#{ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.LunarItem)}>{totalLunarEquipments} lunar equipment{NPlur(totalLunarEquipments)}</color>");
                    }
                    int totalVoidCount = 0;
                    if (totalItemTiers.ContainsKey(ItemTier.VoidTier1))
                    {
                        totalVoidCount += totalItemTiers[ItemTier.VoidTier1];
                    }
                    if (totalItemTiers.ContainsKey(ItemTier.VoidTier2))
                    {
                        totalVoidCount += totalItemTiers[ItemTier.VoidTier2];
                    }
                    if (totalItemTiers.ContainsKey(ItemTier.VoidTier3))
                    {
                        totalVoidCount += totalItemTiers[ItemTier.VoidTier3];
                    }
                    if (totalItemTiers.ContainsKey(ItemTier.VoidBoss))
                    {
                        totalVoidCount += totalItemTiers[ItemTier.VoidBoss];
                    }
                    if (totalVoidCount > 0)
                    {
                        displays.Add($"<color=#{ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.VoidItem)}>{totalVoidCount} void item{NPlur(totalVoidCount)}</color>");
                    }
                    if (totalOther > 0)
                    {
                        displays.Add($"{totalOther} other drop{NPlur(totalOther)}");
                    }

                    if (displays.Count == 0)
                    {
                    }
                    else if (displays.Count == 1)
                    {
                        NetUtil.ServerSendGlobalChatMsg($"The boss's hoard of {displays[0]} is yours.");
                    }
                    else if (displays.Count == 2)
                    {
                        NetUtil.ServerSendGlobalChatMsg($"The boss's hoard of {String.Join(" and ", displays)} is yours.");
                    }
                    else
                    {
                        displays[displays.Count - 1] = "and " + displays[displays.Count - 1];
                        NetUtil.ServerSendGlobalChatMsg($"The boss's hoard of {String.Join(", ", displays)} is yours.");
                    }
                }
                else if (announceDrop == AnnounceDropMode.TotalItemCount && deferredDrops.Count > 0)
                {
                    NetUtil.ServerSendGlobalChatMsg($"The boss's hoard of {deferredDrops.Count} drop{NPlur(deferredDrops.Count)} is yours.");
                }
            }
        }
示例#9
0
 public static void SendColored(string message, ColorCatalog.ColorIndex color)
 {
     SendColored(message, ColorCatalog.GetColorHexString(color));
 }
示例#10
0
        public override string ConstructChatString()
        {
            EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(equipmentIndex);

            return($"{playerName} dropped <color=#{ColorCatalog.GetColorHexString(equipmentDef.colorIndex)}>{Language.GetString(equipmentDef.nameToken)}</color>.");
        }
示例#11
0
        public override string ConstructChatString()
        {
            ItemDef itemDef = ItemCatalog.GetItemDef(itemIndex);

            return($"{playerName} dropped <color=#{ColorCatalog.GetColorHexString(itemDef.colorIndex)}>{Language.GetString(itemDef.nameToken)}</color>.");
        }