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)); }
public override void Update(Terraria.Player player, SkillData data) { if (data.Time >= 45 * 60) { data.EndUse(); } }
public override void Update(Terraria.Player player, SkillData data) { if (data.GetFloat(DamageStackVar) > 0) { data.ChangeFloat(DamageStackVar, 1f - (0.1f * (data.Level * 0.5f))); } }
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); }
public override void UpdateAccessory(Terraria.Player player, bool hideVisual) { player.jumpBoost = true; player.doubleJumpFart = true; player.maxFallSpeed = 75; player.noFallDmg = true; player.slippy = true; }
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); }
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; } }
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)); } }
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); }
public override void UpdateStatus(Terraria.Player player, SkillData data) { if (FlintlockTriggered(player)) { player.rangedDamage += 0.08f * data.Level; player.rangedCrit += 8; } }
public override void HoldItem(Player player) { if (timeLeft != 0) { timeLeft--; } base.HoldItem(player); }
public override void UpdateStatus(Terraria.Player player, SkillData data) { player.minionDamage += 0.02f * data.Level; if (data.Level > 5) { player.maxMinions++; } }
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; }
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); }
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); }
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(); } }
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 !)); }
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); }
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); }