예제 #1
0
        public override void Update(Player player, ref int buffIndex)
        {
            ExamplePlayer p = player.GetModPlayer <ExamplePlayer>();

            // We use blockyAccessoryPrevious here instead of blockyAccessory because UpdateBuffs happens before UpdateEquips but after ResetEffects.
            if (p.HoodKeyPressed == true && p.ShamanAccessoryPrevious)
            {
                p.ShamanPower = true;
            }
            else
            {
                player.DelBuff(buffIndex);
                buffIndex--;
            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            while (true)
            {
                Console.Clear();
                var mediator = new Mediator();

                var player1 = new ExamplePlayer(Color.Red, 600, 1);
                var player2 = new ExamplePlayer(Color.Yellow, 600, 1);

                mediator.AddPlayer(player1);
                mediator.AddPlayer(player2);
                mediator.StartGame();
                Console.ReadLine();
            }
        }
예제 #3
0
        public override void Update(Player player, ref int buffIndex)
        {
            player.buffTime[buffIndex] = 18000;
            ExamplePlayer modPlayer = (ExamplePlayer)player.GetModPlayer(mod, "ExamplePlayer");

            modPlayer.examplePet = true;
            bool petProjectileNotSpawned = true;

            if (player.ownedProjectileCounts[mod.ProjectileType("ExamplePet")] > 0)
            {
                petProjectileNotSpawned = false;
            }
            if (petProjectileNotSpawned && player.whoAmI == Main.myPlayer)
            {
                Projectile.NewProjectile(player.position.X + (float)(player.width / 2), player.position.Y + (float)(player.height / 2), 0f, 0f, mod.ProjectileType("ExamplePet"), 0, 0f, player.whoAmI, 0f, 0f);
            }
        }
        public override void AI()
        {
            Player        player    = Main.player[projectile.owner];
            ExamplePlayer modPlayer = player.GetModPlayer <ExamplePlayer>();

            if (player.dead)
            {
                modPlayer.KaozuWisp = false;
            }
            if (modPlayer.KaozuWisp)
            {
                ;
            }
            {
                projectile.timeLeft = 2;
            }
        }
예제 #5
0
        public override void AI()
        {
            if (projectile.localAI[0] == 0f)
            {
                if (projectile.ai[0] == 1)
                {
                    projectile.coldDamage = true;
                }
                if (projectile.ai[0] == 3)
                {
                    projectile.damage = (int)(1.2f * projectile.damage);
                }
                projectile.Name       = GetName();
                projectile.localAI[0] = 1f;
            }
            Player player = Main.player[projectile.owner];

            if (!player.active || player.dead)
            {
                projectile.Kill();
                return;
            }
            ExamplePlayer modPlayer = player.GetModPlayer <ExamplePlayer>();

            if (modPlayer.elementShields <= projectile.ai[0])
            {
                projectile.Kill();
                return;
            }
            projectile.timeLeft = 2;
            projectile.Center   = player.Center;
            if (projectile.ai[0] > 0f)
            {
                float offset   = (projectile.ai[0] - 1f) / (modPlayer.elementShields - 1);
                float rotation = modPlayer.elementShieldPos / 300f + offset;
                rotation             = rotation % 1f * 2f * (float)Math.PI;
                projectile.position += 160f * new Vector2((float)Math.Cos(rotation), (float)Math.Sin(rotation));
                projectile.rotation  = -rotation;
            }
            LightColor();
            projectile.frame  = (int)projectile.ai[0];
            projectile.ai[1] += 1f;
            projectile.ai[1] %= 300f;
            projectile.alpha  = 75 + (int)(50 * Math.Sin(projectile.ai[1] * 2f * (float)Math.PI / 300f));
        }
예제 #6
0
        public override void Update(Player player, ref int buffIndex)
        {
            ExamplePlayer p = player.GetModPlayer <ExamplePlayer>();

            // We use blockyAccessoryPrevious here instead of blockyAccessory because UpdateBuffs happens before UpdateEquips but after ResetEffects.
            if (p.HoodKeyPressed == true && p.MageAccessoryPrevious)
            {
                p.MagePower = true;
            }
            else
            {
                player.DelBuff(buffIndex);
                buffIndex--;
            }
            if (p.Mage == true && p.HoodKeyPressed == false)
            {
                player.manaRegenBonus += 5;
            }
            if (p.Mage == true && p.HoodKeyPressed == true)
            {
                if (player.manaRegenBuff && player.manaRegenDelay > 20)
                {
                    player.manaRegenDelay = 20;
                }
                if (player.manaRegenDelay <= 0)
                {
                    player.manaRegenDelay = 0;
                    player.manaRegen      = player.statManaMax2 / 7 + 1 + player.manaRegenBonus;
                    if ((player.velocity.X == 0f && player.velocity.Y == 0f) || player.grappling[0] >= 0 || player.manaRegenBuff)
                    {
                        player.manaRegen += player.statManaMax2 / 2;
                    }
                    float num2 = (float)player.statMana / (float)player.statManaMax2 * 0.8f + 0.2f;
                    if (player.manaRegenBuff)
                    {
                        num2 = 1f;
                    }
                    player.manaRegen = (int)((double)((float)player.manaRegen * num2) * 1.15);
                }
                else
                {
                    player.manaRegen = 0;
                }
            }
        }
        public override void Update(Player player, ref int buffIndex)
        {
            ExamplePlayer examplePlayer = player.GetModPlayer <ExamplePlayer>(mod);

            if (player.ownedProjectileCounts[mod.ProjectileType("Plantemini")] > 0)
            {
                examplePlayer.summonPlantemini = true;
            }
            if (!examplePlayer.summonPlantemini)
            {
                player.DelBuff(buffIndex);
                buffIndex--;
            }
            else
            {
                player.buffTime[buffIndex] = 18000;
            }
        }
예제 #8
0
        public override void Update(Player player, ref int buffIndex)
        {
            ExamplePlayer modPlayer = player.GetModPlayer <ExamplePlayer>(mod);

            if (player.ownedProjectileCounts[mod.ProjectileType("PurityWisp")] > 0)
            {
                modPlayer.purityMinion = true;
            }
            if (!modPlayer.purityMinion)
            {
                player.DelBuff(buffIndex);
                buffIndex--;
            }
            else
            {
                player.buffTime[buffIndex] = 18000;
            }
        }
예제 #9
0
    public IEnumerator BasicPickupToggling()
    {
        TestUtil.TestScene scene = new TestUtil.TestScene("ExamplePlayerTest");
        yield return(scene.LoadAndWait());

        ExamplePlayer   player = scene.FindRootComponent <ExamplePlayer>("Player");
        Pill            pill   = scene.FindRootComponent <Pill>("Pill");
        TestPlayerInput input  = scene.FindRootComponent <TestPlayerInput>("Player");

        Assert.IsFalse(pill.IsPickedUp());
        input.TriggerActionForNextFrame();
        yield return(null);

        Assert.IsTrue(pill.IsPickedUp());
        input.TriggerActionForNextFrame();
        yield return(null);

        Assert.IsFalse(pill.IsPickedUp());
    }
예제 #10
0
        public override void Update(Player player, ref int buffIndex)
        {
            ExamplePlayer modPlayer = player.GetModPlayer <ExamplePlayer>();

            if (player.ownedProjectileCounts[ModContent.ProjectileType <Projectiles.Minions.ExampleHoveringMinion>()] > 0)              //if the ExampleHoveringMinion projectile is owned by the player
            {
                modPlayer.exampleHoveringMinion = true;
            }

            if (!modPlayer.exampleHoveringMinion)
            {
                player.DelBuff(buffIndex);                 //if the exampleHoveringMinion was despawned, the buff is canceled
                buffIndex--;
            }
            else
            {
                player.buffTime[buffIndex] = 18000;                 //keeps the buff active while the minion exists
            }
        }
예제 #11
0
 public override bool UseItem(Item item, Player player)
 {
     if (item.healLife > 0)
     {
         ExamplePlayer modPlayer = (ExamplePlayer)player.GetModPlayer(mod, "ExamplePlayer");
         if (modPlayer.badHeal)
         {
             int heal   = item.healLife;
             int damage = player.statLifeMax2 - player.statLife;
             if (heal > damage)
             {
                 heal = damage;
             }
             if (heal > 0)
             {
                 player.AddBuff(mod.BuffType("Undead2"), 2 * heal, false);
             }
         }
     }
     return(base.UseItem(item, player));
 }
예제 #12
0
 public override void AI()
 {
     projectile.localAI[0] += 1f;
     if (!Main.dedServ && projectile.localAI[0] >= 180f && projectile.localAI[0] < 480f && Main.rand.Next(10) == 0)
     {
         ExamplePlayer modPlayer = Main.player[Main.myPlayer].GetModPlayer <ExamplePlayer>(mod);
         if (modPlayer.heroLives > 0)
         {
             Main.PlaySound(2, -1, -1, 14);
         }
         else
         {
             Main.PlaySound(2, (int)projectile.position.X, (int)projectile.position.Y, 14);
         }
     }
     projectile.position = NextPosition();
     if (projectile.localAI[0] >= 500f)
     {
         projectile.Kill();
     }
 }
예제 #13
0
 public override void AI()
 {
     projectile.localAI[0] += 1f;
     if (!Main.dedServ && projectile.localAI[0] >= 180f && projectile.localAI[0] < 480f && Main.rand.Next(10) == 0)
     {
         ExamplePlayer modPlayer = Main.LocalPlayer.GetModPlayer <ExamplePlayer>(mod);
         if (modPlayer.heroLives > 0)
         {
             Main.PlaySound(SoundID.Item14);
         }
         else
         {
             Main.PlaySound(SoundID.Item14, projectile.position);
         }
     }
     projectile.position = NextPosition();
     if (projectile.localAI[0] >= 500f)
     {
         projectile.Kill();
     }
 }
예제 #14
0
    public void SpawnPlayer(Vector3 position, Quaternion rotation)
    {
        if (Player == null)
        {
            Debug.LogError("Missing Player to instantiate");
            return;
        }

        if (Character == null)
        {
            Debug.LogError("Missing Character to instantiate");
            return;
        }

        GameObject    playerObject  = Instantiate(Player);
        ExamplePlayer examplePlayer = playerObject.GetComponent <ExamplePlayer>();

        GameObject characterObject = Instantiate(Character, position, rotation);
        ExampleCharacterController exampleCharacterController = characterObject.GetComponent <ExampleCharacterController>();

        examplePlayer.Character       = exampleCharacterController;
        examplePlayer.CharacterCamera = Camera.main.GetComponent <ExampleCharacterCamera>();
    }
예제 #15
0
        public override void Update()
        {
            timer += Time.deltaTime;

            if (timer > 0.2f)
            {
                timer = 0;
                if (bodyCount < bodyMax)
                {
                    BoxSpawn();
                }
                if (bodyForseCount < bodyForseMax)
                {
                    BodyForseSpawn();
                }
            }

            frameCount++;
            if (frameCount % 300 == 0)
            {
                forseTarget = new GalaxyVector3(GRand.NextInt(0, 100), GRand.NextInt(0, 100), GRand.NextInt(0, 100));
            }

            if (player == null)
            {
                player = (ExamplePlayer)entities.list.Where(x => x.prefabName == "Player").FirstOrDefault();
                if (player != null)
                {
                    debug = new NetEntitys.ExamplePlayer(this);
                    debug.Init();
                    debug.physics.Deactivate();
                }
                return;
            }
            RayTest();
        }
예제 #16
0
        public override void AI()
        {
            if (timer < 0)
            {
                projectile.alpha = -timer * 3;
            }
            else
            {
                projectile.alpha   = 0;
                projectile.hostile = true;
            }
            if (projectile.localAI[0] != 255f)
            {
                Player player = Main.player[(int)projectile.localAI[0]];
                if (!player.active || player.dead)
                {
                    projectile.localAI[0] = 255f;
                }
            }
            Vector2 center = new Vector2(projectile.ai[0], projectile.ai[1]);

            if (timer < 0 && projectile.localAI[0] != 255f)
            {
                Vector2 newCenter = Main.player[(int)projectile.localAI[0]].Center;
                projectile.position += newCenter - center;
                projectile.ai[0]     = newCenter.X;
                projectile.ai[1]     = newCenter.Y;
                center = newCenter;
            }
            float rotateSpeed = 2f * (float)Math.PI / 60f / 4f * projectile.localAI[1];

            if (timer < maxTimer)
            {
                projectile.Center = projectile.Center.RotatedBy(rotateSpeed, center);
            }
            else
            {
                Vector2 offset = projectile.Center - center;
                offset.Normalize();
                offset           *= radius * ((float)strikeTime + maxTimer - timer) / (float)strikeTime;
                projectile.Center = center + offset;
            }
            if (timer == maxTimer)
            {
                ExamplePlayer modPlayer = Main.LocalPlayer.GetModPlayer <ExamplePlayer>();
                if (modPlayer.heroLives > 0)
                {
                    Main.PlaySound(SoundID.Item12);
                }
                else
                {
                    Main.PlaySound(SoundID.Item12, projectile.position);
                }
                projectile.hostile = true;
            }
            if (timer >= maxTimer + strikeTime)
            {
                projectile.Kill();
            }
            timer++;
            projectile.rotation       += rotateSpeed * -5f * projectile.localAI[1];
            projectile.spriteDirection = projectile.localAI[1] < 0 ? -1 : 1;
            if (projectile.frame < 4)
            {
                projectile.frameCounter++;
                if (projectile.frameCounter >= 8)
                {
                    projectile.frameCounter = 0;
                    projectile.frame++;
                    projectile.frame %= 4;
                }
            }
        }
 public override void Touched(ExamplePlayer player)
 {
     player.Damage(1);
     base.Touched(player);
 }
예제 #18
0
        public override void AI()
        {
            Player        player    = Main.player[projectile.owner];
            ExamplePlayer modPlayer = player.GetModPlayer <ExamplePlayer>();

            if (!player.active)
            {
                projectile.active = false;
                return;
            }
            if (player.dead)
            {
                modPlayer.exampleLightPet = false;
            }
            if (modPlayer.exampleLightPet)
            {
                projectile.timeLeft = 2;
            }
            projectile.ai[1]++;
            if (projectile.ai[1] > 1000 && (int)projectile.ai[0] % 100 == 0)
            {
                for (int i = 0; i < Main.maxNPCs; i++)
                {
                    if (Main.npc[i].active && !Main.npc[i].friendly && player.Distance(Main.npc[i].Center) < rangeHypoteneus)
                    {
                        Vector2 vectorToEnemy = Main.npc[i].Center - projectile.Center;
                        projectile.velocity += 10f * Vector2.Normalize(vectorToEnemy);
                        projectile.ai[1]     = 0f;
                        Main.PlaySound(SoundLoader.customSoundType, -1, -1, mod.GetSoundSlot(SoundType.Custom, "Sounds/Custom/WatchOut"));
                        break;
                    }
                }
            }
            projectile.rotation += projectile.velocity.X / 20f;
            Lighting.AddLight(projectile.Center, (255 - projectile.alpha) * 0.9f / 255f, (255 - projectile.alpha) * 0.1f / 255f, (255 - projectile.alpha) * 0.3f / 255f);
            if (projectile.velocity.Length() > 1f)
            {
                projectile.velocity *= .98f;
            }
            if (projectile.velocity.Length() == 0)
            {
                projectile.velocity  = Vector2.UnitX.RotatedBy(Main.rand.NextFloat() * Math.PI * 2);
                projectile.velocity *= 2f;
            }
            projectile.ai[0]++;
            if (projectile.ai[0] < fadeInTicks)
            {
                projectile.alpha = (int)(255 - 255 * projectile.ai[0] / fadeInTicks);
            }
            else if (projectile.ai[0] < fadeInTicks + fullBrightTicks)
            {
                projectile.alpha = 0;
                if (Main.rand.NextBool(6))
                {
                    int num145 = Dust.NewDust(projectile.position, projectile.width, projectile.height, 73, 0f, 0f, 200, default(Color), 0.8f);
                    Main.dust[num145].velocity *= 0.3f;
                }
            }
            else if (projectile.ai[0] < fadeInTicks + fullBrightTicks + fadeOutTicks)
            {
                projectile.alpha = (int)(255 * (projectile.ai[0] - fadeInTicks - fullBrightTicks) / fadeOutTicks);
            }
            else
            {
                projectile.Center = new Vector2(Main.rand.Next((int)player.Center.X - range, (int)player.Center.X + range), Main.rand.Next((int)player.Center.Y - range, (int)player.Center.Y + range));
                projectile.ai[0]  = 0;
                Vector2 vectorToPlayer = player.Center - projectile.Center;
                projectile.velocity = 2f * Vector2.Normalize(vectorToPlayer);
            }
            if (Vector2.Distance(player.Center, projectile.Center) > rangeHypoteneus)
            {
                projectile.Center = new Vector2(Main.rand.Next((int)player.Center.X - range, (int)player.Center.X + range), Main.rand.Next((int)player.Center.Y - range, (int)player.Center.Y + range));
                projectile.ai[0]  = 0;
                Vector2 vectorToPlayer = player.Center - projectile.Center;
                projectile.velocity += 2f * Vector2.Normalize(vectorToPlayer);
            }
            if ((int)projectile.ai[0] % 100 == 0)
            {
                projectile.velocity = projectile.velocity.RotatedByRandom(MathHelper.ToRadians(90));
            }
        }
예제 #19
0
        public override void Update(Player player, ref int buffIndex)
        {
            ExamplePlayer p = player.GetModPlayer <ExamplePlayer>(); //Important line because we can use it to get stuff from the ExamplePlayer class

            p.eFlamesImbue = true;                                   //this sets the bool in ExamplePlayer that detects if you have the imbue buff to true.
        }
 public virtual void Touched(ExamplePlayer player)
 {
     Destroy(gameObject);
 }
예제 #21
0
 ////////////////////////////////////////////
 //Hint Mechanism
 //This allows the factory to serve up a new
 //hint set for the player to configure
 public override CDLLHints getHints()
 {
     return(ExamplePlayer.getHints());
 }
예제 #22
0
        public void Hoods(NPC n)
        {
            ExamplePlayer p            = Main.LocalPlayer.GetModPlayer <ExamplePlayer>(mod);
            int           effectLength = Main.rand.Next(300, 600);

            if (p.pyro == true && p.HoodKeyPressed == false)
            {
                n.AddBuff(BuffID.OnFire, effectLength);
            }
            if (p.pyro == true && p.HoodKeyPressed == true)
            {
                n.AddBuff(mod.BuffType("Hellfire"), effectLength);
            }
            if (p.dPyro == true && p.HoodKeyPressed == false)
            {
                n.AddBuff(BuffID.CursedInferno, effectLength);
            }
            if (p.dPyro == true && p.HoodKeyPressed == true)
            {
                n.AddBuff(mod.BuffType("CursedFire"), effectLength);
            }
            if (p.Transmuter == true && p.HoodKeyPressed == false)
            {
                n.AddBuff(BuffID.Midas, effectLength);
            }
            if (p.Transmuter == true && p.HoodKeyPressed == true)
            {
                n.AddBuff(mod.BuffType("GildedCurse"), 60);
            }
            if (p.Invoker == true && p.HoodKeyPressed == false)
            {
                n.AddBuff(BuffID.Ichor, effectLength);
            }
            if (p.Invoker == true && p.HoodKeyPressed == true)
            {
                n.AddBuff(mod.BuffType("IchorUproar"), effectLength);
            }
            if (p.Technomancer == true && p.HoodKeyPressed == false)
            {
                n.AddBuff(BuffID.Confused, effectLength);
            }
            if (p.Technomancer == true && p.HoodKeyPressed == true)
            {
                Random random = new Random();
                int    ran1   = random.Next(-10, 10);
                int    ran2   = random.Next(1, 6);
                Projectile.NewProjectile(n.position.X, n.position.Y, ran1, ran2, mod.ProjectileType("NaniteProjectile"), 15, projectile.knockBack, projectile.owner); //Creates a new Projectile
            }
            if (p.Party == true && p.HoodKeyPressed == false)
            {
                Projectile.NewProjectile(n.position.X, n.position.Y, 0, 0, 289, 0, 8, projectile.owner); //Creates a new Projectile
            }
            if (p.Party == true && p.HoodKeyPressed == true)
            {
                n.AddBuff(mod.BuffType("PartyBuff"), effectLength);
                //Projectile.NewProjectile(n.position.X, n.position.Y, 0, 0, 289, 0, 8, projectile.owner); //Creates a new Projectile
            }
            if (p.Shaman == true && p.HoodKeyPressed == false)
            {
                n.AddBuff(BuffID.Poisoned, effectLength);
            }
            if (p.Shaman == true && p.HoodKeyPressed == true)
            {
                n.AddBuff(mod.BuffType("PenetratingPoison"), effectLength);
            }
            if (p.WitchDoctor == true && p.HoodKeyPressed == false)
            {
                n.AddBuff(BuffID.Venom, effectLength);
            }
            if (p.WitchDoctor == true && p.HoodKeyPressed == true)
            {
                Random random = new Random();
                int    ran1   = random.Next(0, 5);
                if (ran1 == 0)
                {
                    n.AddBuff(BuffID.Venom, effectLength);
                }
                if (ran1 == 1)
                {
                    n.AddBuff(BuffID.Confused, effectLength);
                }
                if (ran1 == 2)
                {
                    n.AddBuff(BuffID.ShadowFlame, effectLength);
                }
                if (ran1 == 3 || ran1 == 4)
                {
                    n.AddBuff(BuffID.DryadsWardDebuff, effectLength);
                }
            }
        }