Example #1
0
        public override void AddRecipeGroups()
        {
            // I'm using this as a PostPostSetupContent so all mods are loaded before I access bannerToItem
            Tiles.BannerRackTE.itemToBanner.Clear();
            FieldInfo             bannerToItemField = typeof(NPCLoader).GetField("bannerToItem", BindingFlags.NonPublic | BindingFlags.Static);
            Dictionary <int, int> bannerToItem      = (Dictionary <int, int>)bannerToItemField.GetValue(null);

            foreach (var item in bannerToItem)
            {
                if (Tiles.BannerRackTE.itemToBanner.ContainsKey(item.Value))
                {
                    Logger.Warn($"BannerBonanza: Warning, multiple BannerIDs pointing to same ItemID: Banners:{Lang.GetNPCNameValue(item.Key)},{Lang.GetNPCNameValue(BannerRackTE.itemToBanner[item.Value])} Item:{Lang.GetItemNameValue(item.Value)}");
                }
                else
                {
                    Tiles.BannerRackTE.itemToBanner.Add(item.Value, item.Key);
                }
            }

            for (int i = -10; i < NPCID.Count; i++)
            {
                int vanillaBannerID = Terraria.Item.NPCtoBanner(i);
                if (vanillaBannerID > 0 && !NPCID.Sets.ExcludedFromDeathTally[NPCID.FromNetId(i)])
                {
                    int vanillaBannerItemID = Item.BannerToItem(vanillaBannerID);
                    if (ItemID.Sets.BannerStrength[vanillaBannerItemID].Enabled)
                    {
                        if (!Tiles.BannerRackTE.itemToBanner.ContainsKey(vanillaBannerItemID))
                        {
                            Tiles.BannerRackTE.itemToBanner.Add(vanillaBannerItemID, vanillaBannerID);
                        }
                    }
                }
            }
        }
        ////

        private bool CustomLoad(int npcType, int bossHeadIndex, string bossNpcUid, string displayName)
        {
            if (npcType == 0 || npcType == -1)                  // -1 for legacy support
            {
                return(false);
            }

            var npc = new NPC();

            npc.SetDefaults(npcType);

            if (NPCID.GetUniqueKey(npc) != bossNpcUid)
            {
                npcType = NPCID.TypeFromUniqueKey(bossNpcUid);
                if (npcType > 0)
                {
                    npc.SetDefaults(npcType);
                    return(this.CustomLoad(npcType, npc.GetBossHeadTextureIndex(), bossNpcUid, npc.GivenName));
                }

                this.mod.Logger.Info("Could not find boss head of custom boss mask for npc " + bossNpcUid);
                return(false);
            }

            this.BossNpcType     = npcType;
            this.BossHeadIndex   = bossHeadIndex;
            this.BossUid         = bossNpcUid;
            this.BossDisplayName = displayName;

            return(true);
        }
        public override void AI()
        {
            NPCID npcid = new NPCID();

            if (npcid.Equals(17))
            {
                projectile.damage = 1;
            }
            else
            {
                projectile.damage = 1;
            }
            projectile.rotation += 90f;

            if (projectile.alpha > 70)
            {
                projectile.alpha -= 15;
                if (projectile.alpha < 70)
                {
                    projectile.alpha = 70;
                }
            }
            if (projectile.localAI[0] == 0f)
            {
                AdjustMagnitude(ref projectile.velocity);
                projectile.localAI[0] = 1f;
            }
            Vector2 move     = Vector2.Zero;
            float   distance = 400f;
            bool    target   = false;

            for (int k = 0; k < 200; k++)
            {
                if (Main.npc[k].active && !Main.npc[k].dontTakeDamage && !Main.npc[k].friendly && Main.npc[k].lifeMax > 5)
                {
                    Vector2 newMove    = Main.npc[k].Center - projectile.Center;
                    float   distanceTo = (float)Math.Sqrt(newMove.X * newMove.X + newMove.Y * newMove.Y);
                    if (distanceTo < distance)
                    {
                        move     = newMove;
                        distance = distanceTo;
                        target   = true;
                    }
                }
            }
            if (target)
            {
                AdjustMagnitude(ref move);
                projectile.velocity = (10 * projectile.velocity + move) / 11f;
                AdjustMagnitude(ref projectile.velocity);
            }
            if (projectile.alpha <= 100)
            {
                int dust = Dust.NewDust(projectile.position, projectile.width, projectile.height, mod.DustType("SpectreDust"));
                Main.dust[dust].velocity /= 2f;
            }
        }
Example #4
0
        public override int WriteTo(byte[] Buffer, int StartIndex = 0)
        {
            int cursor = StartIndex;

            cursor += base.WriteTo(Buffer, cursor);
            cursor += NPCID.WriteTo(Buffer, cursor);
            cursor += QuestID.WriteTo(Buffer, cursor);

            return(cursor - StartIndex);
        }
        ////////////////

        public bool SetBoss(int npcType)
        {
            NPC npc = new NPC();

            npc.SetDefaults(npcType);

            int idx = npc.GetBossHeadTextureIndex();

            if (idx < 0 || idx >= Main.npcHeadBossTexture.Length || Main.npcHeadBossTexture[idx] == null)
            {
                return(false);
            }

            if (this.CustomLoad(npcType, idx, NPCID.GetUniqueKey(npc), npc.GivenName))
            {
                this.item.SetNameOverride(npc.GivenName + " Mask");
            }


            /*if( Main.netMode != 2 ) {
             *      var tex = Main.npcHeadBossTexture[info.BossHeadIndex];
             *      //var old_tex = Main.armorHeadTexture[this.item.headSlot];
             *      if( tex == null ) { return; }
             *      //if( old_tex == null ) { return; }
             *
             *      Main.itemTexture[this.item.type] = tex;
             *
             *      try {
             *              var graDev = Main.graphics.GraphicsDevice;
             *              var newTex = new RenderTarget2D( graDev, oldTex.Width, oldTex.Height, false, graDev.PresentationParameters.BackBufferFormat, DepthFormat.Depth24 );
             *              var old_ren_tar = graDev.GetRenderTargets();
             *
             *              graDev.SetRenderTarget( newTex );
             *              graDev.DepthStencilState = new DepthStencilState() { DepthBufferEnable = true };
             *
             *              graDev.Clear( Color.Transparent );
             *              var sb = new SpriteBatch( graDev );
             *              sb.Begin( SpriteSortMode.Deferred, BlendState.AlphaBlend );
             *              for( int i = 0; i <= 20; i++ ) {
             *                      var rect = new Rectangle( 0, 4 + (i * oldTex.Height), oldTex.Width, oldTex.Height / 20 );
             *                      sb.Draw( tex, rect, Color.White );
             *              }
             *              sb.End();
             *
             *              graDev.SetRenderTargets( old_ren_tar );
             *
             *              Main.armorHeadTexture[this.item.headSlot] = newTex;
             *      } catch( Exception e ) {
             *              ErrorLogger.Log( e.ToString() );
             *      }
             * }*/

            return(true);
        }
Example #6
0
    public void addID(NPCID toAdd)    //add checks for serialization and load from data if so
    {
        if (idsInWorld == null)
        {
            idsInWorld = new List <NPCID>();
        }
        idsInWorld.Add(toAdd);
        List <string> data = LoadingDataStore.me.doesNPCExist(toAdd);

        if (data == null)
        {
        }
        else
        {
            toAdd.deserializeNPC(data[0]);
        }
    }
        ////

        public static void ModifyHitIf(NPC npc, ref int damage, ref float knockback)
        {
            var    mymod = EnragedMod.Instance;
            string uid   = NPCID.GetUniqueKey(npc.type);

            if (mymod.EnragedNpcHooks.ContainsKey(uid))
            {
                (bool _, bool isDamageResist)? behavior = mymod.EnragedNpcHooks[uid].Invoke(npc.whoAmI);
                if (behavior.HasValue && !behavior.Value.isDamageResist)
                {
                    return;
                }
            }

            //

            damage    = Math.Max((damage / 2) - 10, 1);
            knockback = 0;
        }
Example #8
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        NPCController controller;

        if (collision.CompareTag("NPC"))
        {
            // check for nearby NPC's
            controller = collision.gameObject.GetComponentInParent <NPCController>();
            if (controller.isLiving())
            {
                controller.kill(weapon);
                Debug.Log("Intersection With NPC from Weapon of type: " + weapon);
                NPCID id = collision.gameObject.GetComponentInParent <DialogueTrigger>().npcid;
                if (id != NPCID.CHESSMASTER && id != NPCID.GRANNY && id != NPCID.SPICEVENDOR && id != NPCID.PECULIARBOY)
                {
                    Debug.Log("INNOCENT KILLED");
                    StoryManager.instance.SetConditional(Conditional.INNOCENT_KILLED, true);
                }
            }
        }
    }
Example #9
0
        public void Load(TagCompound tag)
        {
            type      = (Type)tag.Get <int>("Type");
            uniqueKey = tag.GetString("UniqueKey");

            switch (type)
            {
            case Type.Item:
                id = ItemID.TypeFromUniqueKey(uniqueKey);
                break;

            case Type.NPC:
                id = NPCID.TypeFromUniqueKey(uniqueKey);
                break;

            case Type.Projectile:
                id = ProjectileID.TypeFromUniqueKey(uniqueKey);
                break;
            }

            animation = new DrawAnimationVertical(tag.Get <int>("TicksPerFrame"), tag.Get <int>("FrameCount"));
        }
Example #10
0
    //change back to string
    public string GetDialoguePath(NPCID npcid)
    {
        //DOES NOT CHANGE
        int time = TimeManager.instance.getInterval();

        Debug.Log("time is " + time.ToString());
        var jsonTextFile = Resources.Load <TextAsset>("Dialogues/Schedule/" + npcid.ToString());
        //

        JsonData schedule = JsonMapper.ToObject(jsonTextFile.text);
        string   option   = "";
        int      index    = 0;
        //test
        JsonData line = schedule[index];

        foreach (JsonData key in line.Keys)
        {
            option = key.ToString();
        }
        if (option == "?")
        {
            JsonData beginningTime = line[0];

            //IDK
            schedule = beginningTime[0][0];
            index    = 1;
            //This part finds the time in the schedule
            for (int noOfTime = 0; noOfTime < beginningTime.Count; noOfTime++)
            {
                JsonData choice = beginningTime[noOfTime];
                if (Convert.ToInt32(choice[0][0].ToString()) <= time)
                {
                    schedule = choice[0];
                }
            }
        }
        return(Path(schedule));
    }
        public static void ApplyExternalEffectsIf(NPC npc)
        {
            if (Main.netMode == NetmodeID.MultiplayerClient)
            {
                return;
            }

            //

            var    mymod = EnragedMod.Instance;
            string uid   = NPCID.GetUniqueKey(npc.type);

            if (mymod.EnragedNpcHooks.ContainsKey(uid))
            {
                (bool isBramble, bool _)? behavior = mymod.EnragedNpcHooks[uid].Invoke(npc.whoAmI);
                if (behavior.HasValue && !behavior.Value.isBramble)
                {
                    return;
                }
            }

            //

            var   config    = EnragedConfig.Instance;
            int   thickness = config.Get <int>(nameof(EnragedConfig.EnragedBrambleTrailThickness));
            float density   = config.Get <float>(nameof(EnragedConfig.EnragedBrambleTrailDensity));

            if (thickness > 0 && density > 0f)
            {
                int created = CursedBrambleTile.CreateBramblePatchAt(
                    tileX: (int)npc.Center.X / 16,
                    tileY: (int)npc.Center.Y / 16,
                    radius: thickness,
                    densityPercent: density,
                    sync: true
                    );
            }
        }
Example #12
0
        public IconData(Type type, int id)
        {
            this.type = type;
            this.id   = id;

            switch (type)
            {
            case Type.Item:
                uniqueKey = ItemID.GetUniqueKey(id);
                animation = Main.itemAnimations[id] as DrawAnimationVertical ?? new DrawAnimationVertical(0, 1);
                break;

            case Type.NPC:
                uniqueKey = NPCID.GetUniqueKey(id);
                animation = new DrawAnimationVertical(5, Main.npcFrameCount[id]);
                break;

            case Type.Projectile:
                uniqueKey = ProjectileID.GetUniqueKey(id);
                animation = new DrawAnimationVertical(5, Main.projFrames[id]);
                break;
            }
        }
Example #13
0
        ////////////////

        public void RegisterReceiptOfMask(Player givingPlayer, int maskType, int bossNpcType)
        {
            var mymod = TheLunaticMod.Instance;

            if (maskType == ModContent.ItemType <CustomBossMaskItem>() && bossNpcType != 0 && bossNpcType != -1)                // -1 for legacy support
            {
                NPC npc = new NPC();
                npc.SetDefaults(bossNpcType);

                this.GivenCustomMasksByBossUid.Add(NPCID.GetUniqueKey(npc));
            }
            else
            {
                this.GivenVanillaMasksByType.Add(maskType);
            }

            if (mymod.Config.DebugModeInfo)
            {
                LogHelpers.Log("DEBUG Registering mask. " + givingPlayer.name + ", " + maskType);
            }

            // Buy time before the end comes
            if (this.GivenVanillaMasksByType.Count < (MaskLogic.AvailableMaskCount))
            {
                var modworld  = ModContent.GetInstance <TheLunaticWorld>();
                int recovered = mymod.Config.HalfDaysRecoveredPerMask;

                switch (maskType)
                {
                case ItemID.FleshMask:
                    recovered = (int)((float)recovered * mymod.Config.WallOfFleshMultiplier);
                    break;

                case ItemID.DestroyerMask:
                case ItemID.TwinMask:
                case ItemID.SkeletronPrimeMask:
                case ItemID.PlanteraMask:
                case ItemID.GolemMask:
                case ItemID.DukeFishronMask:
                case ItemID.BossMaskBetsy:
                case ItemID.BossMaskCultist:
                case ItemID.BossMaskMoonlord:
                    if (maskType == ItemID.BossMaskMoonlord && mymod.Config.MoonLordMaskWins)
                    {
                        this.GiveAllVanillaMasks();
                    }
                    recovered = (int)((float)recovered * mymod.Config.HardModeMultiplier);
                    break;
                }

                if (WorldStateHelpers.GetDayOrNightPercentDone() > 0.5f)
                {
                    recovered += 1;
                }

                modworld.GameLogic.SetTime(modworld.GameLogic.HalfDaysElapsed - recovered);
            }

            // Sky flash for all
            if (!Main.dedServ && Main.netMode != 2)                 // Not server
            {
                Player currentPlayer = Main.player[Main.myPlayer];
                var    modplayer     = currentPlayer.GetModPlayer <TheLunaticPlayer>();
                modplayer.FlashMe();
            }
        }
Example #14
0
        private void PutItemsInSuperBannerTE(BannerRackTE superBannerTE, List <int> indexes, Player player)
        {
            if (Main.netMode == NetmodeID.MultiplayerClient)
            {
                // uh oh
                return;
            }
            bool added = false;

            foreach (int invIndex in indexes)
            {
                Item item = player.inventory[invIndex];
                if (!item.IsAir && BannerRackTE.itemToBanner.ContainsKey(item.type))
                {
                    if (!superBannerTE.bannerItems.Any(x => x.type == item.type))
                    {
                        added = true;
                        string message = $"Banner for {item.Name} added to Banner Rack";
                        NetMessage.BroadcastChatMessage(NetworkText.FromLiteral(message), Color.White);
                        //Main.NewText($"Banner for {item.Name} added to Banner Rack");
                        Item clone = item.Clone();
                        clone.stack = 1;
                        item.stack--;
                        if (item.IsAir)
                        {
                            item.SetDefaults(0);
                        }
                        //bool updateNeeded = superBannerTE.bannerItems.Count < 1;
                        superBannerTE.bannerItems.Add(clone);
                        //superBannerTE.stringUpToDate = false;
                        //if(updateNeeded)
                        //	superBannerTE.UpdateDrawItemIndexes();
                    }
                }
            }
            if (!added)
            {
                string message = $"No new Banners to add to Banner Rack";
                //Main.NewText($"No new Banners to add to Banner Rack");
                NetMessage.SendChatMessageToClient(NetworkText.FromLiteral(message), Color.White, player.whoAmI);
                // find closest npc that I don't have banner for.
                //player.NPCBannerBuff
                int nextNPCToKill     = -1;
                int nextNPCToKillLeft = 9999;
                for (int npctype = -10; npctype < NPCLoader.NPCCount; npctype++)
                {
                    int vanillaBannerID = Terraria.Item.NPCtoBanner(npctype);
                    if (vanillaBannerID > 0 && !NPCID.Sets.ExcludedFromDeathTally[NPCID.FromNetId(npctype)])
                    {
                        int vanillaBannerItemID = Item.BannerToItem(vanillaBannerID);
                        if (ItemID.Sets.BannerStrength[vanillaBannerItemID].Enabled)
                        {
                            int killsToBanner = ItemID.Sets.KillsToBanner[vanillaBannerItemID];
                            int killsLeft     = killsToBanner - (NPC.killCount[vanillaBannerID] % killsToBanner);

                            if (killsLeft < nextNPCToKillLeft && !superBannerTE.bannerItems.Any(x => x.type == vanillaBannerItemID))
                            {
                                nextNPCToKillLeft = killsLeft;
                                nextNPCToKill     = npctype;
                            }
                        }
                    }
                }
                if (nextNPCToKill != -1)
                {
                    message = $"Try killing {nextNPCToKillLeft} more {Lang.GetNPCNameValue(nextNPCToKill)}";
                    NetMessage.SendChatMessageToClient(NetworkText.FromLiteral(message), Color.White, player.whoAmI);
                    //Main.NewText($"Try killing {nextNPCToKillLeft} more {Lang.GetNPCNameValue(nextNPCToKill)}");
                }
            }
            else
            {
                superBannerTE.updateNeeded = true;
            }
        }
Example #15
0
 public static void SetEnragedNpcBehaviorHook(int npcType, EnrangedBehaviorHook callback)
 {
     EnragedMod.Instance.EnragedNpcHooks[NPCID.GetUniqueKey(npcType)] = callback;
 }
Example #16
0
 public NPCDefinition(int type) : base(NPCID.GetUniqueKey(type))
 {
 }
Example #17
0
        public override void RightClick(int i, int j)
        {
            Player player = Main.LocalPlayer;
            Tile   tile   = Main.tile[i, j];
            int    left   = i - (tile.frameX % 54 / 18);
            int    top    = j - (tile.frameY / 18);

            int index = GetInstance <BannerRackTE>().Find(left, top);

            if (index == -1)
            {
                return;
            }
            BannerRackTE bannerRackTE = (BannerRackTE)TileEntity.ByID[index];

            // if Client, not SP, ask server to move items for you.
            if (Main.netMode == NetmodeID.MultiplayerClient)
            {
                var packet = mod.GetPacket();
                packet.Write((byte)BannerBonanzaMessageType.RequestSuperBannerStealBanners);
                packet.Write(index);
                List <int> indexes = new List <int>();
                for (int itemIndex = 0; itemIndex < 50; itemIndex++)
                {
                    Item item = player.inventory[itemIndex];
                    if (!item.IsAir && !player.inventory[itemIndex].favorited && BannerRackTE.itemToBanner.ContainsKey(item.type))
                    {
                        // Inform Server of current item (just to be safe?)
                        // TODO: I think NetMessage 5 doesn't sync mod data.
                        NetMessage.SendData(MessageID.SyncEquipment, -1, -1, null, player.whoAmI, (float)itemIndex, (float)player.inventory[itemIndex].prefix, 0f, 0, 0, 0);
                        // Mimicing QuickStackAllChests: NetMessage.SendData(85, -1, -1, null, itemIndex, 0f, 0f, 0f, 0, 0, 0);
                        indexes.Add(itemIndex);
                        // Prevents some moving items in ui while waiting for server response.
                        player.inventoryChestStack[itemIndex] = true;
                    }
                }
                packet.Write(indexes.Count);
                foreach (var itemIndex in indexes)
                {
                    packet.Write(itemIndex);
                }
                packet.Send();
                return;
            }
            else             // Single Player
            {
                // foreach item in inventory, if
                bool added = false;
                for (int invIndex = 0; invIndex < 54; invIndex++)
                {
                    Item item = player.inventory[invIndex];
                    if (!item.IsAir && BannerRackTE.itemToBanner.ContainsKey(item.type))
                    {
                        if (!bannerRackTE.bannerItems.Any(x => x.type == item.type))
                        {
                            added = true;
                            Main.NewText($"Banner for {item.Name} added to Banner Rack");
                            Item clone = item.Clone();
                            clone.stack = 1;
                            item.stack--;
                            if (item.IsAir)
                            {
                                item.SetDefaults(0);
                            }
                            //bool updateNeeded = superBannerTE.bannerItems.Count < 1;
                            bannerRackTE.bannerItems.Add(clone);
                            bannerRackTE.stringUpToDate = false;
                            //if(updateNeeded)
                            //	superBannerTE.UpdateDrawItemIndexes();
                        }
                    }
                }
                if (!added)
                {
                    Main.NewText($"No new Banners to add to Banner Rack");
                    // find closest npc that I don't have banner for.
                    //player.NPCBannerBuff
                    int nextNPCToKill     = -1;
                    int nextNPCToKillLeft = 9999;
                    for (int npctype = -10; npctype < NPCLoader.NPCCount; npctype++)
                    {
                        int vanillaBannerID = Terraria.Item.NPCtoBanner(npctype);
                        if (vanillaBannerID > 0 && !NPCID.Sets.ExcludedFromDeathTally[NPCID.FromNetId(npctype)])
                        {
                            int vanillaBannerItemID = Item.BannerToItem(vanillaBannerID);
                            if (ItemID.Sets.BannerStrength[vanillaBannerItemID].Enabled)
                            {
                                int killsToBanner = ItemID.Sets.KillsToBanner[vanillaBannerItemID];
                                int killsLeft     = killsToBanner - (NPC.killCount[vanillaBannerID] % killsToBanner);

                                if (killsLeft < nextNPCToKillLeft && !bannerRackTE.bannerItems.Any(x => x.type == vanillaBannerItemID))
                                {
                                    nextNPCToKillLeft = killsLeft;
                                    nextNPCToKill     = npctype;
                                }
                            }
                        }
                    }
                    if (nextNPCToKill != -1)
                    {
                        Main.NewText($"Try killing {nextNPCToKillLeft} more {Lang.GetNPCNameValue(nextNPCToKill)}");
                    }
                }
            }
        }
Example #18
0
 public static EnrangedBehaviorHook GetEnragedNpcBehaviorHook(int npcType)
 {
     EnragedMod.Instance.EnragedNpcHooks.TryGetValue(NPCID.GetUniqueKey(npcType), out EnrangedBehaviorHook callback);
     return(callback);
 }
Example #19
0
    void OnSceneGUI()
    {
        pos   = Event.current.mousePosition;
        pos.y = SceneView.currentDrawingSceneView.camera.pixelHeight - pos.y;
        pos   = SceneView.currentDrawingSceneView.camera.ScreenToWorldPoint(pos);
        pos.z = 0;
        Selection.selectionChanged += OnDeselect;

        if (im == null)
        {
            im = FindObjectOfType <IDManager>();
        }

        if (c == null)
        {
            c = FindObjectOfType <CommonObjectsStore>();
        }
        if (id == null)
        {
            id = FindObjectOfType <ItemDatabase>();
        }

        Handles.BeginGUI();

        /*  string[] options = System.Enum.GetNames(typeof( uniqueNPCSetting));
         * GUILayout.BeginHorizontal();
         *
         * foreach(string st in options)
         * {
         *    if (button(st))
         *    {
         *        mySetting = getSettingFromString(st) ;
         *    }
         * }
         * GUILayout.EndHorizontal();*/

        if (mySetting == uniqueNPCSetting.menu)
        {
            //draw buttons on each of the NPCID's found in the level,
            if (npcsInWorld == null || npcsInWorld.Length == 0)
            {
                refreshNPCS();
            }

            foreach (NPCID npc in npcsInWorld)
            {
                inworldLabel(npc.transform.position, npc.firstName + " " + npc.lastName);
                if (inworldButton(npc.gameObject.transform.position, Color.cyan))
                {
                    npcEditing        = npc.gameObject;
                    controllerEditing = npcEditing.GetComponent <NPCController>();
                    clothesEditing    = npcEditing.GetComponent <PersonClothesController>();
                    deciderEditing    = npcEditing.GetComponent <NPCBehaviourDecider>();
                    inventoryEditing  = npcEditing.GetComponent <Inventory>();
                    idEditing         = npc;
                    npcItems          = npcEditing.GetComponent <NPCItemInitialiser>();
                    mySetting         = uniqueNPCSetting.editing;
                }
            }

            if (button("New Unique NPC"))
            {
                GameObject g         = (GameObject)Instantiate(c.civilian, new Vector3(SceneView.currentDrawingSceneView.camera.transform.position.x, SceneView.currentDrawingSceneView.camera.transform.position.y, 0), Quaternion.Euler(0, 0, 0));
                NPCID      createdID = g.AddComponent <NPCID>();
                createdID.myId = im.getNPCID();
                g.GetComponent <NPCBehaviourDecider>().myType = AIType.neutral;
                g.GetComponent <NPCController>().myType       = AIType.neutral;
                refreshNPCS();
                EditorUtility.SetDirty(id);
                EditorUtility.SetDirty(createdID);
            }
        }
        else if (mySetting == uniqueNPCSetting.editing)
        {
            if (button("Menu"))
            {
                EditorUtility.SetDirty(npcEditing);
                EditorUtility.SetDirty(controllerEditing);
                EditorUtility.SetDirty(clothesEditing);
                EditorUtility.SetDirty(deciderEditing);
                EditorUtility.SetDirty(idEditing);
                EditorUtility.SetDirty(inventoryEditing);
                EditorUtility.SetDirty(npcItems);
                npcEditing        = null;
                controllerEditing = null;
                clothesEditing    = null;
                deciderEditing    = null;

                mySetting = uniqueNPCSetting.menu;
            }
            string[] editOptions = System.Enum.GetNames(typeof(editingTask));
            string   info        = "Editing NPC with the ID " + idEditing.myId;
            label(info, info.Length * 8, 30);
            taskScroll = GUILayout.BeginScrollView(taskScroll, GUILayout.Width(500), GUILayout.Height(50));
            GUILayout.BeginHorizontal();
            foreach (string st in editOptions)
            {
                if (button(st))
                {
                    currentTask = getTaskFromString(st);
                }
            }
            GUILayout.EndScrollView();
            GUILayout.EndHorizontal();
            GUILayout.Label(currentTask.ToString());
            if (currentTask == editingTask.name)
            {
                viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400));

                GUILayout.BeginHorizontal();
                string st = "Name: " + idEditing.firstName + " " + idEditing.lastName;
                label(st, st.Length * 8, 30);
                idEditing.firstName = textInput(idEditing.firstName);
                idEditing.lastName  = textInput(idEditing.lastName);
                EditorUtility.SetDirty(idEditing);
                EditorUtility.SetDirty(npcEditing);
                GUILayout.EndHorizontal();

                if (button("NPC Always Active" + idEditing.alwaysActive.ToString()))
                {
                    idEditing.alwaysActive = !idEditing.alwaysActive;
                }

                GUILayout.EndScrollView();
            }
            else if (currentTask == editingTask.position)
            {
                if (editRotation == false)
                {
                    if (button("Change Rotation"))
                    {
                        editRotation = true;
                    }
                    drawPositionHandle(ref npcEditing);
                    EditorUtility.SetDirty(npcEditing);
                }
                else
                {
                    if (button("Change Position"))
                    {
                        editRotation = false;
                    }
                    drawRotationHandle(ref npcEditing);
                    EditorUtility.SetDirty(npcEditing);
                }
            }
            else if (currentTask == editingTask.items)
            {
                viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400));

                label("Items To add:");
                string item = getItems();
                if (item != "None")
                {
                    if (npcItems.itemsToAdd == null)
                    {
                        npcItems.itemsToAdd = new List <string>();
                    }
                    npcItems.itemsToAdd.Add(item);
                    EditorUtility.SetDirty(npcItems);
                }

                label("Add random item:");
                string randItem = getItems();
                if (randItem != "None")
                {
                    if (npcItems.randomItems == null)
                    {
                        npcItems.randomItems = new List <string>();
                    }
                    npcItems.randomItems.Add(randItem);
                    EditorUtility.SetDirty(npcItems);
                }
                label("Items Being Given");
                foreach (string st in npcItems.itemsToAdd)
                {
                    GUILayout.BeginHorizontal();
                    label(st, st.Length * 8, 30);
                    if (button("X"))
                    {
                        npcItems.itemsToAdd.Remove(st);
                        EditorUtility.SetDirty(npcItems);

                        return;
                    }
                    GUILayout.EndHorizontal();
                }
                label("Items that may be given");
                foreach (string st in npcItems.randomItems)
                {
                    GUILayout.BeginHorizontal();
                    label(st, st.Length * 8, 30);
                    if (button("X"))
                    {
                        npcItems.randomItems.Remove(st);
                        EditorUtility.SetDirty(npcItems);

                        return;
                    }
                    GUILayout.EndHorizontal();
                }
                GUILayout.EndScrollView();
            }
            else if (currentTask == editingTask.aesthetics)
            {
                viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400));

                if (clothesEditing.clothesToWearAtStart == null)
                {
                    clothesEditing.clothesToWearAtStart = new List <string>();
                }

                if (button("Random Clothes " + clothesEditing.getRandomClothes.ToString()))
                {
                    clothesEditing.getRandomClothes = !clothesEditing.getRandomClothes;
                }
                label("Clothes you could add:");
                if (clothesEditing.getRandomClothes == false)
                {
                    string st = getClothes();
                    if (st != "None")
                    {
                        if (clothesEditing.clothesToWearAtStart.Contains(st) == false)
                        {
                            clothesEditing.clothesToWearAtStart.Add(st);
                        }
                    }
                }

                foreach (string st in clothesEditing.clothesToWearAtStart)
                {
                    GUILayout.BeginHorizontal();
                    label(st, st.Length * 8, 30);
                    if (button("X"))
                    {
                        clothesEditing.clothesToWearAtStart.Remove(st);
                        return;
                    }
                    GUILayout.EndHorizontal();
                }

                GUILayout.EndScrollView();
            }
            else if (currentTask == editingTask.whenToActivate)
            {
                viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400));
                label("Activate NPC:");

                /* label("On Mission Start");
                 * string missionStart = getMission();
                 * if(missionStart!="None")
                 * {
                 *   if (idEditing.started_missionsToActivateOn == null)
                 *   {
                 *       idEditing.started_missionsToActivateOn = new List<string>();
                 *   }
                 *   if (idEditing.started_missionsToActivateOn.Contains(missionStart) == false)
                 *   {
                 *       idEditing.started_missionsToActivateOn.Add(missionStart);
                 *       EditorUtility.SetDirty(idEditing);
                 *       return;
                 *   }
                 * }
                 *
                 * label("On Mission Finish");
                 * string missionEnd = getMission();
                 * if(missionEnd!="None")
                 * {
                 *   if (idEditing.finished_missionsToActivateOn == null)
                 *   {
                 *       idEditing.finished_missionsToActivateOn = new List<string>();
                 *   }
                 *   if (idEditing.finished_missionsToActivateOn.Contains(missionStart) == false)
                 *   {
                 *       idEditing.finished_missionsToActivateOn.Add(missionStart);
                 *       EditorUtility.SetDirty(idEditing);
                 *       return;
                 *   }
                 * }
                 */
                label("Unique NPC's Dead");
                int val = getUniquieNPCID();
                if (val != -1)
                {
                    if (idEditing.idsToActivateOnIfDead == null)
                    {
                        idEditing.idsToActivateOnIfDead = new List <int>();
                    }

                    if (idEditing.idsToActivateOnIfDead.Contains(val) == false)
                    {
                        idEditing.idsToActivateOnIfDead.Add(val);
                    }
                }

                label("------------------------");

                GUILayout.EndScrollView();
            }
            else if (currentTask == editingTask.whenToDeactivate)
            {
                viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400));

                label("Deactivate NPC:");

                /* label("On Mission Start");
                 * string missionStart = getMission();
                 * if (missionStart != "None")
                 * {
                 *   if (idEditing.started_missionsToDeactivateOn == null)
                 *   {
                 *       idEditing.started_missionsToDeactivateOn = new List<string>();
                 *   }
                 *   if (idEditing.started_missionsToDeactivateOn.Contains(missionStart) == false)
                 *   {
                 *       idEditing.started_missionsToDeactivateOn.Add(missionStart);
                 *       EditorUtility.SetDirty(idEditing);
                 *       return;
                 *   }
                 * }
                 *
                 * label("On Mission Finish");
                 * string missionEnd = getMission();
                 * if (missionEnd != "None")
                 * {
                 *   if (idEditing.finished_missionsToDeactivateOn == null)
                 *   {
                 *       idEditing.finished_missionsToDeactivateOn = new List<string>();
                 *   }
                 *   if (idEditing.finished_missionsToDeactivateOn.Contains(missionStart) == false)
                 *   {
                 *       idEditing.finished_missionsToDeactivateOn.Add(missionStart);
                 *       EditorUtility.SetDirty(idEditing);
                 *       return;
                 *   }
                 * }*/

                label("Unique NPC's Dead");
                int val = getUniquieNPCID();
                if (val != -1)
                {
                    if (idEditing.idsToDeactivateOnIfDead == null)
                    {
                        idEditing.idsToDeactivateOnIfDead = new List <int>();
                    }

                    if (idEditing.idsToDeactivateOnIfDead.Contains(val) == false)
                    {
                        idEditing.idsToDeactivateOnIfDead.Add(val);
                        EditorUtility.SetDirty(idEditing);
                    }
                }

                GUILayout.EndScrollView();
            }
            else if (currentTask == editingTask.peacefulConditions)
            {
                viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400));

                label("Make NPC Peaceful:");

                /*label("On Mission Start");
                 * string missionStart = getMission();
                 * if (missionStart != "None")
                 * {
                 *  if (idEditing.started_missionsToMakeNotHostile == null)
                 *  {
                 *      idEditing.started_missionsToMakeNotHostile = new List<string>();
                 *  }
                 *  if (idEditing.started_missionsToMakeNotHostile.Contains(missionStart) == false)
                 *  {
                 *      idEditing.started_missionsToMakeNotHostile.Add(missionStart);
                 *      EditorUtility.SetDirty(idEditing);
                 *      return;
                 *  }
                 * }
                 *
                 * label("On Mission Finish");
                 * string missionEnd = getMission();
                 * if (missionEnd != "None")
                 * {
                 *  if (idEditing.finished_missionsToMakeNotHostile == null)
                 *  {
                 *      idEditing.finished_missionsToMakeNotHostile = new List<string>();
                 *  }
                 *  if (idEditing.finished_missionsToMakeNotHostile.Contains(missionStart) == false)
                 *  {
                 *      idEditing.finished_missionsToMakeNotHostile.Add(missionStart);
                 *      EditorUtility.SetDirty(idEditing);
                 *      return;
                 *  }
                 * }
                 */
                label("Unique NPC's Dead");
                int val = getUniquieNPCID();
                if (val != -1)
                {
                    if (idEditing.idsThatMakeNotHostileOnDeath == null)
                    {
                        idEditing.idsThatMakeNotHostileOnDeath = new List <int>();
                    }

                    if (idEditing.idsThatMakeNotHostileOnDeath.Contains(val) == false)
                    {
                        idEditing.idsThatMakeNotHostileOnDeath.Add(val);
                        EditorUtility.SetDirty(idEditing);
                    }
                }

                GUILayout.EndScrollView();
            }
            else if (currentTask == editingTask.hostileConditions)
            {
                viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400));

                label("Make NPC Hostile:");

                /* label("On Mission Start");
                 * string missionStart = getMission();
                 * if (missionStart != "None")
                 * {
                 *   if (idEditing.started_missionsToMakeHostile == null)
                 *   {
                 *       idEditing.started_missionsToMakeHostile = new List<string>();
                 *   }
                 *   if (idEditing.started_missionsToMakeHostile.Contains(missionStart) == false)
                 *   {
                 *       idEditing.started_missionsToMakeHostile.Add(missionStart);
                 *       EditorUtility.SetDirty(idEditing);
                 *       return;
                 *   }
                 * }
                 *
                 * label("On Mission Finish");
                 * string missionEnd = getMission();
                 * if (missionEnd != "None")
                 * {
                 *   if (idEditing.finished_missionsToMakeHostile == null)
                 *   {
                 *       idEditing.finished_missionsToMakeHostile = new List<string>();
                 *   }
                 *   if (idEditing.finished_missionsToMakeHostile.Contains(missionStart) == false)
                 *   {
                 *       idEditing.finished_missionsToMakeHostile.Add(missionStart);
                 *       EditorUtility.SetDirty(idEditing);
                 *       return;
                 *   }
                 * }*/

                label("Unique NPC's Dead");
                int val = getUniquieNPCID();
                if (val != -1)
                {
                    if (idEditing.idsThatMakeHostileOnDeath == null)
                    {
                        idEditing.idsThatMakeHostileOnDeath = new List <int>();
                    }

                    if (idEditing.idsThatMakeHostileOnDeath.Contains(val) == false)
                    {
                        idEditing.idsThatMakeHostileOnDeath.Add(val);
                        EditorUtility.SetDirty(idEditing);
                    }
                }

                GUILayout.EndScrollView();
            }
            else if (currentTask == editingTask.whenToEnable)
            {
            }
            else if (currentTask == editingTask.whenToDisable)
            {
            }
            else if (currentTask == editingTask.editLists)
            {
                viewScroll = GUILayout.BeginScrollView(viewScroll, GUILayout.Width(400), GUILayout.Height(400));

                label("Hostile Conditions:");
                //hostile
                if (idEditing.idsThatMakeHostileOnDeath != null)
                {
                    foreach (int i in idEditing.idsThatMakeHostileOnDeath)
                    {
                        if (button("Remove " + i.ToString()))
                        {
                            idEditing.idsThatMakeHostileOnDeath.Remove(i);
                            EditorUtility.SetDirty(idEditing);

                            return;
                        }
                    }
                }

                if (idEditing.started_missionsToMakeHostile != null)
                {
                    foreach (string st in idEditing.started_missionsToMakeHostile)
                    {
                        if (button("Remove " + st))
                        {
                            idEditing.started_missionsToMakeHostile.Remove(st);
                            EditorUtility.SetDirty(idEditing);

                            return;
                        }
                    }
                }

                if (idEditing.finished_missionsToMakeHostile != null)
                {
                    foreach (string st in idEditing.finished_missionsToMakeHostile)
                    {
                        if (button("Remove " + st))
                        {
                            idEditing.finished_missionsToMakeHostile.Remove(st);
                            EditorUtility.SetDirty(idEditing);

                            return;
                        }
                    }
                }

                label("Peaceful Conditions:");
                //not hostile
                if (idEditing.idsThatMakeNotHostileOnDeath != null)
                {
                    foreach (int i in idEditing.idsThatMakeNotHostileOnDeath)
                    {
                        if (button("Remove " + i.ToString()))
                        {
                            idEditing.idsThatMakeNotHostileOnDeath.Remove(i);
                            EditorUtility.SetDirty(idEditing);

                            return;
                        }
                    }
                }

                if (idEditing.started_missionsToMakeNotHostile != null)
                {
                    foreach (string st in idEditing.started_missionsToMakeNotHostile)
                    {
                        if (button("Remove " + st))
                        {
                            idEditing.started_missionsToMakeNotHostile.Remove(st);
                            EditorUtility.SetDirty(idEditing);

                            return;
                        }
                    }
                }

                if (idEditing.finished_missionsToMakeNotHostile != null)
                {
                    foreach (string st in idEditing.finished_missionsToMakeNotHostile)
                    {
                        if (button("Remove " + st))
                        {
                            idEditing.finished_missionsToMakeNotHostile.Remove(st);
                            EditorUtility.SetDirty(idEditing);

                            return;
                        }
                    }
                }

                label("Activate Conditions:");
                //activate NPC
                if (idEditing.idsToActivateOnIfDead != null)
                {
                    foreach (int i in idEditing.idsToActivateOnIfDead)
                    {
                        if (button("Remove " + i.ToString()))
                        {
                            idEditing.idsToActivateOnIfDead.Remove(i);
                            EditorUtility.SetDirty(idEditing);

                            return;
                        }
                    }
                }

                if (idEditing.started_missionsToActivateOn != null)
                {
                    foreach (string st in idEditing.started_missionsToActivateOn)
                    {
                        if (button("Remove " + st))
                        {
                            idEditing.started_missionsToActivateOn.Remove(st);
                            EditorUtility.SetDirty(idEditing);

                            return;
                        }
                    }
                }


                if (idEditing.finished_missionsToActivateOn != null)
                {
                    foreach (string st in idEditing.finished_missionsToActivateOn)
                    {
                        if (button("Remove " + st))
                        {
                            idEditing.finished_missionsToActivateOn.Remove(st);
                            EditorUtility.SetDirty(idEditing);

                            return;
                        }
                    }
                }

                label("Deactivate Conditions:");
                //deactivate NPC
                if (idEditing.idsToDeactivateOnIfDead != null)
                {
                    foreach (int i in idEditing.idsToDeactivateOnIfDead)
                    {
                        if (button("Remove " + i.ToString()))
                        {
                            idEditing.idsToDeactivateOnIfDead.Remove(i);
                            EditorUtility.SetDirty(idEditing);

                            return;
                        }
                    }
                }

                if (idEditing.started_missionsToDeactivateOn != null)
                {
                    foreach (string st in idEditing.finished_missionsToDeactivateOn)
                    {
                        if (button("Remove " + st))
                        {
                            idEditing.finished_missionsToDeactivateOn.Remove(st);
                            EditorUtility.SetDirty(idEditing);

                            return;
                        }
                    }
                }


                if (idEditing.finished_missionsToDeactivateOn != null)
                {
                    foreach (string st in idEditing.finished_missionsToDeactivateOn)
                    {
                        if (button("Remove " + st))
                        {
                            idEditing.finished_missionsToDeactivateOn.Remove(st);
                            EditorUtility.SetDirty(idEditing);
                            return;
                        }
                    }
                }

                GUILayout.EndScrollView();
            }
            displayGlobalNPCData();

            //name
            //aesthetics (clothes, skin color)
            //Items
            //when to enable (What conditions have to be met for the NPC to start appearing in the world). (Mission done etc..)
            //when to disable (what conditions cause the NPC to stop beign displayed in the world) (not available at that time, mission done etc...)
            //hostile conditions (What conditions would cause the NPC to become hostile) (been attacked by player, at war with faction, wanted...)
            //peaceful conditions (what conditions would cause the NPC to become peaceful after turning hostile) (Mission complete, time passed)
            //stopping conditions (What conditions cause the NPC to stop existing in the world)(dead,mission done etc...)
        }

        Handles.EndGUI();
    }
Example #20
0
 public static void InitializeLegacyLocalization()
 {
     FillNameCacheArray <PrefixID, int>("Prefix", prefix);
     for (int i = 0; i < gen.Length; i++)
     {
         gen[i] = Language.GetText("LegacyWorldGen." + i);
     }
     for (int j = 0; j < menu.Length; j++)
     {
         menu[j] = Language.GetText("LegacyMenu." + j);
     }
     for (int k = 0; k < inter.Length; k++)
     {
         inter[k] = Language.GetText("LegacyInterface." + k);
     }
     for (int l = 0; l < misc.Length; l++)
     {
         misc[l] = Language.GetText("LegacyMisc." + l);
     }
     for (int m = 0; m < mp.Length; m++)
     {
         mp[m] = Language.GetText("LegacyMultiplayer." + m);
     }
     for (int n = 0; n < tip.Length; n++)
     {
         tip[n] = Language.GetText("LegacyTooltip." + n);
     }
     for (int num = 0; num < chestType.Length; num++)
     {
         chestType[num] = Language.GetText("LegacyChestType." + num);
     }
     for (int num2 = 0; num2 < dresserType.Length; num2++)
     {
         dresserType[num2] = Language.GetText("LegacyDresserType." + num2);
     }
     FillNameCacheArray <ItemID, short>("ItemName", _itemNameCache);
     FillNameCacheArray <MobileLangID, short>("Mobile", mobile);
     for (int num3 = 0; num3 < _negativeItemNameCache.Length; num3++)
     {
         _negativeItemNameCache[num3] = LocalizedText.Empty;
     }
     _negativeItemNameCache[23] = Language.GetText("ItemName.YellowPhasesaber");
     _negativeItemNameCache[22] = Language.GetText("ItemName.WhitePhasesaber");
     _negativeItemNameCache[21] = Language.GetText("ItemName.PurplePhasesaber");
     _negativeItemNameCache[20] = Language.GetText("ItemName.GreenPhasesaber");
     _negativeItemNameCache[19] = Language.GetText("ItemName.RedPhasesaber");
     _negativeItemNameCache[18] = Language.GetText("ItemName.BluePhasesaber");
     FillNameCacheArray <ProjectileID, short>("ProjectileName", _projectileNameCache);
     FillNameCacheArray <NPCID, short>("NPCName", _npcNameCache);
     FillNameCacheArray <BuffID, int>("BuffName", _buffNameCache);
     FillNameCacheArray <BuffID, int>("BuffDescription", _buffDescriptionCache);
     for (int num4 = -65; num4 < 0; num4++)
     {
         _negativeNpcNameCache[-num4 - 1] = _npcNameCache[NPCID.FromNetId(num4)];
     }
     _negativeNpcNameCache[0]  = Language.GetText("NPCName.Slimeling");
     _negativeNpcNameCache[1]  = Language.GetText("NPCName.Slimer2");
     _negativeNpcNameCache[2]  = Language.GetText("NPCName.GreenSlime");
     _negativeNpcNameCache[3]  = Language.GetText("NPCName.Pinky");
     _negativeNpcNameCache[4]  = Language.GetText("NPCName.BabySlime");
     _negativeNpcNameCache[5]  = Language.GetText("NPCName.BlackSlime");
     _negativeNpcNameCache[6]  = Language.GetText("NPCName.PurpleSlime");
     _negativeNpcNameCache[7]  = Language.GetText("NPCName.RedSlime");
     _negativeNpcNameCache[8]  = Language.GetText("NPCName.YellowSlime");
     _negativeNpcNameCache[9]  = Language.GetText("NPCName.JungleSlime");
     _negativeNpcNameCache[53] = Language.GetText("NPCName.SmallRainZombie");
     _negativeNpcNameCache[54] = Language.GetText("NPCName.BigRainZombie");
     ItemTooltip.AddGlobalProcessor(delegate(string tooltip)
     {
         if (tooltip.Contains("<right>"))
         {
             tooltip = tooltip.Replace("<right>", Language.GetTextValue("Controls.RightClick"));
         }
         return(tooltip);
     });
     for (int num5 = 0; num5 < _itemTooltipCache.Length; num5++)
     {
         _itemTooltipCache[num5] = ItemTooltip.None;
     }
     for (int num6 = 0; num6 < _negativeItemTooltipCache.Length; num6++)
     {
         _negativeItemTooltipCache[num6] = ItemTooltip.None;
     }
     (from f in typeof(ItemID).GetFields(BindingFlags.Static | BindingFlags.Public)
      where f.FieldType == typeof(short)
      select f).ToList().ForEach(delegate(FieldInfo field)
     {
         short num8 = (short)field.GetValue(null);
         if (num8 > 0 && num8 < _itemTooltipCache.Length)
         {
             _itemTooltipCache[num8] = ItemTooltip.FromLanguageKey("ItemTooltip." + field.Name);
         }
     });
     _negativeItemTooltipCache[23] = ItemTooltip.FromLanguageKey("ItemTooltip.YellowPhasesaber");
     _negativeItemTooltipCache[22] = ItemTooltip.FromLanguageKey("ItemTooltip.WhitePhasesaber");
     _negativeItemTooltipCache[21] = ItemTooltip.FromLanguageKey("ItemTooltip.PurplePhasesaber");
     _negativeItemTooltipCache[20] = ItemTooltip.FromLanguageKey("ItemTooltip.GreenPhasesaber");
     _negativeItemTooltipCache[19] = ItemTooltip.FromLanguageKey("ItemTooltip.RedPhasesaber");
     _negativeItemTooltipCache[18] = ItemTooltip.FromLanguageKey("ItemTooltip.BluePhasesaber");
     for (int num7 = 0; num7 < Recipe.numRecipes; num7++)
     {
         Main.recipe[num7].createItem.RebuildTooltip();
     }
 }
Example #21
0
 public static void InitializeLegacyLocalization()
 {
     FillNameCacheArray <PrefixID, int>("Prefix", prefix);
     for (int i = 0; i < gen.Length; i++)
     {
         gen[i] = Language.GetText("LegacyWorldGen." + i);
     }
     for (int j = 0; j < menu.Length; j++)
     {
         menu[j] = Language.GetText("LegacyMenu." + j);
     }
     for (int k = 0; k < inter.Length; k++)
     {
         inter[k] = Language.GetText("LegacyInterface." + k);
     }
     for (int l = 0; l < misc.Length; l++)
     {
         misc[l] = Language.GetText("LegacyMisc." + l);
     }
     for (int m = 0; m < mp.Length; m++)
     {
         mp[m] = Language.GetText("LegacyMultiplayer." + m);
     }
     for (int n = 0; n < tip.Length; n++)
     {
         tip[n] = Language.GetText("LegacyTooltip." + n);
     }
     for (int num = 0; num < chestType.Length; num++)
     {
         chestType[num] = Language.GetText("LegacyChestType." + num);
     }
     for (int num2 = 0; num2 < chestType2.Length; num2++)
     {
         chestType2[num2] = Language.GetText("LegacyChestType2." + num2);
     }
     for (int num3 = 0; num3 < dresserType.Length; num3++)
     {
         dresserType[num3] = Language.GetText("LegacyDresserType." + num3);
     }
     FillNameCacheArray <ItemID, short>("ItemName", _itemNameCache);
     FillNameCacheArray <ProjectileID, short>("ProjectileName", _projectileNameCache);
     FillNameCacheArray <NPCID, short>("NPCName", _npcNameCache);
     FillNameCacheArray <BuffID, int>("BuffName", _buffNameCache);
     FillNameCacheArray <BuffID, int>("BuffDescription", _buffDescriptionCache);
     FillNameCacheArray <EmoteID, int>("EmojiName", _emojiNameCache, leaveMissingEntriesBlank: true);
     for (int num4 = -65; num4 < 0; num4++)
     {
         _negativeNpcNameCache[-num4 - 1] = _npcNameCache[NPCID.FromNetId(num4)];
     }
     _negativeNpcNameCache[0]  = Language.GetText("NPCName.Slimeling");
     _negativeNpcNameCache[1]  = Language.GetText("NPCName.Slimer2");
     _negativeNpcNameCache[2]  = Language.GetText("NPCName.GreenSlime");
     _negativeNpcNameCache[3]  = Language.GetText("NPCName.Pinky");
     _negativeNpcNameCache[4]  = Language.GetText("NPCName.BabySlime");
     _negativeNpcNameCache[5]  = Language.GetText("NPCName.BlackSlime");
     _negativeNpcNameCache[6]  = Language.GetText("NPCName.PurpleSlime");
     _negativeNpcNameCache[7]  = Language.GetText("NPCName.RedSlime");
     _negativeNpcNameCache[8]  = Language.GetText("NPCName.YellowSlime");
     _negativeNpcNameCache[9]  = Language.GetText("NPCName.JungleSlime");
     _negativeNpcNameCache[53] = Language.GetText("NPCName.SmallRainZombie");
     _negativeNpcNameCache[54] = Language.GetText("NPCName.BigRainZombie");
     ItemTooltip.AddGlobalProcessor(delegate(string tooltip)
     {
         if (tooltip.Contains("<right>"))
         {
             InputMode inputMode = InputMode.XBoxGamepad;
             if (PlayerInput.UsingGamepad)
             {
                 inputMode = InputMode.XBoxGamepadUI;
             }
             if (inputMode == InputMode.XBoxGamepadUI)
             {
                 KeyConfiguration keyConfiguration = PlayerInput.CurrentProfile.InputModes[inputMode];
                 string text = PlayerInput.BuildCommand("", true, keyConfiguration.KeyStatus["MouseRight"]);
                 text        = text.Replace(": ", "");
                 tooltip     = tooltip.Replace("<right>", text);
             }
             else
             {
                 tooltip = tooltip.Replace("<right>", Language.GetTextValue("Controls.RightClick"));
             }
         }
         if (tooltip.Contains("<left>"))
         {
             InputMode inputMode2 = InputMode.XBoxGamepad;
             if (PlayerInput.UsingGamepad)
             {
                 inputMode2 = InputMode.XBoxGamepadUI;
             }
             if (inputMode2 == InputMode.XBoxGamepadUI)
             {
                 KeyConfiguration keyConfiguration2 = PlayerInput.CurrentProfile.InputModes[inputMode2];
                 string text2 = PlayerInput.BuildCommand("", true, keyConfiguration2.KeyStatus["MouseLeft"]);
                 text2        = text2.Replace(": ", "");
                 tooltip      = tooltip.Replace("<left>", text2);
             }
             else
             {
                 tooltip = tooltip.Replace("<left>", Language.GetTextValue("Controls.LeftClick"));
             }
         }
         return(tooltip);
     });
     for (int num5 = 0; num5 < _itemTooltipCache.Length; num5++)
     {
         _itemTooltipCache[num5] = ItemTooltip.None;
     }
     (from f in typeof(ItemID).GetFields(BindingFlags.Static | BindingFlags.Public)
      where f.FieldType == typeof(short)
      select f).ToList().ForEach(delegate(FieldInfo field)
     {
         short num6 = (short)field.GetValue(null);
         if (num6 > 0 && num6 < _itemTooltipCache.Length)
         {
             _itemTooltipCache[num6] = ItemTooltip.FromLanguageKey("ItemTooltip." + field.Name);
         }
     });
 }
Example #22
0
        public override void NPCLoot(NPC npc)
        {
            if (npc == null)
            {
                return;
            }

            var mymod = (TheLunaticMod)this.mod;

            if (!mymod.Config.Enabled)
            {
                return;
            }

            if (!npc.boss && npc.type != 551 && npc.type != 398)
            {
                return;
            }                                                                                   // Betsy isn't a boss?
            var myworld = ModContent.GetInstance <TheLunaticWorld>();

            if (!myworld.GameLogic.HaveWeHopeToWin())
            {
                return;
            }

            Item item     = null;
            int  maskType = MaskLogic.GetMaskTypeOfNpc(npc.type);

            if (maskType == -1)
            {
                return;
            }

            // Already given this mask?
            bool isVanilla = MaskLogic.AllVanillaMasks.Contains(maskType);

            if (!myworld.MaskLogic.GivenVanillaMasksByType.Contains(maskType))
            {
                if (!isVanilla && myworld.MaskLogic.GivenCustomMasksByBossUid.Contains(NPCID.GetUniqueKey(npc)))
                {
                    return;
                }
            }

            // No modded masks allowed?
            if (!isVanilla && mymod.Config.OnlyVanillaBossesDropMasks)
            {
                return;
            }

            int which = ItemHelpers.CreateItem(npc.position, maskType, 1, 15, 15);

            item = Main.item[which];

            if (item != null && !item.IsAir)
            {
                if (maskType == ModContent.ItemType <CustomBossMaskItem>())
                {
                    var moditem = (CustomBossMaskItem)item.modItem;
                    if (!moditem.SetBoss(npc.type))
                    {
                        ItemHelpers.DestroyWorldItem(which);
                    }
                }
                else
                {
                    /*if( !modworld.MaskLogic.GivenVanillaMasks.Contains( mask_type ) ) {
                     *      // Does this mask already exist in the world?
                     *      for( int i = 0; i < Main.item.Length; i++ ) {
                     *              if( Main.item[i] != null && Main.item[i].active && Main.item[i].type == mask_type ) {
                     *                      item = Main.item[i];
                     *                      break;
                     *              }
                     *      }
                     * }*/
                }
            }
            else
            {
                LogHelpers.Log("Could not spawn a mask of type " + maskType);
            }
        }
Example #23
0
 public static void InitializeLegacyLocalization()
 {
     Lang.FillNameCacheArray <PrefixID, int>("Prefix", Lang.prefix, false);
     for (int index = 0; index < Lang.gen.Length; ++index)
     {
         Lang.gen[index] = Language.GetText("LegacyWorldGen." + (object)index);
     }
     for (int index = 0; index < Lang.menu.Length; ++index)
     {
         Lang.menu[index] = Language.GetText("LegacyMenu." + (object)index);
     }
     for (int index = 0; index < Lang.inter.Length; ++index)
     {
         Lang.inter[index] = Language.GetText("LegacyInterface." + (object)index);
     }
     for (int index = 0; index < Lang.misc.Length; ++index)
     {
         Lang.misc[index] = Language.GetText("LegacyMisc." + (object)index);
     }
     for (int index = 0; index < Lang.mp.Length; ++index)
     {
         Lang.mp[index] = Language.GetText("LegacyMultiplayer." + (object)index);
     }
     for (int index = 0; index < Lang.tip.Length; ++index)
     {
         Lang.tip[index] = Language.GetText("LegacyTooltip." + (object)index);
     }
     for (int index = 0; index < Lang.chestType.Length; ++index)
     {
         Lang.chestType[index] = Language.GetText("LegacyChestType." + (object)index);
     }
     for (int index = 0; index < Lang.chestType2.Length; ++index)
     {
         Lang.chestType2[index] = Language.GetText("LegacyChestType2." + (object)index);
     }
     for (int index = 0; index < Lang.dresserType.Length; ++index)
     {
         Lang.dresserType[index] = Language.GetText("LegacyDresserType." + (object)index);
     }
     Lang.FillNameCacheArray <ItemID, short>("ItemName", Lang._itemNameCache, false);
     Lang.FillNameCacheArray <ProjectileID, short>("ProjectileName", Lang._projectileNameCache, false);
     Lang.FillNameCacheArray <NPCID, short>("NPCName", Lang._npcNameCache, false);
     Lang.FillNameCacheArray <BuffID, int>("BuffName", Lang._buffNameCache, false);
     Lang.FillNameCacheArray <BuffID, int>("BuffDescription", Lang._buffDescriptionCache, false);
     for (int id = -65; id < 0; ++id)
     {
         Lang._negativeNpcNameCache[-id - 1] = Lang._npcNameCache[NPCID.FromNetId(id)];
     }
     Lang._negativeNpcNameCache[0]  = Language.GetText("NPCName.Slimeling");
     Lang._negativeNpcNameCache[1]  = Language.GetText("NPCName.Slimer2");
     Lang._negativeNpcNameCache[2]  = Language.GetText("NPCName.GreenSlime");
     Lang._negativeNpcNameCache[3]  = Language.GetText("NPCName.Pinky");
     Lang._negativeNpcNameCache[4]  = Language.GetText("NPCName.BabySlime");
     Lang._negativeNpcNameCache[5]  = Language.GetText("NPCName.BlackSlime");
     Lang._negativeNpcNameCache[6]  = Language.GetText("NPCName.PurpleSlime");
     Lang._negativeNpcNameCache[7]  = Language.GetText("NPCName.RedSlime");
     Lang._negativeNpcNameCache[8]  = Language.GetText("NPCName.YellowSlime");
     Lang._negativeNpcNameCache[9]  = Language.GetText("NPCName.JungleSlime");
     Lang._negativeNpcNameCache[53] = Language.GetText("NPCName.SmallRainZombie");
     Lang._negativeNpcNameCache[54] = Language.GetText("NPCName.BigRainZombie");
     ItemTooltip.AddGlobalProcessor((TooltipProcessor)(tooltip =>
     {
         if (tooltip.Contains("<right>"))
         {
             InputMode index = InputMode.XBoxGamepad;
             if (PlayerInput.UsingGamepad)
             {
                 index = InputMode.XBoxGamepadUI;
             }
             if (index == InputMode.XBoxGamepadUI)
             {
                 string newValue = PlayerInput.BuildCommand("", true, PlayerInput.CurrentProfile.InputModes[index].KeyStatus["MouseRight"]).Replace(": ", "");
                 tooltip = tooltip.Replace("<right>", newValue);
             }
             else
             {
                 tooltip = tooltip.Replace("<right>", Language.GetTextValue("Controls.RightClick"));
             }
         }
         return(tooltip);
     }));
     for (int index = 0; index < Lang._itemTooltipCache.Length; ++index)
     {
         Lang._itemTooltipCache[index] = ItemTooltip.None;
     }
     ((IEnumerable <FieldInfo>) typeof(ItemID).GetFields(BindingFlags.Static | BindingFlags.Public)).Where <FieldInfo>((Func <FieldInfo, bool>)(f => f.FieldType == typeof(short))).ToList <FieldInfo>().ForEach((Action <FieldInfo>)(field =>
     {
         short num = (short)field.GetValue((object)null);
         if ((int)num <= 0 || (int)num >= Lang._itemTooltipCache.Length)
         {
             return;
         }
         Lang._itemTooltipCache[(int)num] = ItemTooltip.FromLanguageKey("ItemTooltip." + field.Name);
     }));
 }
Example #24
0
        public override void SetDefaults(NPC npc)
        {
            if (npc.townNPC && npc.type < NPCID.Count && npc.type != NPCID.OldMan)
            {
                Main.npcCatchable[npc.type] = true;
                npc.catchItem = npc.type == NPCID.DD2Bartender ? (short)mod.ItemType("Tavernkeep") : (short)mod.ItemType(NPCID.GetUniqueKey(npc.type).Replace("Terraria ", string.Empty));
            }

            if (npc.type == NPCID.SkeletonMerchant)
            {
                Main.npcCatchable[npc.type] = true;
                npc.catchItem = (short)mod.ItemType("SkeletonMerchant");
            }
        }