public void Apply(Terraria.Projectile projectile)
 {
     //                if (Owner < 255)
     //                    projectile.Creator = Main.player[Owner];
     projectile.identity = Id;
     projectile.owner = Owner;
     projectile.damage = Damage;
     projectile.knockBack = Knockback;
     //                projectile.position = new Vector2(X, Y);
     //                projectile.velocity = new Vector2(VX, VY);
     projectile.ai = AI;
 }
        public static void OnSetDefaultsEnd(Terraria.Projectile projectle, int type)
        {
            var ctx = new HookContext();
            var args = new HookArgs.ProjectileSetDefaults()
            {
                Projectile = projectle,
                Type = type,

                State = MethodState.End
            };
            HookPoints.ProjectileSetDefaults.Invoke(ref ctx, ref args);
        }
Esempio n. 3
1
        public static void OnNetDefaultsEnd(Terraria.Item item, int type)
        {
            var ctx = HookContext.Empty;
            var args = new HookArgs.ItemNetDefaults()
            {
                State = MethodState.End,
                Type = type,

                Item = item
            };

            HookPoints.ItemNetDefaults.Invoke(ref ctx, ref args);
        }
Esempio n. 4
0
        /// <summary>
        /// Update override to adjust game chat mode.
        /// </summary>
        /// <param name="gameTime"></param>
        protected override void Update(GameTime gameTime)
        {
            base.Update(gameTime);

            // Set the chat mode based on our controls focus..
            Terraria.SetMainField("chatMode", this._chatInput.Focused);
        }
        //Death message
        //Player killed
        //Teleport
        /// <summary>
        /// Callde via vanilla code when a player has been hurt
        /// </summary>
        /// <param name="player">Player.</param>
        /// <param name="damage">Damage.</param>
        /// <param name="hitDirection">Hit direction.</param>
        /// <param name="pvp">If set to <c>true</c> pvp.</param>
        /// <param name="quiet">If set to <c>true</c> quiet.</param>
        /// <param name="deathText">Death text.</param>
        /// <param name="crit">If set to <c>true</c> crit.</param>
        /// <param name="cooldownCounter">Cooldown counter.</param>
        public static bool OnPlayerHurt(Terraria.Player player, int damage, int hitDirection, bool pvp = false, bool quiet = false, string deathText = " was slain...", bool crit = false, int cooldownCounter = -1)
        {
            var ctx = new HookContext()
            {
            //                Sender = player, This
            //                Player = player
            };
            var args = new HookArgs.PlayerHurt()
            {
                Victim = player,
                Damage = damage,
                HitDirection = hitDirection,
                Pvp = pvp,
                Quiet = quiet,
                Obituary = deathText,
                Critical = crit,
                CooldownCounter = cooldownCounter
            };

            HookPoints.PlayerHurt.Invoke(ref ctx, ref args);

            if (ctx.CheckForKick()) return false;

            return ctx.Result == HookResult.DEFAULT;
        }
        /// <summary>
        /// Raised by vanilla code when a player has been killed
        /// </summary>
        /// <param name="player">Player.</param>
        /// <param name="dmg">Dmg.</param>
        /// <param name="hitDirection">Hit direction.</param>
        /// <param name="pvp">Pvp.</param>
        /// <param name="deathText">Death text.</param>
        public static bool OnPlayerKilled(Terraria.Player player, ref double dmg, ref int hitDirection, ref bool pvp, ref string deathText)
        {
            var ctx = new HookContext()
            {
                Sender = player,
                Player = player
            };
            var args = new HookArgs.PlayerKilled()
            {
                Damage = dmg,
                HitDirection = hitDirection,
                PvP = pvp,
                DeathText = deathText
            };

            HookPoints.PlayerKilled.Invoke(ref ctx, ref args);

            if (ctx.CheckForKick()) return false;

            if (ctx.Result == HookResult.DEFAULT)
            {
                deathText = player.name + deathText;
                return true;
            }

            dmg = args.Damage;
            hitDirection = args.HitDirection;
            pvp = args.PvP;
            deathText = args.DeathText;
            return ctx.Result != HookResult.IGNORE;
        }
        public static Character AddCharacter(this TContext ctx, int userId, Terraria.Player player)
        {
            Character chr = new Character()
            {
                UserId = userId,
                UUID = player.ClientUUId,
                Health = player.statLife,
                MaxHealth = player.statLifeMax,
                Mana = player.statMana,
                MaxMana = player.statManaMax,
                SpawnX = player.SpawnX,
                SpawnY = player.SpawnY,
                Hair = player.hair,
                HairDye = player.hairDye,
                HideVisual = DataEncoding.EncodeInteger(player.hideVisual),
                Difficulty = player.difficulty,
                HairColor = DataEncoding.EncodeColor(player.hairColor),
                SkinColor = DataEncoding.EncodeColor(player.skinColor),
                EyeColor = DataEncoding.EncodeColor(player.eyeColor),
                ShirtColor = DataEncoding.EncodeColor(player.shirtColor),
                UnderShirtColor = DataEncoding.EncodeColor(player.underShirtColor),
                PantsColor = DataEncoding.EncodeColor(player.pantsColor),
                ShoeColor = DataEncoding.EncodeColor(player.shoeColor),
                AnglerQuests = player.anglerQuestsFinished
            };
            ctx.Characters.Add(chr);

            ctx.SaveChanges();

            return chr;
        }
        public static Character UpdateCharacter(this Character character, int userId, Terraria.Player player)
        {
            character.UserId = userId;
            character.UUID = player.ClientUUId;
            character.Health = player.statLife;
            character.MaxHealth = player.statLifeMax;
            character.Mana = player.statMana;
            character.MaxMana = player.statManaMax;
            character.SpawnX = player.SpawnX;
            character.SpawnY = player.SpawnY;
            character.Hair = player.hair;
            character.HairDye = player.hairDye;
            character.HideVisual = DataEncoding.EncodeInteger(player.hideVisual);
            character.Difficulty = player.difficulty;
            character.HairColor = DataEncoding.EncodeColor(player.hairColor);
            character.SkinColor = DataEncoding.EncodeColor(player.skinColor);
            character.EyeColor = DataEncoding.EncodeColor(player.eyeColor);
            character.ShirtColor = DataEncoding.EncodeColor(player.shirtColor);
            character.UnderShirtColor = DataEncoding.EncodeColor(player.underShirtColor);
            character.PantsColor = DataEncoding.EncodeColor(player.pantsColor);
            character.ShoeColor = DataEncoding.EncodeColor(player.shoeColor);
            character.AnglerQuests = player.anglerQuestsFinished;

            return character;
        }
Esempio n. 9
0
        void entry_OnClick(Terraria.UI.UIMouseEvent evt, Terraria.UI.UIElement listeningElement)
        {
            var entry = (PrefixEntry)listeningElement;

            var baseItem = new Item();
            baseItem.SetDefaults(entry.Item.type);
            baseItem.Prefix(entry.Item.prefix);
            _itemSlot.Item = baseItem;
        }
Esempio n. 10
0
		public JistPlugin(Terraria.Main game)
			: base(game)
		{
			Order = 1;
			Instance = new JistEngine(this);
			TShockAPI.Commands.ChatCommands.Add(new TShockAPI.Command("jist.cmd", TShockAPI_JistChatCommand, "jist"));

			ServerApi.Hooks.GameInitialize.Register(this, game_initialize);
		}
Esempio n. 11
0
 void PUIUsableItemSlot_OnClick(Terraria.UI.UIMouseEvent evt, Terraria.UI.UIElement listeningElement)
 {
     if (Main.playerInventory)
     {
         Main.NewText("Clicked");
         var mouseItem = Main.mouseItem.Clone();
         Main.mouseItem = this.Item;
         this.Item = mouseItem;
     }
 }
 public static PlayerFileData CreateAndSave(Terraria.Player player)
 {
     PlayerFileData playerFileDatum = new PlayerFileData()
     {
         Metadata = FileMetadata.FromCurrentSettings(FileType.Player),
         Player = player,
     };
     playerFileDatum._path = Main.GetPlayerPathFromName(player.name);
     Terraria.Player.SavePlayer(playerFileDatum, true);
     return playerFileDatum;
 }
        public static void OnNPCKilled(Terraria.NPC npc)
        {
            var ctx = new HookContext();
            var args = new HookArgs.NPCKilled()
            {
                Type = npc.type,
                NetId = npc.netID
            };

            HookPoints.NPCKilled.Invoke(ref ctx, ref args);
        }
        public static void OnAIEnd(Terraria.Projectile projectle)
        {
            var ctx = new HookContext();
            var args = new HookArgs.ProjectileAI()
            {
                Projectile = projectle,

                State = MethodState.End
            };
            HookPoints.ProjectileAI.Invoke(ref ctx, ref args);
        }
Esempio n. 15
0
        public static void OnSetDefaultsBegin(Terraria.Item item, string itemName)
        {
            var ctx = HookContext.Empty;
            var args = new HookArgs.ItemSetDefaultsByName()
            {
                State = MethodState.Begin,
                Name = itemName,

                Item = item
            };

            HookPoints.ItemSetDefaultsByName.Invoke(ref ctx, ref args);
        }
Esempio n. 16
0
        public static void OnSetDefaultsBegin(Terraria.Item item, int type)
        {
            var ctx = HookContext.Empty;
            var args = new HookArgs.ItemSetDefaultsByType()
            {
                State = MethodState.Begin,
                Type = type,

                Item = item
            };

            HookPoints.ItemSetDefaultsByType.Invoke(ref ctx, ref args);
        }
 public static PlayerFileData CreateAndSave(Terraria.Player player)
 {
     PlayerFileData playerFileDatum = new PlayerFileData()
     {
         Metadata = FileMetadata.FromCurrentSettings(FileType.Player),
         Player = player,
         _isCloudSave = (SocialAPI.Cloud == null ? false : SocialAPI.Cloud.EnabledByDefault),
     };
     playerFileDatum._path = Main.GetPlayerPathFromName(player.name, playerFileDatum.IsCloudSave);
     ((playerFileDatum.IsCloudSave ? Main.CloudFavoritesData : Main.LocalFavoriteData)).ClearEntry(playerFileDatum);
     Terraria.Player.SavePlayer(playerFileDatum, true);
     return playerFileDatum;
 }
Esempio n. 18
0
 void OnGiveCommand(ConsoleCommandArgs args)
 {
     if (args.Arguments.Count > 1)
     {
         var allItemNames = Terraria.GetMainField <string[]>("itemName");
         var itemIds      = new List <int>();
         var player       = DetoxPlayers.LocalPlayer;
         int successes    = 0;
         for (int i = 1; i < args.Arguments.Count; i += 2)
         {
             var itemId = GetItemId(args.Arguments[i]);
             var count  = -1;
             if (itemId != -1)
             {
                 if (Int32.TryParse(args.Arguments[i + 1], out count))
                 {
                     for (int j = 0; j < count; j++)
                     {
                         player.Invoke("PutItemInInventory", itemId, -1);
                     }
                     successes++;
                 }
                 else
                 {
                     Console.PrintConsole(args.Arguments[i + 1] + " is not a valid integer!", ConsoleMessageType.Warning);
                 }
             }
             else
             {
                 Console.PrintConsole("Item \"" + args.Arguments[i] + "\" not found!", ConsoleMessageType.Warning);
             }
         }
         if (successes > 0)
         {
             Console.PrintConsole("Put " + successes + " item" + (successes > 1 ? "s" : "") + "into your inventory!", ConsoleMessageType.About);
         }
         else
         {
             Console.PrintConsole("Couldn't put any item into your inventory.", ConsoleMessageType.Warning);
         }
     }
     else
     {
         Console.PrintConsole("No item specified!", ConsoleMessageType.Error);
         Console.PrintConsole("Usage: /give <item1> <count1> (<item2> <count2> ...)", ConsoleMessageType.Normal);
     }
     args.Handled = true;
 }
Esempio n. 19
0
        /// <summary>
        /// Update override to enforce chatmode block.
        /// </summary>
        /// <param name="gameTime"></param>
        protected override void Update(GameTime gameTime)
        {
            // Allow base control to update..
            base.Update(gameTime);

            // Locate the console textbox..
            var consoleEdit = this._console.Controls.SingleOrDefault(c => c.GetType() == typeof(TextBox));

            if (consoleEdit == null)
            {
                return;
            }

            // Set the chat mode..
            Terraria.SetMainField("chatMode", consoleEdit.Focused);
        }
Esempio n. 20
0
        /// <summary>
        /// Should occur when an NPC dies; gives rewards out to all the players that hit it.
        /// </summary>
        static void GiveRewardsForNPC(Terraria.NPC NPC) {
            lock (__dictionaryLock) {

                if (DamageDictionary.ContainsKey(NPC)) {
                    List<PlayerDamage> playerDamageList = DamageDictionary[NPC];

                    //for this to run money from boss or NPC has to be enabled.
                    if ((NPC.boss && WorldConfiguration.MoneyFromBossEnabled) || (!NPC.boss && WorldConfiguration.MoneyFromNPCEnabled)) {

                        foreach (PlayerDamage damage in playerDamageList) {
                            if (damage.Player == null) {
                                continue;
                            }
                            Economy.EconomyPlayer ePlayer = SEconomyPlugin.GetEconomyPlayerSafe(damage.Player.whoAmi);
                            Money rewardMoney = Convert.ToInt64(Math.Round(WorldConfiguration.MoneyPerDamagePoint * damage.Damage));

                            //load override by NPC type, this allows you to put a modifier on the base for a specific mob type.
                            Configuration.WorldConfiguration.NPCRewardOverride overrideReward = WorldConfiguration.Overrides.FirstOrDefault(i => i.NPCID == NPC.type);
                            if (overrideReward != null) {
                                rewardMoney = Convert.ToInt64(Math.Round(overrideReward.OverridenMoneyPerDamagePoint * damage.Damage));
                            }

                            //if the user doesn't have a bank account or the reward for the mob is 0 (It could be) skip it
                            if (ePlayer != null && ePlayer.BankAccount != null && rewardMoney > 0) {
                                Journal.CachedTransaction fund = new Journal.CachedTransaction() {
                                    Aggregations = 1,
                                    Amount = rewardMoney,
                                    DestinationBankAccountK = ePlayer.BankAccount.BankAccountK,
                                    Message = NPC.name,
                                    SourceBankAccountK = SEconomyPlugin.WorldAccount.BankAccountK
                                };

                                if ((NPC.boss && WorldConfiguration.AnnounceBossKillGains) || (!NPC.boss && WorldConfiguration.AnnounceNPCKillGains)) {
                                    fund.Options |= Journal.BankAccountTransferOptions.AnnounceToReceiver;
                                }

                                //commit it to the transaction cache
                                Journal.TransactionJournal.AddCachedTransaction(fund);
                            }
                        }
                    }

                    //entry must be removed after processing unconditionally
                    DamageDictionary.Remove(NPC);
                }
            }
        }
        public static int OnSetDefaultsBegin(Terraria.Projectile projectle, int type)
        {
            var ctx = new HookContext();
            var args = new HookArgs.ProjectileSetDefaults()
            {
                Projectile = projectle,
                Type = type,

                State = MethodState.Begin
            };

            HookPoints.ProjectileSetDefaults.Invoke(ref ctx, ref args);

            type = args.Type;
            if (ctx.Result == HookResult.RECTIFY && ctx.ResultParam is Int32)
                type = (int)ctx.ResultParam;

            return type;
        }
Esempio n. 22
0
 void OnTimeCommand(ConsoleCommandArgs args)
 {
     args.Handled = true;
     if (args.Arguments.Count == 2)
     {
         double time;
         if (Double.TryParse(args.Arguments[1], out time))
         {
             Terraria.SetMainField("time", time);
             Console.PrintConsole("Time set!", ConsoleMessageType.About);
         }
         else
         {
             Console.PrintConsole("Invalid time specified!", ConsoleMessageType.Error);
             Console.PrintConsole("Usage: /time <time>", ConsoleMessageType.Normal);
         }
     }
     else
     {
         Console.PrintConsole("No time specified!", ConsoleMessageType.Error);
         Console.PrintConsole("Usage: /time <time>", ConsoleMessageType.Normal);
     }
 }
Esempio n. 23
0
        void OnPreDrawInterface(EventArgs args)
        {
            if (!buildgrid || gridTexture == null)
            {
                return;
            }

            // Calculate the grid position..
            var screenPosition = Terraria.GetMainField <Vector2>("screenPosition");
            var posX           = (int)((int)(screenPosition.X / 16f) * 16 - screenPosition.X);
            var posY           = (int)((int)(screenPosition.Y / 16f) * 16 - screenPosition.Y);
            var width          = Terraria.GetMainField <int>("screenWidth") / gridTexture.Width;
            var height         = Terraria.GetMainField <int>("screenHeight") / gridTexture.Height;

            // Draw the grid..
            for (var w = 0; w <= width + 1; w++)
            {
                for (var j = 0; j <= height + 1; j++)
                {
                    Terraria.MainSpriteBatch.Draw(gridTexture, new Vector2(w * gridTexture.Width + posX, j * gridTexture.Height + posY), new Rectangle(0, 0, gridTexture.Width, gridTexture.Height), gridColor, 0f, default(Vector2), 1f, SpriteEffects.None, 0f);
                }
            }
        }
Esempio n. 24
0
        int GetItemId(string itemNameOrId)
        {
            if (allItemNames == null)
            {
                allItemNames = Terraria.GetMainField <string[]>("itemName");
            }
            var itemId = -1;

            if (Int32.TryParse(itemNameOrId, out itemId))
            {
                return(itemId);
            }
            else
            {
                for (int j = 0; j < allItemNames.Length; j++)
                {
                    if (allItemNames[j].ToLower() == itemNameOrId.ToLower())
                    {
                        return(j);
                    }
                }
            }
            return(-1);
        }
Esempio n. 25
0
        /// <summary>
        /// Adds damage done by a player to an NPC slot.  When the NPC dies the rewards for it will fill out.
        /// </summary>
        static void AddNPCDamage(Terraria.NPC NPC, Terraria.Player Player, int Damage) {
            lock (__dictionaryLock) {
                List<PlayerDamage> damageList;
                PlayerDamage playerDamage;

                if (DamageDictionary.ContainsKey(NPC)) {
                    damageList = DamageDictionary[NPC];
                } else {
                    damageList = new List<PlayerDamage>(1);
                    DamageDictionary.Add(NPC, damageList);
                }

                playerDamage = damageList.FirstOrDefault(i => i.Player == Player);

                if (playerDamage == null) {
                    playerDamage = new PlayerDamage() { Player = Player };
                    damageList.Add(playerDamage);
                }

                //increment the damage into either the new or existing slot damage in the dictionary
                //If the damage is greater than the NPC's health then it was a one-shot kill and the damage should be capped.
                playerDamage.Damage += NPC != null && Damage > NPC.lifeMax ? NPC.lifeMax : Damage;
            }
        }
Esempio n. 26
0
		public IBankAccount GetBankAccount(Terraria.Player player)
		{
			return GetBankAccount(player.whoAmI);
		}
Esempio n. 27
0
 /// <summary>
 /// FocusGained callback to enable the Terraria chat mode.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ChatInput_OnFocusGained(object sender, TomShane.Neoforce.Controls.EventArgs e)
 {
     this._chatInput.TextColor = Color.White;
     Terraria.SetMainField("chatMode", true);
 }
Esempio n. 28
0
        public static void OnSetDefaultsEnd(Terraria.Item item, int type = 0, bool noMatCheck = false)
        {
            var ctx = HookContext.Empty;
            var args = new HookArgs.ItemSetDefaultsByType()
            {
                State = MethodState.End,
                Type = type,
                NoMatCheck = noMatCheck,

                Item = item
            };

            HookPoints.ItemSetDefaultsByType.Invoke(ref ctx, ref args);
        }
Esempio n. 29
0
 /// <summary>
 /// FocusLost callback to disable the Terraria chat mode.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ChatInput_OnFocusLost(object sender, TomShane.Neoforce.Controls.EventArgs e)
 {
     Terraria.SetMainField("chatMode", false);
 }
 public static bool Tile_Inequality(Terraria.Tile t1, Terraria.Tile t2)
 {
     return !t1.isTheSameAs(t2);
 }
Esempio n. 31
0
        /// <summary>
        /// Should occur when an NPC dies; gives rewards out to all the players that hit it.
        /// </summary>
        protected void GiveRewardsForNPC(Terraria.NPC NPC)
        {
            List<PlayerDamage> playerDamageList = null;
            IBankAccount account;
            TSPlayer player;
            Money rewardMoney = 0L;

            lock (__dictionaryMutex) {
                if (DamageDictionary.ContainsKey(NPC)) {
                    playerDamageList = DamageDictionary[NPC];

                    if (DamageDictionary.Remove(NPC) == false) {
                        TShock.Log.ConsoleError("seconomy: world economy: Remove of NPC after reward failed.  This is an internal error.");
                    }
                }
            }

            if (playerDamageList == null) {
                return;
            }

            if ((NPC.boss && WorldConfiguration.MoneyFromBossEnabled) || (!NPC.boss && WorldConfiguration.MoneyFromNPCEnabled)) {
                foreach (PlayerDamage damage in playerDamageList) {
                    if (damage.Player == null
                        || (player = TShockAPI.TShock.Players.FirstOrDefault(i => i != null && i.Index == damage.Player.whoAmI)) == null
                        || (account = Parent.GetBankAccount(player)) == null) {
                        continue;
                    }

                    rewardMoney = CustomMultiplier * Convert.ToInt64(Math.Round(Convert.ToDouble(WorldConfiguration.MoneyPerDamagePoint) * damage.Damage));

                    //load override by NPC type, this allows you to put a modifier on the base for a specific mob type.
                    Configuration.WorldConfiguration.NPCRewardOverride overrideReward = WorldConfiguration.Overrides.FirstOrDefault(i => i.NPCID == NPC.type);
                    if (overrideReward != null) {
                        rewardMoney = CustomMultiplier * Convert.ToInt64(Math.Round(Convert.ToDouble(overrideReward.OverridenMoneyPerDamagePoint) * damage.Damage));
                    }

                    if (rewardMoney <= 0 || player.Group.HasPermission("seconomy.world.mobgains") == false) {
                        continue;
                    }

                    Journal.CachedTransaction fund = new Journal.CachedTransaction() {
                        Aggregations = 1,
                        Amount = rewardMoney,
                        DestinationBankAccountK = account.BankAccountK,
                        Message = NPC.name,
                        SourceBankAccountK = Parent.WorldAccount.BankAccountK
                    };

                    if ((NPC.boss && WorldConfiguration.AnnounceBossKillGains) || (!NPC.boss && WorldConfiguration.AnnounceNPCKillGains)) {
                        fund.Options |= Journal.BankAccountTransferOptions.AnnounceToReceiver;
                    }

                    //commit it to the transaction cache
                    Parent.TransactionCache.AddCachedTransaction(fund);
                }
            }
        }
Esempio n. 32
0
		public SEconomyScriptPlugin(Terraria.Main game)
			: base(game)
		{

		}
Esempio n. 33
0
        /// <summary>
        /// Default Constructor
        /// </summary>
        /// <param name="manager"></param>
        public DetoxConsole(Manager manager)
            : base(manager)
        {
            // Initialize this control..
            base.Init();
            base.Left      = base.Top = 0;
            base.Name      = "frmConsole";
            base.Width     = Terraria.MainGame.Window.ClientBounds.Width;
            base.Height    = 250;
            base.Alpha     = 255;
            base.Resizable = false;
            //
            //
            //
            this._console = new TomShane.Neoforce.Controls.Console(manager)
            {
                Anchor          = Anchors.All,
                Name            = "DetoxConsole",
                Width           = base.ClientArea.Width,
                Height          = base.ClientArea.Height,
                ChannelsVisible = false,
                MessageFormat   = ConsoleMessageFormats.TimeStamp,
                TextColor       = Color.White
            };
            this._console.Channels.AddRange(new[]
            {
                new ConsoleChannel(0, "About", Color.Chartreuse),
                new ConsoleChannel(1, "Default", Color.White),
                new ConsoleChannel(2, "Warning", Color.Yellow),
                new ConsoleChannel(3, "Error", Color.Red)
            });
            this._console.SelectedChannel = 1;
            this._console.MessageSent    += (sender, e) =>
            {
                // Ensure the command is valid..
                if (string.IsNullOrEmpty(e.Message.Text) || !e.Message.Text.StartsWith("/"))
                {
                    return;
                }

                // Attempt to handle the command..
                e.Handled = ConsoleCommands.ProcessCommand(e.Message.Text);
                if (!e.Handled)
                {
                    this.LogConsoleMessage(new DetoxAPI.ConsoleMessage("Invalid command or command error occurred.", ConsoleMessageType.Error));
                    e.Handled = true;
                }
            };
            this._console.Init();
            //
            //
            //
            base.Add(this._console);
            manager.Add(this);

            // Attach device settings event to resize console..
            manager.DeviceSettingsChanged += args =>
            {
                // Adjust the base panel size..
                base.Width  = Terraria.MainGame.Window.ClientBounds.Width;
                base.Height = 250;

                // Adjust the console size..
                this._console.Width  = base.ClientArea.Width;
                this._console.Height = base.ClientArea.Height;
            };

            // Locate the console textbox..
            var consoleEdit = this._console.Controls.SingleOrDefault(c => c.GetType() == typeof(TextBox));

            if (consoleEdit == null)
            {
                return;
            }

            consoleEdit.KeyDown += (sender, e) =>
            {
                // Prevent tilde from being processed..
                if (e.Key == Keys.OemTilde)
                {
                    e.Handled = true;
                }

                // Force escape to remove focus from the console..
                if (e.Key == Keys.Escape)
                {
                    consoleEdit.Focused = false;
                    e.Handled           = true;
                }
            };
            consoleEdit.KeyPress += (sender, e) =>
            {
                if (e.Key == Keys.OemTilde)
                {
                    e.Handled = true;
                }
            };
            consoleEdit.KeyUp += (sender, e) =>
            {
                if (e.Key == Keys.OemTilde)
                {
                    e.Handled = true;
                }
            };
            consoleEdit.TextChanged += (sender, e) =>
            {
                consoleEdit.Suspended = true;
                consoleEdit.Text      = consoleEdit.Text.Replace("`", "");
                consoleEdit.Suspended = false;
                e.Handled             = true;
            };
            consoleEdit.FocusGained += (sender, e) => Terraria.SetMainField("chatMode", false);
            consoleEdit.FocusLost   += (sender, e) => Terraria.SetMainField("chatMode", false);

            // Subscribe to the API console message event..
            DetoxAPI.Console.PrintConsoleMessage += (sender, e) => this.LogConsoleMessage(e);

            // Register some basic console commands..
            DetoxAPI.ConsoleCommands.AddCommnd(new List <string> {
                "help", "info", "h", "?"
            }, "Prints a list of registered console commands.", OnHelpCommand);
            DetoxAPI.ConsoleCommands.AddCommnd(new List <string> {
                "exit", "close", "terminate"
            }, "Exits Terraria immediately.", args => System.Windows.Forms.Application.Exit());
            DetoxAPI.ConsoleCommands.AddCommnd(new List <string> {
                "plugin", "extension", "p"
            }, "Handles a plugin command.", OnPluginCommand);
        }
Esempio n. 34
0
 public Main(Terraria.Main game)
     : base(game)
 {
     Order = -1;
 }
            public void Apply(Terraria.Player player)
            {
                player.difficulty = Difficulty;
                player.name = Name;

                player.skinVariant = SkinVariant;
                player.hair = Hair;
                player.hairDye = HairDye;
                player.hideVisual = HideVisual;
                player.hideMisc = HideMisc;

                player.hairColor = HairColor;
                player.skinColor = SkinColor;
                player.eyeColor = EyeColor;
                player.shirtColor = ShirtColor;
                player.underShirtColor = UnderShirtColor;
                player.pantsColor = PantsColor;
                player.shoeColor = ShoeColor;
                player.extraAccessory = ExtraAccessory;

                Netplay.Clients[player.whoAmI].Name = Name;
            }
 public TShockController(Terraria.Main game)
     : base(game)
 {
 }
        /// <summary>
        /// Teleports a player to another player
        /// </summary>
        /// <param name="target"></param>
        /// <param name="style"></param>
        public void Teleport(Terraria.Player target, int style = 0)
        {
            if (this is Terraria.Player)
            {
                var plr = (Terraria.Player)this;

                Callbacks.NetplayCallback.CheckSection(plr.whoAmI, target.position);
                plr.Teleport(target.position, style);
                Terraria.NetMessage.SendData((int)Packet.TELEPORT, -1, -1, "", 0, plr.whoAmI, target.position.X, target.position.Y, 3);
            }
        }
Esempio n. 38
0
        private void save_Click(object sender, EventArgs e)
        {
            if (!File.Exists(terrariaPath.Text))
            {
                MessageBox.Show("Terraria path needs to point at a valid executable.", Program.AssemblyName + " :: Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (!Utils.IsProcessElevated && plugins.Checked && !steamFixEnabled.Checked)
            {
                MessageBox.Show("Warning, your account does not have elevated administrator privileges. After patching, you might need to run Steam with elevated administrator privileges before running Terraria.", Program.AssemblyName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            CheckInstallationFolder();

            saveFileDialog.InitialDirectory = Path.GetDirectoryName(terrariaPath.Text);
            saveFileDialog.FileName         = "Terraria.exe";

            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                var original = terrariaPath.Text;

                if (File.Exists(saveFileDialog.FileName + ".bak"))
                {
                    var warning = "";
                    try
                    {
                        var versionCurrent = IL.GetAssemblyVersion(saveFileDialog.FileName);
                        var versionBackup  = IL.GetAssemblyVersion(saveFileDialog.FileName + ".bak");
                        if (versionCurrent != versionBackup)
                        {
                            warning = Environment.NewLine + Environment.NewLine + "WARNING: Your Terraria.exe is version " + versionCurrent + " and your Terraria.exe.bak is version " + versionBackup +
                                      ".";
                            if (versionCurrent > versionBackup)
                            {
                                warning += " It is not recommended to restore a backup of an older version of Terraria!";
                            }
                        }
                    }
                    catch
                    { }

                    if (MessageBox.Show("Would you like to restore your backup before patching?" + warning, Program.AssemblyName, MessageBoxButtons.YesNo, string.IsNullOrEmpty(warning) ? MessageBoxIcon.Question : MessageBoxIcon.Warning) == DialogResult.Yes)
                    {
                        File.Delete(saveFileDialog.FileName);
                        File.Move(saveFileDialog.FileName + ".bak", saveFileDialog.FileName);
                    }
                }

                if (File.Exists(saveFileDialog.FileName))
                {
                    if (MessageBox.Show("Would you like to backup the existing file?", Program.AssemblyName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        File.Copy(saveFileDialog.FileName, saveFileDialog.FileName + ".bak", true);
                    }
                }

                var buffValues = (from Buff buff in buffs.Where(buff => buff.Active) select buff.Index).ToList();
                var details    = new TerrariaDetails()
                {
                    InfiniteCloudJumps     = infiniteCloudJumps.Checked,
                    FunctionalSocialSlots  = functionalSocialSlots.Checked,
                    VampiricHealing        = (float)vampiricKnivesHealingRate.Value,
                    SpectreHealing         = (float)spectreHealingRate.Value,
                    FixedPrefixes          = fixedPrefixes.Checked,
                    AccessoryPrefix        = SetAccessoryPrefixValue(),
                    DisplayTime            = timeEnabled.Checked,
                    PermanentBuffs         = buffValues,
                    PermanentWings         = permanentWings.Enabled && permanentWings.Checked,
                    OneHitKill             = oneHitKill.Checked,
                    InfiniteAmmo           = infiniteAmmo.Checked,
                    RemoveDrowning         = removeDrowning.Checked,
                    RemoveDiscordBuff      = removeRodBuffEnabled.Checked,
                    RemoveManaCost         = removeManaCosts.Checked,
                    RemovePotionSickness   = removePotionSickness.Checked,
                    RemoveAnglerQuestLimit = removeAnglerQuestLimit.Checked,
                    MaxCraftingRange       = maxCraftingRange.Checked,
                    SpawnRateVoodoo        = (int)spawnRateVoodoo.Value,
                    SteamFix = steamFixEnabled.Enabled && steamFixEnabled.Checked,
                    Plugins  = plugins.Checked,
                };
                try
                {
                    Terraria.Patch(original, saveFileDialog.FileName, details);

                    if (details.Plugins)
                    {
                        var targetFolder = Path.GetDirectoryName(saveFileDialog.FileName);
                        foreach (var t in new[] { "PluginLoader.XNA.dll", "PluginLoader.FNA.dll" })
                        {
                            var target = $"{targetFolder}\\{t}";

                            var pluginLoaderInfo = new FileInfo(target);
                            while (Utils.IsFileLocked(pluginLoaderInfo))
                            {
                                var result = MessageBox.Show(target + " is in use. Please close Terraria then hit OK.", Program.AssemblyName, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                                if (result == DialogResult.Cancel)
                                {
                                    return;
                                }
                            }

                            File.Copy(t, target, true);
                        }

                        if (!Directory.Exists(@".\Plugins"))
                        {
                            MessageBox.Show("Plugins folder is missing from TerrariaPatcher folder. Please re-download.", Program.AssemblyName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                        else if (!Directory.Exists(@".\Plugins\Shared"))
                        {
                            MessageBox.Show(@"Plugins\Shared folder is missing from TerrariaPatcher folder. Please re-download.", Program.AssemblyName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                        else
                        {
                            new CopyPlugins(targetFolder).ShowDialog();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Program.ShowErrorMessage("An error occurred, you possibly have already patched this exe or it is an incompatible version.\n\n" + ex.ToString());
                }

                MessageBox.Show("Done.", Program.AssemblyName);
            }
        }
Esempio n. 39
0
 public virtual void Kill(Terraria.Projectile projectile, int timeLeft)
 {
     projectile.CloneDefaults(ProjectileID.Shuriken);
 }
Esempio n. 40
0
        /// <summary>
        /// Adds damage done by a player to an NPC slot.  When the NPC dies the rewards for it will fill out.
        /// </summary>
        protected void AddNPCDamage(Terraria.NPC NPC, Terraria.Player Player, int Damage, bool crit = false)
        {
            List<PlayerDamage> damageList = null;
            PlayerDamage playerDamage = null;
            double dmg;

            if (Player == null || NPC.active == false || NPC.life <= 0) {
                return;
            }

            lock (__dictionaryMutex) {
                if (DamageDictionary.ContainsKey(NPC)) {
                    damageList = DamageDictionary[NPC];
                } else {
                    damageList = new List<PlayerDamage>(1);
                    DamageDictionary.Add(NPC, damageList);
                }
            }

            lock (__NPCDamageMutex) {
                if ((playerDamage = damageList.FirstOrDefault(i => i.Player == Player)) == null) {
                    playerDamage = new PlayerDamage() { Player = Player };
                    damageList.Add(playerDamage);
                }

                if ((dmg = (crit ? 2 : 1) * Main.CalculateDamage(Damage, NPC.ichor ? NPC.defense - 20 : NPC.defense)) > NPC.life) {
                    dmg = NPC.life;
                }
            }

            playerDamage.Damage += dmg;
        }