Exemplo n.º 1
0
        public override void onCollected(PlayerCharacter player)
        {
            //throw new NotImplementedException();
            Game.Door.Opened = true;

            FloatingMessage FM = new FloatingMessage(Game, "Door Unlocked!");

            FM.Text.TextColor = "#77FFFF";
            FM.Position       = new Vector2(x + 8, y - 20);
            Game.AddEntity(FM);
        }
 public PlayerCharacter(Game game) : base(game)
 {
     ChangeAni("stand");
     AddBehavior <PlatformerControls>();
     //AddBehavior(new PlatformerControls(this));
     tapTimer           = new int[Controller.Length];
     Team               = 0;
     HP                 = maxHP;
     MSG                = new FloatingMessage(game, "");
     MSG.Text.TextColor = "#FFFFFF";
     //MSG.ChangeText("hello world");
     MSG.autokill = false;
     game.AddEntity(MSG);
     MSG.RemovedOnLevelEnd = false;
     RemovedOnLevelEnd     = false;
 }
Exemplo n.º 3
0
        private void Open(PlayerCharacter player)
        {
            if (!Opened)
            {
                PlaySound("chestopen");
                Ani.CurrentFrame = 1;
                Ani.SetImage();
                Ani.Update();
                Opened = true;
                //TODO:give player a permanent upgrade, and display text above the chest telling the player what they just got
                var      M      = "";
                var      ok     = true;
                var      S      = "";
                var      color  = "#FFFFFF";
                string[] picker = null;
                while (ok)
                {
                    //var common = new string[] { "point", "point", "point", "point", "point", "point", "heart", "heart", "tripleheart", "singleorb" };
                    var common    = new string[] { "point", "point", "point", "point", "point", "point", "tripleheart" /*, "singleorb"*/ };
                    var rare      = new string[] { "attackpower", "defensepower", "mining" };
                    var legendary = new string[] { "triplejump", "cheaperblocks", "invincibility", "repeater", "movespeed" };

                    var heartTable = new string[] { "supertripleheart" };


                    var    R = Math.Random();
                    string C;
                    if (Heart)
                    {
                        C     = heartTable.Pick();
                        S     = "common";
                        color = "#FFFFFF";
                    }
                    else
                    {
                        if (picker == null || Math.Random() < 0.20)
                        {
                            //if (R < 0.60 && !Golden && !Premium)
                            var commonchance = 0.65 - (Game.level * 0.25);

                            /*if (Game.level > 5)
                             * {
                             *  commonchance *= 0.8;
                             *  if (Game.level > 10)
                             *  {
                             *      commonchance *= 0.8;
                             *  }
                             * }*/
                            if (R < commonchance && !Golden && !Premium)
                            {
                                picker = common;
                                S      = "common";
                                color  = "#FFFFFF";
                            }
                            else
                            {
                                R = Math.Random();
                                if (Premium)
                                {
                                    R += 0.04;//adds a 4% to the chance of a legendary power up.
                                }
                                if (R < 0.91)
                                {
                                    picker = rare;
                                    S      = "rare";
                                    color  = "#FFBB33";
                                }
                                else
                                {
                                    picker = legendary;
                                    S      = "legendary";
                                    color  = "#FF55FF";
                                }
                            }
                        }
                        if (true)
                        {
                            C = picker.Pick();
                        }
                        else
                        {
                            picker = legendary;
                            S      = "legendary";
                            color  = "#FF55FF";
                            C      = "movespeed";
                        }
                    }
                    ok = false;
                    CollectableItem CI;
                    switch (C)
                    {
                    case "point":
                        var P = new PointItem(Game);
                        P.Position.CopyFrom(Position);
                        P.Vspeed          = -2f;
                        P.Hspeed          = -2f;
                        P.collectionDelay = 30;
                        Game.AddEntity(P);

                        P = new PointItem(Game);
                        P.Position.CopyFrom(Position);
                        P.Vspeed          = -2f;
                        P.Hspeed          = 2f;
                        P.collectionDelay = 30;
                        Game.AddEntity(P);

                        M = "Points";

                        break;

                    case "heart":
                        if (player.HP >= player.maxHP)
                        {
                            ok = true;
                            break;
                        }
                        var H = new HealingItem(Game);
                        H.Position.CopyFrom(Position);
                        H.Vspeed          = -2f;
                        H.collectionDelay = 30;
                        Game.AddEntity(H);
                        M = "Heal";
                        break;

                    case "tripleheart":
                        if ((player.HP > player.maxHP / 3) && !Heart)
                        {
                            ok = true;
                            break;
                        }
                        var H1 = new HealingItem(Game);
                        H1.Position.CopyFrom(Position);
                        H1.Vspeed          = -2f;
                        H1.Hspeed          = -2f;
                        H1.collectionDelay = 30;
                        Game.AddEntity(H1);

                        H1 = new HealingItem(Game);
                        H1.Position.CopyFrom(Position);
                        H1.Vspeed          = -2f;
                        H1.Hspeed          = 0;
                        H1.collectionDelay = 30;
                        Game.AddEntity(H1);

                        H1 = new HealingItem(Game);
                        H1.Position.CopyFrom(Position);
                        H1.Vspeed          = -2f;
                        H1.Hspeed          = 2f;
                        H1.collectionDelay = 30;
                        Game.AddEntity(H1);
                        M = "Heal x3";
                        break;

                    case "supertripleheart":
                        if ((player.HP > player.maxHP / 3) && !Heart)
                        {
                            ok = true;
                            break;
                        }
                        H1 = new HealingItem(Game);
                        H1.Position.CopyFrom(Position);
                        H1.Vspeed          = -2f;
                        H1.Hspeed          = -2f;
                        H1.healingPower   *= 1.5f;
                        H1.collectionDelay = 30;
                        Game.AddEntity(H1);

                        H1 = new HealingItem(Game);
                        H1.Position.CopyFrom(Position);
                        H1.Vspeed          = -2f;
                        H1.Hspeed          = 0;
                        H1.healingPower   *= 1.5f;
                        H1.collectionDelay = 30;
                        Game.AddEntity(H1);

                        H1 = new HealingItem(Game);
                        H1.Position.CopyFrom(Position);
                        H1.Vspeed          = -2f;
                        H1.Hspeed          = 2f;
                        H1.healingPower   *= 1.5f;
                        H1.collectionDelay = 30;
                        Game.AddEntity(H1);
                        M = "Heal+";
                        break;

                    case "singleorb":
                        if (Game.timeRemaining > 0)
                        {
                            ok = true;
                            break;
                        }
                        CI = new Orb(Game);
                        CI.Position.CopyFrom(Position);
                        CI.Vspeed          = -2f;
                        CI.Hspeed          = -2f;
                        CI.collectionDelay = 30;
                        Game.AddEntity(CI);

                        /*CI = new Orb(Game);
                        *  CI.Position.CopyFrom(Position);
                        *  CI.Vspeed = -2f;
                        *  CI.Hspeed = 2f;
                        *  CI.collectionDelay = 30;
                        *  Game.AddEntity(CI);*/

                        M = "Orb";
                        break;

                    case "mining":
                        if (player.digpower < 2.0f)
                        {
                            player.digpower += 0.5f;
                        }
                        else
                        {
                            ok = true;
                        }
                        M = "Mining Power " + (player.digpower) + "x";
                        break;

                    case "triplejump":
                        var PC = player.GetBehavior <PlatformerControls>();
                        if (PC.maxAirJumps < 2)
                        {
                            PC.maxAirJumps = 2;
                        }
                        else
                        {
                            ok = true;
                        }
                        M = "Triple Jump";
                        break;

                    case "cheaperblocks":
                        if (player.blockprice != 3)
                        {
                            ok = true;
                            break;
                        }
                        player.blockprice = 1;
                        M = "Blocks are cheaper now";
                        break;

                    case "movespeed":
                        if (player.data.ContainsKey("movespeed"))
                        {
                            ok = true;
                            break;
                        }
                        player.data["movespeed"] = true;
                        var Plat = player.GetBehavior <PlatformerControls>();
                        Plat.maxSpeed *= 1.07f;
                        Plat.accel    *= 1.07f;
                        M              = "Movement speed+";
                        break;

                    case "invincibility":
                        if (player.invincibilitymod != 1)
                        {
                            ok = true;
                            break;
                        }
                        player.invincibilitymod = 2;
                        M = "Invincibility extended";
                        break;

                    case "attackpower":
                        player.attackpower += 1;
                        M = "Attack Power " + (int)(player.attackpower);
                        break;

                    case "defensepower":
                        player.defensepower += 1;
                        M = "Defensive Power " + (int)(player.defensepower);
                        break;

                    case "repeater":
                        if (player.totalshots > 2)
                        {
                            ok = true;
                            break;
                        }
                        player.totalshots += 1;
                        M = TupleNames[player.totalshots] + " shot";
                        break;

                    default:
                        ok = true;
                        break;
                    }
                }
                if (!ok && M != "")
                {
                    FloatingMessage FM = new FloatingMessage(Game, M);
                    FM.Text.TextColor = color;
                    //FM.Position = new Vector2(x - 8, y - 20);
                    FM.Position = new Vector2(x + 8, y - 20);
                    Game.AddEntity(FM);
                    if (S != "" && S != "common")
                    {
                        PlaySound("ok2B");
                    }
                    else
                    {
                        PlaySound("jump");
                    }
                }
            }
        }