public void ReceivePacket_EventCanceled()
        {
            // Clear out the password so we know it's empty.
            Terraria.Netplay.Clients[5] = new Terraria.RemoteClient {
                Id = 5
            };
            Terraria.Netplay.ServerPassword = string.Empty;

            var events         = Mock.Of <IEventManager>();
            var log            = Mock.Of <ILogger>();
            var terrariaPlayer = new Terraria.Player {
                whoAmI = 5
            };
            var player = new OrionPlayer(5, terrariaPlayer, events, log);

            Mock.Get(events)
            .Setup(em => em.Raise(It.IsAny <PacketReceiveEvent <ClientConnect> >(), log))
            .Callback <PacketReceiveEvent <ClientConnect>, ILogger>((evt, log) => evt.Cancel());

            var packet = new ClientConnect {
                Version = "Terraria" + Terraria.Main.curRelease
            };

            player.ReceivePacket(packet);

            Assert.Equal(0, Terraria.Netplay.Clients[5].State);

            Mock.Get(events).VerifyAll();
        }
        public static Character AddCharacter(this IDbConnection ctx, int playerId, Terraria.Player player)
        {
            Character chr = new Character()
            {
                PlayerId        = playerId,
                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.EncodeColorAsInt32(player.hairColor),
                SkinColor       = DataEncoding.EncodeColorAsInt32(player.skinColor),
                EyeColor        = DataEncoding.EncodeColorAsInt32(player.eyeColor),
                ShirtColor      = DataEncoding.EncodeColorAsInt32(player.shirtColor),
                UnderShirtColor = DataEncoding.EncodeColorAsInt32(player.underShirtColor),
                PantsColor      = DataEncoding.EncodeColorAsInt32(player.pantsColor),
                ShoeColor       = DataEncoding.EncodeColorAsInt32(player.shoeColor),
                AnglerQuests    = player.anglerQuestsFinished
            };

            chr.Id = ctx.Insert(chr);

            return(chr);
        }
        public static void PlayerCtor_ExpandProjectileArrays(Terraria.Player __instance)
        {
            // The specially named __instance parameter is automatically filled in by Harmony to reference the Player instance that is calling this method.

            // Expand the ownedProjectileCounts array to reach our custom projectile's ID
            Helper_ExpandArray(ref __instance.ownedProjectileCounts, ProjectileID, 0);
        }
        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 override bool CanUseItem(Terraria.Player player)
 {
     item.useStyle     = ItemUseStyleID.SwingThrow;
     item.noUseGraphic = true;
     item.noMelee      = true;
     item.useTime      = 60;
     item.useAnimation = 60;
     item.shootSpeed   = 12;
     item.shoot        = mod.ProjectileType("FirebaozhuProjectile");
     item.damage       = 44;
     if (player.altFunctionUse == 2)
     {
         for (int i = 0; i < 1000; ++i)
         {
             if (Terraria.Main.projectile[i].active && Terraria.Main.projectile[i].owner == Terraria.Main.myPlayer && Terraria.Main.projectile[i].type == item.shoot)
             {
                 return(false);
             }
         }
         return(true);
     }
     else
     {
         item.useStyle     = ItemUseStyleID.SwingThrow;
         item.useTime      = 14;
         item.noUseGraphic = true;
         item.noMelee      = true;
         item.useAnimation = 14;
         item.damage       = 23;
         item.shootSpeed   = 6;
         item.shoot        = mod.ProjectileType("FirebaozhuProjectile");
     }
     return(base.CanUseItem(player));
 }
Exemple #6
0
 public override void Update(Terraria.Player player, SkillData data)
 {
     if (data.Time >= 45 * 60)
     {
         data.EndUse();
     }
 }
Exemple #7
0
 public override void Update(Terraria.Player player, SkillData data)
 {
     if (data.GetFloat(DamageStackVar) > 0)
     {
         data.ChangeFloat(DamageStackVar, 1f - (0.1f * (data.Level * 0.5f)));
     }
 }
Exemple #8
0
 public override void UpdateAnimation(Terraria.Player player, SkillData data)
 {
     if (FlintlockTriggered(player) && player.itemAnimation > 0)
     {
         player.legFrame.Y = player.legFrame.Height * FlintlockFrame;
     }
 }
        public void SendPacket_NotConnected()
        {
            Terraria.Netplay.Clients[5] = new Terraria.RemoteClient
            {
                Id     = 5,
                Socket = Mock.Of <Terraria.Net.Sockets.ISocket>(s => !s.IsConnected())
            };

            var events         = Mock.Of <IEventManager>();
            var log            = Mock.Of <ILogger>();
            var terrariaPlayer = new Terraria.Player {
                whoAmI = 5
            };
            var player = new OrionPlayer(5, terrariaPlayer, events, log);

            Mock.Get(events)
            .Setup(em => em.Raise(It.IsAny <PacketSendEvent <TestPacket> >(), log));

            player.SendPacket(new TestPacket {
                Value = 100
            });

            Mock.Get(events)
            .Verify(em => em.Raise(It.IsAny <PacketSendEvent <TestPacket> >(), log), Times.Never);
        }
Exemple #10
0
 public override void UpdateAccessory(Terraria.Player player, bool hideVisual)
 {
     player.jumpBoost      = true;
     player.doubleJumpFart = true;
     player.maxFallSpeed   = 75;
     player.noFallDmg      = true;
     player.slippy         = true;
 }
Exemple #11
0
 public override bool BeforeShooting(Terraria.Player player, SkillData data, Terraria.Item weapon, ref int type, ref int damage, ref float knockback, ref Microsoft.Xna.Framework.Vector2 Position, ref float SpeedX, ref float SpeedY)
 {
     if (weapon.ammo == Terraria.ID.AmmoID.Bullet)
     {
         type = Terraria.ID.ProjectileID.BulletHighVelocity;
     }
     return(true);
 }
Exemple #12
0
 public override void UpdateStatus(Terraria.Player player, SkillData data)
 {
     if (player.HeldItem.axe > 0)
     {
         player.meleeDamage += 0.02f * player.HeldItem.axe * 0.01f;
         player.meleeCrit   += 6;
     }
 }
Exemple #13
0
 public override void UpdateStatus(Terraria.Player player, SkillData data)
 {
     player.statLifeMax2 += (int)(player.statLifeMax2 * 0.04f * data.Level);
     if (data.Level >= 6)
     {
         player.statDefense -= (int)(player.statDefense * ((data.Level - 5) * 0.02f));
     }
 }
Exemple #14
0
 public override bool BeforeShooting(Terraria.Player player, SkillData data, Terraria.Item weapon, ref int type, ref int damage, ref float knockback, ref Microsoft.Xna.Framework.Vector2 Position, ref float SpeedX, ref float SpeedY)
 {
     if (FlintlockTriggered(player))
     {
         knockback *= 1.15f;
     }
     return(true);
 }
Exemple #15
0
 public override void UpdateStatus(Terraria.Player player, SkillData data)
 {
     if (FlintlockTriggered(player))
     {
         player.rangedDamage += 0.08f * data.Level;
         player.rangedCrit   += 8;
     }
 }
Exemple #16
0
 public override void HoldItem(Player player)
 {
     if (timeLeft != 0)
     {
         timeLeft--;
     }
     base.HoldItem(player);
 }
Exemple #17
0
 public override void UpdateStatus(Terraria.Player player, SkillData data)
 {
     player.minionDamage += 0.02f * data.Level;
     if (data.Level > 5)
     {
         player.maxMinions++;
     }
 }
Exemple #18
0
 public override void VerticalWingSpeeds(Terraria.Player player, ref float ascentWhenFalling, ref float ascentWhenRising, ref float maxCanAscendMultiplier, ref float maxAscentMultiplier, ref float constantAscend)
 {
     ascentWhenFalling      = 0.45f;
     ascentWhenRising       = 0.05f;
     maxCanAscendMultiplier = 0.5f;
     maxAscentMultiplier    = 1f;
     constantAscend         = 0.035f;
 }
Exemple #19
0
 public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage,
                            ref float knockBack)
 {
     Projectile.NewProjectile(position, new Vector2(speedX, speedY),
                              ModContent.ProjectileType <SmallExplosiveProjectile>(), item.damage, item.knockBack); //ModContent.ProjectileType<MagicBombProjectile>()
     item.damage = 100;
     return(false);
 }
Exemple #20
0
 public override bool BeforeShooting(Terraria.Player player, SkillData data, Terraria.Item weapon, ref int type, ref int damage, ref float knockback, ref Microsoft.Xna.Framework.Vector2 Position, ref float SpeedX, ref float SpeedY)
 {
     if (type == Terraria.ID.ProjectileID.WoodenArrowFriendly)
     {
         type = Terraria.ID.ProjectileID.FireArrow;
     }
     return(true);
 }
Exemple #21
0
 public override void ModifyHitNPCWithProj(Terraria.Player player, SkillData data, Terraria.Projectile proj, Terraria.NPC target, ref int damage, ref float knockback, ref bool crit, ref int hitDirection)
 {
     if (target.velocity.Y != 0 && proj.type == Terraria.ID.ProjectileID.BulletHighVelocity)
     {
         damage     = (int)(damage * (1.6f + 0.2f * data.Level));
         knockback += 2f;
         data.EndUse();
     }
 }
Exemple #22
0
        public override void UpdateStatus(Terraria.Player player, SkillData data)
        {
            float DamageStack = data.GetFloat(DamageStackVar) / player.statLifeMax2;

            if (DamageStack > 0)
            {
                player.meleeDamage += DamageStack;
            }
        }
        public void Inventory_Get_Count_Get()
        {
            var events         = Mock.Of <IEventManager>();
            var log            = Mock.Of <ILogger>();
            var terrariaPlayer = new Terraria.Player();
            var player         = new OrionPlayer(terrariaPlayer, events, log);

            Assert.Equal(260, player.Inventory.Count);
        }
        public void Inventory_Get_Item_GetIndexOutOfRange_ThrowsIndexOutOfRangeException(int index)
        {
            var events         = Mock.Of <IEventManager>();
            var log            = Mock.Of <ILogger>();
            var terrariaPlayer = new Terraria.Player();
            var player         = new OrionPlayer(terrariaPlayer, events, log);

            Assert.Throws <IndexOutOfRangeException>(() => player.Inventory[index]);
        }
        public void SendPacket_NullPacket_ThrowsArgumentNullException()
        {
            var events         = Mock.Of <IEventManager>();
            var log            = Mock.Of <ILogger>();
            var terrariaPlayer = new Terraria.Player();
            var player         = new OrionPlayer(terrariaPlayer, events, log);

            Assert.Throws <ArgumentNullException>(() => player.SendPacket <IPacket>(null !));
        }
Exemple #26
0
        public void Difficulty_Set()
        {
            var terrariaPlayer = new Terraria.Player();
            var character      = new OrionCharacter(terrariaPlayer);

            character.Difficulty = CharacterDifficulty.Journey;

            Assert.Equal(CharacterDifficulty.Journey, (CharacterDifficulty)terrariaPlayer.difficulty);
        }
Exemple #27
0
        public void Difficulty_Get()
        {
            var terrariaPlayer = new Terraria.Player {
                difficulty = (byte)CharacterDifficulty.Journey
            };
            var character = new OrionCharacter(terrariaPlayer);

            Assert.Equal(CharacterDifficulty.Journey, character.Difficulty);
        }
        public void Character_Get()
        {
            var events         = Mock.Of <IEventManager>();
            var log            = Mock.Of <ILogger>();
            var terrariaPlayer = new Terraria.Player();
            var player         = new OrionPlayer(terrariaPlayer, events, log);

            Assert.NotNull(player.Character);
        }
        public void Name_SetNullValue_ThrowsArgumentNullException()
        {
            var events         = Mock.Of <IEventManager>();
            var log            = Mock.Of <ILogger>();
            var terrariaPlayer = new Terraria.Player();
            var player         = new OrionPlayer(terrariaPlayer, events, log);

            Assert.Throws <ArgumentNullException>(() => player.Name = null !);
        }
        private OTAPI.HookResult PreUpdateHandler(Terraria.Player terrariaPlayer, ref int playerIndex)
        {
            Debug.Assert(playerIndex >= 0 && playerIndex < Count);

            var player = this[playerIndex];
            var evt    = new PlayerTickEvent(player);

            _events.Raise(evt, _log);
            return(evt.IsCanceled ? OTAPI.HookResult.Cancel : OTAPI.HookResult.Continue);
        }