示例#1
0
    // Start is called before the first frame update
    void Start()
    {
        playerModifiers = playerModifiersGameObject.GetComponent <PlayerModifiers>();

        foreach (GameObject LaserGun in laserGuns)
        {
            playerLaserGuns.Add(LaserGun.GetComponent <LaserGun>());
            laserGunTemplate = LaserGun.GetComponent <LaserGun>();
        }

        playerFirestormX    = firestormX.GetComponent <FirestormX>();
        playerRenderer      = GetComponent <SpriteRenderer>();
        energyStatusBar     = EnergyBar.GetComponent <UIStatusBar>();
        firestormXStatusBar = FirestormXBar.GetComponent <UIStatusBar>();
        playerStatus        = playerStatusGameObject.GetComponent <PlayerStatus>();
        upgradesDisplay     = upgradesIcons.GetComponent <UIDisplayUpgrades>();
        deathSound          = deathSoundObject.GetComponent <AudioSource>();

        newPositionDirection          = 1;
        duplicateCount                = 1;
        spawnCount                    = 0;
        constantNewPositionDifference = playerModifiers.newPositionDifference;
        pointsDisplay                 = pointsUI.GetComponent <UIDisplayNumbers>();

        PlayerCollision.onEnemyHit       += substractEnergy;
        PlayerCollision.onEnemyHit       += RemoveUpgrades;
        PlayerCollision.onEnergyCollected = RecoverEnergy;
        PlayerCollision.onRocketCollected = addCannon;
        GameManager.onRoundEnd           += disableUI;
        GameManager.onRoundEnd           += disableCollision;
        GameManager.onRoundEnd           += disableGuns;
    }
示例#2
0
        private void RingModsList_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Adjusts the informationd displayed when a different mod is slected
            PlayerModifiers mod;

            if (Enum.TryParse(nModsList.SelectedValue.ToString(), out mod))
            {
                switch (mod)
                {
                case PlayerModifiers.Health:
                    ringModsLbl.Text = "Health Modifier:";
                    break;

                case PlayerModifiers.Magic:
                    ringModsLbl.Text = "Magic Modifier:";
                    break;

                case PlayerModifiers.Speed:
                    ringModsLbl.Text = "Speed Modifier:";
                    break;
                }
                // Updates the text box value of the mod if it exsists, else place a 0 in
                ringModsTextBox.Text = PlayerModifiersDict.ContainsKey(mod) ? PlayerModifiersDict[mod].ToString() : "0";

                ringModsSaved.Text      = "Saved";
                ringModsSaved.ForeColor = Color.DarkGreen;

                lastPMod = mod;
            }
            else
            {
                nModsLbl.Text = "Error: mod not found in Enum";
            }
        }
示例#3
0
        private string GetShortItemDesc(ItemBase item)
        {
            switch (item)
            {
            case Armor i:
                return($"ARM: {i.BaseArmor}\tDUR: {i.Durability}\tARM-MODs: {(i.ArmorModifiers.Count > 0 ? "YES" : "NO")}");

            case Weapon i:
                return($"DMG: {i.BaseDamage}\tDUR: {i.Durability}\tDMG-MODs: {(i.WeaponDamageModifers.Count > 0 ? "YES" : "NO" )}");

            case Necklace i:
                PlayerModifiers mod = i.Modifiers.First(x => x.Value == i.Modifiers.Values.Max()).Key;
                return($"{ItemBase.GetModifierShorthandString(mod, i.Modifiers[mod])} + {(i.Modifiers.Count != 1 ? (i.Modifiers.Count - 1).ToString() + "P-MODs" : "")}");

            case Ring i:
                PlayerModifiers mod2 = i.Modifiers.First(x => x.Value == i.Modifiers.Values.Max()).Key;
                return($"{ItemBase.GetModifierShorthandString(mod2, i.Modifiers[mod2])} + {(i.Modifiers.Count != 1 ? (i.Modifiers.Count - 1).ToString() + "P-MODs" : "")}");

            case Resource i:
                return($"VAL: {i.Value.ToString("{0:n0}")}");

            case Consumable i:
                return(i.GetInfoString());
            }

            return("");
        }
示例#4
0
        public void zombie(IUser u)
        {
            IPlayer         p = u.GetPlayer();
            PlayerModifiers m = p.GetModifiers();

            m.SprintSpeedModifier      = Zomb_Sprint_Speed;
            m.RunSpeedModifier         = Zomb_Run_Speed;
            m.MeleeDamageDealtModifier = Zomb_Melee_Damage;
            m.MeleeForceModifier       = Zomb_Melee_Force;
            m.MaxHealth     = Zomb_Max_Health;
            m.CurrentHealth = Zomb_Max_Health;
            m.SizeModifier  = Zomb_Size;
            p.SetModifiers(m);

            // IProfile pr = u.GetProfile();
            // pr.Skin = new IProfileClothingItem("Zombie", " ");
            // pr.Accesory = null;
            // pr.Head = null;
            // pr.ChestOver = null;
            // pr.ChestUnder = null;
            // pr.Hands = null;
            // pr.Waist = null;
            // pr.Legs = null;
            // pr.Feet = null;
            // p.SetProfile(pr);
        }
示例#5
0
 static FunnymanBot_Controller()
 {
     RunningModifiers = GetInfo(BotType.Funnyman).Modifiers;
     RunningModifiers.RunSpeedModifier          = Speed.Fast;
     RunningModifiers.SprintSpeedModifier       = Speed.Fast;
     RunningModifiers.EnergyConsumptionModifier = 0;
 }
示例#6
0
 // set modifiers without changing current health and energy
 public void SetModifiers(PlayerModifiers modifiers, bool permanent = false)
 {
     modifiers.CurrentHealth = Player.GetHealth();
     modifiers.CurrentEnergy = Player.GetEnergy();
     Player.SetModifiers(modifiers);
     if (permanent)
     {
         Info.Modifiers = modifiers;
     }
 }
示例#7
0
 // Run code on map restart (or script disabled).
 public void OnShutdown()
 {
     IPlayer[] players = Game.GetPlayers();
     foreach (IPlayer plr in players)
     {
         plr.SetTeam(PlayerTeam.Independent);
         PlayerModifiers plrModifier = new PlayerModifiers(false);
         plr.SetModifiers(plrModifier);
     }
     // Game.LocalStorage.Clear();
 }
示例#8
0
            public void OnPlayerCreated()
            {
                IPlayer         pl   = User.GetPlayer();
                PlayerModifiers mods = pl.GetModifiers();

                mods.ProjectileCritChanceTakenModifier = 0;
                mods.ProjectileCritChanceDealtModifier = 0;
                mods.ProjectileDamageTakenModifier     = ProjectileDamageFactor * Armor.ProjectileDamageFactor;
                mods.ExplosionDamageTakenModifier      = ExplosionDamageFactor * Armor.ExplosionDamageFactor;
                mods.FireDamageTakenModifier           = FireDamageFactor * Armor.FireDamageFactor;
                mods.MeleeDamageTakenModifier          = MeleeDamageFactor * Armor.MeleeDamageFactor;
                mods.ImpactDamageTakenModifier         = FallDamageFactor * Armor.FallDamageFactor;
                mods.MaxHealth = 10000;
                pl.SetModifiers(mods);
            }
示例#9
0
        /// <summary>
        /// Gets the shorthand modifier string for a Player Modification
        /// </summary>
        /// <param name="mod">Player Mod</param>
        /// <param name="val">Value of the player mod</param>
        /// <returns>Shorthand string</returns>
        public static string GetModifierShorthandString(PlayerModifiers mod, int val)
        {
            switch (mod)
            {
            case PlayerModifiers.Health:
                return($"HP: {(val >= 0 ? "" : "-")}{val}");

            case PlayerModifiers.Magic:
                return($"MP: {(val >= 0 ? "" : "-")}{val}");

            case PlayerModifiers.Speed:
                return($"SP: {(val >= 0 ? "" : "-")}{val}");
            }

            return("");
        }
示例#10
0
        public void SetHaleModifiers(ref PlayerModifiers modify, int HP, float sprintSpeed, float runSpeed, float meleeForce, float meleeDamageDealt, float meleeDamageTaken)
        {
            // First the general modifiers for every HALE
            modify.MaxHealth              = HP;
            modify.CurrentHealth          = HP;
            modify.MaxEnergy              = 9999;
            modify.CurrentEnergy          = 9999;
            modify.EnergyRechargeModifier = 100;
            modify.SizeModifier           = 2f;

            // Then the HALE-specific modifiers
            modify.SprintSpeedModifier      = sprintSpeed;
            modify.RunSpeedModifier         = runSpeed;
            modify.MeleeForceModifier       = meleeForce;
            modify.MeleeDamageDealtModifier = meleeDamageDealt;
            modify.MeleeDamageTakenModifier = meleeDamageTaken;
        }
示例#11
0
        public string Convert(PlayerModifiers playerModifiers, int indentSize = 0)
        {
            if (playerModifiers == null)
            {
                return("");
            }

            var sb     = new StringBuilder();
            var indent = new string(' ', indentSize);

            sb.AppendLine(indent + "new PlayerModifiers()");
            sb.AppendLine(indent + "{");
            sb.AppendLine(indent + "    MaxHealth = " + V(playerModifiers.MaxHealth) + ",");
            sb.AppendLine(indent + "    MaxEnergy = " + V(playerModifiers.MaxEnergy) + ",");
            sb.AppendLine(indent + "    CurrentHealth = " + V(playerModifiers.CurrentHealth) + ",");
            sb.AppendLine(indent + "    CurrentEnergy = " + V(playerModifiers.CurrentEnergy) + ",");
            sb.AppendLine(indent + "    EnergyConsumptionModifier = " + V(playerModifiers.EnergyConsumptionModifier) + ",");
            sb.AppendLine(indent + "    ExplosionDamageTakenModifier = " + V(playerModifiers.ExplosionDamageTakenModifier) + ",");
            sb.AppendLine(indent + "    ProjectileDamageTakenModifier = " + V(playerModifiers.ProjectileDamageTakenModifier) + ",");
            sb.AppendLine(indent + "    ProjectileCritChanceTakenModifier = " + V(playerModifiers.ProjectileCritChanceTakenModifier) + ",");
            sb.AppendLine(indent + "    FireDamageTakenModifier = " + V(playerModifiers.FireDamageTakenModifier) + ",");
            sb.AppendLine(indent + "    MeleeDamageTakenModifier = " + V(playerModifiers.MeleeDamageTakenModifier) + ",");
            sb.AppendLine(indent + "    ImpactDamageTakenModifier = " + V(playerModifiers.ImpactDamageTakenModifier) + ",");
            sb.AppendLine(indent + "    ProjectileDamageDealtModifier = " + V(playerModifiers.ProjectileDamageDealtModifier) + ",");
            sb.AppendLine(indent + "    ProjectileCritChanceDealtModifier = " + V(playerModifiers.ProjectileCritChanceDealtModifier) + ",");
            sb.AppendLine(indent + "    MeleeDamageDealtModifier = " + V(playerModifiers.MeleeDamageDealtModifier) + ",");
            sb.AppendLine(indent + "    MeleeForceModifier = " + V(playerModifiers.MeleeForceModifier) + ",");
            sb.AppendLine(indent + "    MeleeStunImmunity = " + V(playerModifiers.MeleeStunImmunity) + ",");
            sb.AppendLine(indent + "    CanBurn = " + V(playerModifiers.CanBurn) + ",");
            sb.AppendLine(indent + "    RunSpeedModifier = " + V(playerModifiers.RunSpeedModifier) + ",");
            sb.AppendLine(indent + "    SprintSpeedModifier = " + V(playerModifiers.SprintSpeedModifier) + ",");
            sb.AppendLine(indent + "    EnergyRechargeModifier = " + V(playerModifiers.EnergyRechargeModifier) + ",");
            sb.AppendLine(indent + "    SizeModifier = " + V(playerModifiers.SizeModifier) + ",");
            sb.AppendLine(indent + "    InfiniteAmmo = " + V(playerModifiers.InfiniteAmmo) + ",");
            sb.AppendLine(indent + "    ItemDropMode = " + V(playerModifiers.ItemDropMode) + ",");
            sb.AppendLine(indent + "};");

            return(sb.ToString());
        }
示例#12
0
            public void Update()
            {
                if (!IsActive())
                {
                    return;
                }
                for (int i = 0; i < Equipment.Count; i++)
                {
                    if (Equipment[i].Id == 0)
                    {
                        Equipment.RemoveAt(i);
                        i--;
                    }
                    else
                    {
                        Equipment[i].Update(this);
                    }
                }
                IPlayer pl = null;

                if (User != null)
                {
                    pl = User.GetPlayer();
                }
                if (pl != null && (pl.RemovalInitiated || pl.IsRemoved))
                {
                    pl = null;
                }
                if (pl != null && pl.GetProfile().Name == "CPU")
                {
                    pl.Remove();
                    ActiveStatus = false;
                    return;
                }
                if (pl != null)
                {
                    Position = pl.GetWorldPosition();
                    WeaponTrackingUpdate(false);
                    var heavyWeapon = pl.CurrentPrimaryWeapon.WeaponItem;
                    if (ExtraHeavyAmmoWeapon.Contains(heavyWeapon) && pl.CurrentPrimaryWeapon.CurrentAmmo < (pl.CurrentPrimaryWeapon.MaxTotalAmmo / 2) && HasExtraHeavyAmmo)
                    {
                        pl.GiveWeaponItem(heavyWeapon);
                        HasExtraHeavyAmmo = false;
                    }
                }
                if (pl != null && Status >= 0)
                {
                    if (Status == 0)
                    {
                        StatusDisplay.SetWorldPosition(Position + new Vector2(0, 37));
                    }
                    else
                    {
                        StatusDisplay.SetWorldPosition(Position + new Vector2(0, 15));
                    }
                    pl.SetNametagVisible(InSmoke <= 0);
                    bool wasBleeding         = Bleeding;
                    IPlayerStatistics stat   = pl.Statistics;
                    float             lastHp = Hp;
                    if (ProjectileDamageTaken < stat.TotalProjectileDamageTaken)
                    {
                        float ch = stat.TotalProjectileDamageTaken - ProjectileDamageTaken;
                        ProjectileDamageTaken = stat.TotalProjectileDamageTaken;
                        //ch *= ProjectileDamageFactor * Armor.ProjectileDamageFactor;
                        if (InSmoke > 0)
                        {
                            ch *= 0.25f;
                        }
                        if (ch < Armor.MaxProjectileDamageCut && ch > Armor.MaxProjectileDamage)
                        {
                            ch = Armor.MaxProjectileDamage;
                        }
                        if (ch >= StartBleedingProjectile)
                        {
                            Bleeding = true;
                        }
                        Hp -= ch;
                        if (InSmoke <= 0)
                        {
                            BreakWeapon(false);
                        }
                    }
                    if (MeleeDamageTaken < stat.TotalMeleeDamageTaken)
                    {
                        float ch = stat.TotalMeleeDamageTaken - MeleeDamageTaken;
                        MeleeDamageTaken = stat.TotalMeleeDamageTaken;
                        //ch *= MeleeDamageFactor * Armor.MeleeDamageFactor;
                        if (ch > Armor.MaxMeleeDamage)
                        {
                            ch = Armor.MaxMeleeDamage;
                        }
                        if (ch >= StartBleedingMelee)
                        {
                            Bleeding = true;
                        }
                        Hp -= ch;
                    }
                    if (ExplosionDamageTaken < stat.TotalExplosionDamageTaken)
                    {
                        float ch = stat.TotalExplosionDamageTaken - ExplosionDamageTaken;
                        ExplosionDamageTaken = stat.TotalExplosionDamageTaken;
                        //ch *= ExplosionDamageFactor * Armor.ExplosionDamageFactor;
                        if (ch >= StartBleedingProjectile)
                        {
                            Bleeding = true;
                        }
                        Hp -= ch;
                        BreakWeapon(true);
                    }
                    if (FallDamageTaken < stat.TotalFallDamageTaken)
                    {
                        float ch = stat.TotalFallDamageTaken - FallDamageTaken;
                        FallDamageTaken = stat.TotalFallDamageTaken;
                        //ch *= FallDamageFactor * Armor.FallDamageFactor;
                        Hp -= ch;
                    }
                    if (Armor.FireProtect)
                    {
                        if (pl.IsBurning)
                        {
                            pl.ClearFire();
                        }
                    }
                    else
                    {
                        if (pl.IsBurning)
                        {
                            pl.SetMaxFire();
                        }
                        if (FireDamageTaken < stat.TotalFireDamageTaken)
                        {
                            float ch = stat.TotalFireDamageTaken - FireDamageTaken;
                            FireDamageTaken = stat.TotalFireDamageTaken;
                            //ch *= FireDamageFactor * Armor.FireDamageFactor;
                            Hp -= ch;
                        }
                    }
                    if (Bleeding)
                    {
                        if (!wasBleeding && Hp > 0)
                        {
                            GlobalGame.PlayEffect("CFTXT", pl.GetWorldPosition(), "BLEEDING");
                        }
                        if (pl.IsSprinting || pl.IsRolling || pl.IsDiving || pl.IsClimbing || pl.IsMeleeAttacking || pl.IsKicking || pl.IsJumpKicking || pl.IsJumpAttacking)
                        {
                            Hp -= HardBleeding;
                        }
                        else
                        {
                            Hp -= EasyBleeding;
                        }
                        if (JumpCount < stat.TotalJumps)
                        {
                            int ch = stat.TotalJumps - JumpCount;
                            Hp -= ch * JumpBleeding;
                        }
                        if (BleedingEffectTimer == 0)
                        {
                            Vector2 effPos = pl.GetWorldPosition();
                            effPos.Y += 6;
                            GlobalGame.PlayEffect("BLD", effPos);
                            BleedingEffectTimer = BleedingEffectPeriod;
                        }
                        if (BleedingEffectTimer > 0)
                        {
                            BleedingEffectTimer--;
                        }
                    }
                    if (IsDiving && !pl.IsDiving)
                    {
                        IsDiving = false;
                        if (DiveTime >= 45)
                        {
                            float diff = DiveHeight - pl.GetWorldPosition().Y;
                            diff -= MinDivingHeight * DivingDamageFactor * FallDamageFactor;
                            if (diff > 0)
                            {
                                Hp -= diff;
                            }
                        }
                    }
                    else if (!IsDiving && pl.IsDiving)
                    {
                        IsDiving   = true;
                        DiveTime   = 0;
                        DiveHeight = pl.GetWorldPosition().Y;
                    }
                    else if (IsDiving && pl.IsDiving)
                    {
                        DiveTime++;
                    }
                    if (IsAdrenaline)
                    {
                        float ch = (lastHp - Hp) * AdrenalineDamageFactor;
                        DelayedDamage += (lastHp - Hp) - ch;
                        Hp             = lastHp - ch;
                    }
                    else if (DelayedDamage > 0)
                    {
                        if (DamageDelaySpeed > DelayedDamage)
                        {
                            Hp           -= DelayedDamage;
                            DelayedDamage = 0;
                        }
                        else
                        {
                            Hp            -= DamageDelaySpeed;
                            DelayedDamage -= DamageDelaySpeed;
                        }
                    }
                    WeaponItem heavyWeapon = pl.CurrentPrimaryWeapon.WeaponItem;
                    if (heavyWeapon == WeaponItem.M60 || heavyWeapon == WeaponItem.GRENADE_LAUNCHER || heavyWeapon == WeaponItem.BAZOOKA || heavyWeapon == WeaponItem.SNIPER || Armor.Heavy)
                    {
                        IsSlow = true;
                    }



                    else
                    {
                        IsSlow = false;
                    }
                    if (IsSlow)
                    {
                        PlayerModifiers mods = pl.GetModifiers();
                        mods.MaxEnergy              = 0;
                        mods.MeleeStunImmunity      = 1;
                        mods.EnergyRechargeModifier = 0;
                        if (Armor.Heavy)
                        {
                            mods.SizeModifier = 1.15f;
                        }
                        pl.SetModifiers(mods);
                    }
                    if (IsSlow && ((heavyWeapon == WeaponItem.M60 || heavyWeapon == WeaponItem.GRENADE_LAUNCHER || heavyWeapon == WeaponItem.BAZOOKA || heavyWeapon == WeaponItem.SNIPER) && Armor.Heavy))
                    {
                        PlayerModifiers mods = pl.GetModifiers();
                        mods.MaxEnergy              = 0;
                        mods.MeleeStunImmunity      = 1;
                        mods.EnergyRechargeModifier = 0;
                        mods.RunSpeedModifier       = 0.5f;
                        mods.MeleeForceModifier     = 2f;
                        mods.SizeModifier           = 2.6f;

                        pl.SetModifiers(mods);
                        if (pl.IsRolling || pl.IsDiving)
                        {
                            Vector2 vel = pl.GetLinearVelocity() / 3;
                            vel.Y = 0;
                            pl.SetWorldPosition(Position - vel);
                            if (SlowEffectTimer == 0)
                            {
                                SlowEffectTimer = -1;
                            }
                        }
                        if (SlowTimer == 0 && pl.IsSprinting)
                        {
                            SlowTimer = 4;
                            if (SlowEffectTimer == 0)
                            {
                                SlowEffectTimer = -1;
                            }
                        }
                        if (SlowTimer <= 2)
                        {
                            pl.SetInputEnabled(true);
                        }
                        else
                        {
                            pl.SetInputEnabled(false);
                        }
                        if (SlowEffectTimer == -1)
                        {
                            GlobalGame.PlayEffect("CFTXT", pl.GetWorldPosition(), "TOO HEAVY");
                            SlowEffectTimer = 100;
                        }
                        if (SlowEffectTimer > 0)
                        {
                            SlowEffectTimer--;
                        }
                        if (SlowTimer > 0)
                        {
                            SlowTimer--;
                        }
                    }
                    else if (!pl.IsInputEnabled)
                    {
                        pl.SetInputEnabled(true);
                    }


                    JumpCount = stat.TotalJumps;
                    if (Status == 0)
                    {
                        if (StunTime > 0 && Status != 4)
                        {
                            Status = 4;
                            pl.Kill();
                        }
                        if (Hp > 0 && StunTime <= 0)
                        {
                            pl.SetHealth(pl.GetMaxHealth() * Hp / 100.0f);
                            //if (Hp < lastHp) pl.SetHealth(99 + GlobalRandom.Next(100) / 100.0f);
                            //else pl.SetHealth(100);
                            if (pl.IsWalking && !pl.IsManualAiming && !pl.IsClimbing && !pl.IsLedgeGrabbing && !pl.IsInMidAir && !pl.IsRolling)
                            {
                                if (CurrentEquipment < Equipment.Count)
                                {
                                    Equipment[CurrentEquipment].Use(this);
                                }
                            }
                            else if (Equipment.Count > 1 && pl.CurrentWeaponDrawn == WeaponItemType.NONE)
                            {
                                if (pl.IsMeleeAttacking || pl.IsJumpAttacking)
                                {
                                    CurrentEquipment = 0;
                                }
                                else if (pl.IsKicking || pl.IsJumpKicking)
                                {
                                    CurrentEquipment = 1;
                                }
                            }
                        }
                        else if (Hp <= 0)
                        {
                            if (!IsActive())
                            {
                                Status = -1;
                            }
                            else if (!pl.IsBurning || Armor.FireProtect)
                            {
                                int rnd = GlobalRandom.Next(0, 100);
                                Bleeding = false;
                                if (rnd < OvercomeChance)
                                {
                                    Hp     = OvercomeHealth;
                                    Status = 3;
                                }
                                else if (rnd < AliveChance)
                                {
                                    Hp     = StableHealth;
                                    Status = 2;
                                }
                                else if (rnd < DyingChance)
                                {
                                    Hp     = DyingHealth;
                                    Status = 1;
                                }
                                else
                                {
                                    Status = -1;
                                }
                                pl.Kill();
                            }
                            else
                            {
                                Status = -1;
                                pl.Kill();
                            }
                        }
                    }
                    else if (Status == 1 || Status == 2 || Status == 3)
                    {
                        if (pl.IsBurnedCorpse && !Armor.FireProtect)
                        {
                            Hp = 0;
                        }
                        if (Hp <= 0)
                        {
                            Status = -1;
                        }
                        else if (Hp <= DyingHealth)
                        {
                            Status = 1;
                        }
                        else if (Hp <= StableHealth)
                        {
                            Status = 2;
                        }
                        else if (Hp <= ReviveHealth)
                        {
                            Status = 3;
                        }
                    }
                    if (Status == 0)
                    {
                        StatusDisplay.SetTextColor(Color.White);
                    }
                    else
                    {
                        if (Team == PlayerTeam.Team1)
                        {
                            StatusDisplay.SetTextColor(new Color(128, 128, 255));
                        }
                        else
                        {
                            StatusDisplay.SetTextColor(new Color(255, 128, 128));
                        }
                    }
                    if (Status == 0)
                    {
                        if (CurrentEquipment < Equipment.Count && InSmoke <= 0)
                        {
                            StatusDisplay.SetText(Equipment[CurrentEquipment].GetName());
                        }
                        else
                        {
                            StatusDisplay.SetText("");
                        }
                    }
                    else if (Status == 1)
                    {
                        StatusDisplay.SetText("DYING");
                        Hp -= DyingSpeed;
                    }
                    else if (Status == 2)
                    {
                        StatusDisplay.SetText("STABLE");
                    }
                    else if (Status == 3)
                    {
                        StatusDisplay.SetText("OVERCOMING");
                        Hp += OvercomeSpeed;
                    }
                    else if (Status == 4)
                    {
                        StatusDisplay.SetText("STUN");
                        StunTime--;
                    }
                    if (Status == 3 && Hp >= ReviveHealth)
                    {
                        Revive(Hp);
                    }
                    else if (Status == 4 && StunTime <= 0)
                    {
                        Revive(Hp, Bleeding);
                    }
                }
                else if (pl == null && Status >= 0)
                {
                    Status = -1;
                }
                if (InSmoke > 0)
                {
                    InSmoke--;
                }
                if (Status == -1)
                {
                    Status = -2;
                    OnDead();
                    StatusDisplay.SetText("");
                }
            }
示例#13
0
    public BulletManager CreateManager(Transform bulletParent, Transform barrelEnd, IBulletContainer bulletContainer, EntityTeamManager teamManager, BulletSliderManager bulletSliderManager, PlayerModifiers playerModifiers)
    {
        BulletManager manager = bulletManager.Create(bulletParent, barrelEnd, this, bulletContainer, teamManager, bulletSliderManager, playerModifiers);

        managers.Add(manager);
        return(manager);
    }
    public virtual BulletManager Create(Transform bulletParent, Transform barrelEnd, BulletInfo bulletInfo, IBulletContainer bulletContainer, EntityTeamManager teamManager, BulletSliderManager bulletSliderManager, PlayerModifiers playerModifiers)
    {
        BulletManager bulletManager = (BulletManager)CreateInstance(GetType());

        bulletManager.Initialize(bulletParent, barrelEnd, bulletInfo, bulletContainer, teamManager, bulletSliderManager, playerModifiers);
        return(bulletManager);
    }
 private void Initialize(Transform bulletParent, Transform barrelEnd, BulletInfo bulletInfo, IBulletContainer bulletContianer, EntityTeamManager teamManager, BulletSliderManager bulletUI, PlayerModifiers playerModifiers)
 {
     this.playerModifiers = playerModifiers;
     Initialize(bulletParent, barrelEnd, bulletInfo, bulletContianer, teamManager, bulletUI);
 }
示例#16
0
        /// <summary>
        /// Update loop (must be enabled in the OnStartup() function or AfterStartup() function).
        /// </summary>
        /// <param name="elapsed">Time elapsed</param>
        public void OnUpdate(float elapsed)
        {
            try
            {
                if (GameState == 0)
                {
                    try
                    {
                        RefreshPlayerMenus();
                    }
                    catch (Exception e)
                    {
                        DebugLogger.DebugOnlyDialogLog("CAUSED BY REFRESHPLAYERMENUS" + e.StackTrace, CameraPosition);
                        DebugLogger.DebugOnlyDialogLog(e.Message, CameraPosition);
                        var st    = new System.Diagnostics.StackTrace(e, true);
                        var frame = st.GetFrame(0);
                        var line  = frame.GetFileLineNumber();
                        DebugLogger.DebugOnlyDialogLog("METHOD: " + e.TargetSite.Name + " LINE: " + line, CameraPosition);
                    }

                    foreach (var p in PlayerList)
                    {
                        if (p == null)
                        {
                            continue;
                        }
                        if (p.User == null)
                        {
                            continue;
                        }
                        var player = p.User.GetPlayer();
                        if (player == null)
                        {
                            continue;
                        }
                        PlayerModifiers mods = player.GetModifiers();
                        mods.MaxEnergy              = 0;
                        mods.MeleeStunImmunity      = 1;
                        mods.EnergyRechargeModifier = 0;
                        player.SetModifiers(mods);
                    }

                    for (int i = 0; i < PlayerMenuList.Count; i++)
                    {
                        PlayerMenuList[i].Update();
                    }
                }
                else if (GameState == 1)
                {
                    if (TimeToStart > 0)
                    {
                        return;
                    }
                    GlobalGame.SetCurrentCameraMode(CameraMode.Static);
                    GameState = 2;
                    AirPlayerList.Clear();
                    ThrownTrackingList.Clear();
                    PreWeaponTrackingUpdate();
                    PostWeaponTrackingUpdate();
                    RemoveObjects();
                    RemoveTurrets();
                    RemoveShieldGenerators();
                    ResetElectronicWarfare();
                    RespawnUnknownObjects();
                    ResetEffects();
                    RemoveWeapons();
                    MapPartList[CurrentMapPartIndex].Start();
                    TimeToStart = AreaTime;
                    if (!IsDebug && PlayerList.Count < 2)
                    {
                        Game.SetGameOver("NOT ENOUGH PLAYERS");
                        GameState = 100;
                        return;
                    }
                }
                else if (GameState == 2)
                {
                    if (Game.GetCameraArea().Left == CameraPosition.X && Game.GetCameraArea().Top == CameraPosition.Y)
                    {
                        if (IsFirstMatch)
                        {
                            TeamBalance();
                        }
                        Game.RunCommand("MSG BATTLE BEGINS");
                        GameState = 3;
                    }
                }
                else if (GameState == 3)
                {
                    int areaStatus = MapPartList[CurrentMapPartIndex].Update();
                    int capturedBy = MapPartList[CurrentMapPartIndex].CapturedBy;
                    UpdateEffects();
                    ThrownWeaponUpdate();
                    PreWeaponTrackingUpdate();
                    for (int i = 0; i < PlayerList.Count; i++)
                    {
                        PlayerList[i].Update();
                    }
                    PostWeaponTrackingUpdate();
                    UpdateTurrets();
                    UpdateShieldGenerators();
                    ThrowingUpdate();
                    if (IsAllPlayerDead())
                    {
                        GameState   = 6;
                        TimeToStart = 5;
                    }
                    else if (TimeToStart <= 0)
                    {
                        if (capturedBy == 0)
                        {
                            SpawnDrone(4, PlayerTeam.Team3);
                        }
                        else if (capturedBy == 1)
                        {
                            SpawnDrone(5, PlayerTeam.Team1);
                        }
                        else if (capturedBy == 2)
                        {
                            SpawnDrone(5, PlayerTeam.Team2);
                        }
                        TimeToStart = 30;
                    }
                    int teamStatus = IsOneTeamDead();
                    if (teamStatus != 0 || GameState == 6)
                    {
                        for (int i = 0; i < PlayerList.Count; i++)
                        {
                            PlayerList[i].Stop();
                        }
                        for (int i = 0; i < TurretList.Count; i++)
                        {
                            TurretList[i].StopMovement();
                        }
                    }
                    if (areaStatus == 1)
                    {
                        Game.RunCommand("MSG BLUE TEAM CAPTURED ALL POINTS");
                        SpawnDrone(4, PlayerTeam.Team1);
                        TimeToStart = 30;
                    }
                    else if (areaStatus == 2)
                    {
                        Game.RunCommand("MSG RED TEAM CAPTURED ALL POINTS");
                        SpawnDrone(4, PlayerTeam.Team2);
                        TimeToStart = 30;
                    }
                    if (teamStatus == 1)
                    {
                        TimeToStart = 5;
                        GameState   = 7;
                    }
                    else if (teamStatus == 2)
                    {
                        TimeToStart = 5;
                        GameState   = 8;
                    }
                }
                else if (GameState == 4)
                {
                    var mapPart = MapPartList[CurrentMapPartIndex];
                    mapPart.BlueRoundsWon++;
                    MapPartList[CurrentMapPartIndex].Restart();
                    AddTeamExp(10, 3, PlayerTeam.Team1, false);

                    if (mapPart.CurrentRound < RoundsPerMapPart && mapPart.BlueRoundsWon != RoundsPerMapPart - 1)
                    {
                        // won this round, but not enough to advance
                        RemoveWeapons();
                        GameState   = 1;
                        TimeToStart = 5;
                        AddTeamExp(10, 4, PlayerTeam.Team1, false);
                        IsFirstMatch = false;
                        Game.RunCommand("MSG BLUE WON THIS ROUND!");
                        Game.RunCommand("MSG RED: " + mapPart.RedRoundsWon + " - BLUE: " + mapPart.BlueRoundsWon);
                        mapPart.CurrentRound++;
                        Game.RunCommand("MSG STARTING NEXT ROUND (" + MapPartList[CurrentMapPartIndex].CurrentRound + "/" + RoundsPerMapPart + ")");
                    }
                    else
                    {
                        // won this round, and it's enough to advance
                        if (RoundsPerMapPart > 1)
                        {
                            // more than one win was needed to advance
                            Game.RunCommand("MSG BLUE WAS THE BEST OF " + RoundsPerMapPart + "!");
                            mapPart.RedRoundsWon  = 0;
                            mapPart.BlueRoundsWon = 0;
                            TimeToStart           = 5;
                        }

                        if (CurrentMapPartIndex > 0)
                        {
                            CurrentMapPartIndex--;
                            IsFirstMatch = false;
                            GameState    = 1;
                        }
                        else
                        {
                            AddTeamExp(30 + RoundsPerMapPart, 4, PlayerTeam.Team1, false);
                            GameState = -1;
                        }
                    }
                }
                else if (GameState == 5)
                {
                    var mapPart = MapPartList[CurrentMapPartIndex];
                    mapPart.RedRoundsWon++;
                    mapPart.Restart();
                    AddTeamExp(10, 3, PlayerTeam.Team2, false);

                    if (mapPart.CurrentRound < RoundsPerMapPart && mapPart.RedRoundsWon != RoundsPerMapPart - 1)
                    {
                        RemoveWeapons();
                        GameState    = 1;
                        TimeToStart  = 5;
                        IsFirstMatch = false;
                        AddTeamExp(10, 4, PlayerTeam.Team2, false);
                        Game.RunCommand("MSG RED TEAM WON THIS ROUND!");
                        Game.RunCommand("MSG RED: " + mapPart.RedRoundsWon + " - BLUE: " + mapPart.BlueRoundsWon);
                        mapPart.CurrentRound++;
                        Game.RunCommand("MSG STARTING NEXT ROUND (" + MapPartList[CurrentMapPartIndex].CurrentRound + "/" + RoundsPerMapPart + ")");
                    }
                    else
                    {
                        //  won this round, and it's enough to advance

                        if (RoundsPerMapPart > 1)
                        {
                            // more than one win was needed to advance
                            Game.RunCommand("MSG RED TEAM WAS THE BEST OF " + RoundsPerMapPart + "!");
                            mapPart.RedRoundsWon  = 0;
                            mapPart.BlueRoundsWon = 0;
                            TimeToStart           = 5;
                        }

                        if (CurrentMapPartIndex < MapPartList.Count - 1)
                        {
                            CurrentMapPartIndex++;
                            IsFirstMatch = false;
                            GameState    = 1;
                        }
                        else
                        {
                            AddTeamExp(30 + RoundsPerMapPart, 4, PlayerTeam.Team2, false);
                            GameState = -2;
                        }
                    }
                }
                else if (GameState == 6)
                {
                    if (TimeToStart <= 0)
                    {
                        var mapPart = MapPartList[CurrentMapPartIndex];
                        mapPart.Restart();
                        TimeToStart = 5;
                        Game.RunCommand("MSG NOBODY CAPTURED THE AREA!");
                        GameState = 1;
                    }
                }
                else if (GameState == 7)
                {
                    if (TimeToStart <= 0)
                    {
                        GameState = 4;
                    }
                }
                else if (GameState == 8)
                {
                    if (TimeToStart <= 0)
                    {
                        GameState = 5;
                    }
                }
                else if (GameState == -1 || GameState == -2)
                {
                    var menuCameraPosition = GlobalGame.GetSingleObjectByCustomId("MenuCameraPosition").GetWorldPosition();
                    CameraPosition.X = menuCameraPosition.X;
                    CameraPosition.Y = menuCameraPosition.Y;
                    for (int i = 0; i < PlayerMenuList.Count; i++)
                    {
                        PlayerMenuList[i].ShowExp();
                    }
                    GlobalGame.SetWeatherType(WeatherType.None);
                    GameState -= 2;
                }
                else if (GameState == -3)
                {
                    if (!IsDataSaved)
                    {
                        SaveData();
                    }

                    if (TimeToStart <= 0)
                    {
                        Game.SetGameOver("BLUE TEAM WINS!");
                    }
                }
                else if (GameState == -4)
                {
                    if (!IsDataSaved)
                    {
                        SaveData();
                    }

                    if (TimeToStart <= 0)
                    {
                        Game.SetGameOver("RED TEAM WINS!");
                    }
                }
                UpdateCamera();
            }
            catch (Exception e)
            {
                DebugLogger.DebugOnlyDialogLog(e.StackTrace, CameraPosition);
                DebugLogger.DebugOnlyDialogLog(e.Message, CameraPosition);
                var st    = new System.Diagnostics.StackTrace(e, true);
                var frame = st.GetFrame(0);
                var line  = frame.GetFileLineNumber();
                DebugLogger.DebugOnlyDialogLog("METHOD: " + e.TargetSite.Name + " LINE: " + line, CameraPosition);
            }
        }
示例#17
0
        private void SetHale()
        {
            IPlayer[] players = Game.GetPlayers();

            foreach (IPlayer plr in players)
            {
                plr.SetTeam(PlayerTeam.Team1);
                PlayerModifiers plrmodifier = plr.GetModifiers();
                plrmodifier.MaxHealth                = -2;
                plrmodifier.MaxEnergy                = -2;
                plrmodifier.CurrentHealth            = -2;
                plrmodifier.EnergyRechargeModifier   = -2;
                plrmodifier.SizeModifier             = -2;
                plrmodifier.SprintSpeedModifier      = -2;
                plrmodifier.RunSpeedModifier         = -2;
                plrmodifier.MeleeForceModifier       = -2;
                plrmodifier.MeleeDamageDealtModifier = -2;
                plrmodifier.MeleeDamageTakenModifier = -2;
                plr.SetModifiers(plrmodifier);
            }

            // Check if Local Storage contains needed items (halecandidates and last_hale)
            if (!Game.LocalStorage.ContainsKey("halecandidates"))
            {
                Game.RunCommand("/MSG " + "Local storage doesn't contain the 'halecandidates' key, so let's add it.");
                SetHaleCandidates();
            }
            if (!Game.LocalStorage.ContainsKey("last_hale"))
            {
                Game.RunCommand("/MSG " + "Local storage doesn't contain the 'last_hale' key, so let's add it");
                Game.LocalStorage.SetItem("last_hale", players[0].Name);
            }
            string[] haleCandidates = (string[])Game.LocalStorage.GetItem("halecandidates");

            // Synchronize haleCandidates queue to the players currently in server
            SynchronizeHaleCandidates(players, haleCandidates);

            string  next_hale_name = haleCandidates[(m_rnd.Next(((int)DateTime.Now.Millisecond * (int)DateTime.Now.Minute * 1000)) + (int)DateTime.Now.Millisecond) % haleCandidates.Length];
            IPlayer next_hale      = players[0];
            int     next_type      = (m_rnd.Next(0, ((int)DateTime.Now.Millisecond * (int)DateTime.Now.Minute * 1000)) + (int)DateTime.Now.Millisecond) % (HALENAMES.Length);
            int     random_index   = 0;

            if (!MODE)
            {
                // Check if storage contains last_hale. If it does make sure that same person isn't hale again.
                bool chooseAgain = false;
                do
                {
                    chooseAgain    = false;
                    next_hale_name = haleCandidates[(m_rnd.Next(((int)DateTime.Now.Millisecond * (int)DateTime.Now.Minute * 1000) + random_index) + (int)DateTime.Now.Millisecond) % haleCandidates.Length];
                    if ((string)Game.LocalStorage.GetItem("last_hale") == next_hale_name)
                    {
                        Game.RunCommand("/MSG " + "Sama hale kuin viimeksi --> vaihtoon");
                        chooseAgain = true;
                    }
                    foreach (IPlayer plr in players)
                    {
                        if (plr.Name == next_hale_name)
                        {
                            next_hale = plr;
                        }
                    }
                    random_index++;
                } while (chooseAgain & random_index < 10);

                // Delete new hale from halecandidates and update 'last_hale' in localstorage
                EraseFromHaleCandidates(next_hale_name);
            }

            HALE     = next_hale;
            HALETYPE = next_type;

            HALETYPE = 4;
            HALE.SetTeam(PlayerTeam.Team2);

            // Calculating hale HP based on playeramount and getting the modifier for HALE to apply changes

            PlayerModifiers modify = HALE.GetModifiers();
            int             haleHP;
            int             hpConstant = 150;

            if (MODE)
            {
                haleHP = 500;
            }
            else
            {
                if (players.Length <= 4)
                {
                    haleHP = (players.Length - 1) * hpConstant;
                }
                else
                {
                    haleHP = 4 * hpConstant + (players.Length - 4) * hpConstant / 2;
                }
            }

            lastHaleHp = haleHP;

            Game.RunCommand("/MSG " + " - - - Minä olen hirmuinen " + HALENAMES[HALETYPE] + " - - - ");

            // Setting HALE modifiers
            switch (HALETYPE)
            {
            // SetHaleModifiers( modify, HP, sprintSpeed, runSpeed, meleeForce, meleeDamageDealt, meleeDamageTaken )
            // Saxton Fale;
            case 0:
                SetHaleClothing(ref HALE);
                SetHaleModifiers(ref modify, haleHP, 1.5f, 1.5f, 3f, 8f, 2f);
                HALE.SetModifiers(modify);
                break;

            // Sin Feaster
            case 1:
                SetSinClothing(ref HALE);
                tpEnabled  = true;
                tpCooldown = 20000;
                SetHaleModifiers(ref modify, haleHP, 1.2f, 1.2f, 2f, 5f, 1.5f);
                HALE.SetModifiers(modify);
                break;

            // Speedy Fale
            case 2:
                SetSpeedClothing(ref HALE);
                SetHaleModifiers(ref modify, haleHP, 2f, 2f, 6f, 0.001f, 1f);
                HALE.SetModifiers(modify);
                break;

            // DIO
            case 3:
                warudoEnabled  = true;
                warudoCooldown = 10000;
                SetDIOClothing(ref HALE);
                SetHaleModifiers(ref modify, haleHP, 1.2f, 1.2f, 3f, 3f, 2f);
                HALE.SetModifiers(modify);
                break;

            // Sick F**k
            case 4:
                SetTeam(HALETYPE);
                zombifyHumansOnDeath = true;
                SetSickClothing(ref HALE);
                SetHaleModifiers(ref modify, haleHP / 2, 1.5f, 1.5f, 2f, 3f, 1.5f);
                HALE.SetModifiers(modify);
                ReanimateTrigger.Trigger();
                break;
            }

            // Activate HALE triggers
            if (MODE)
            {
                Game.RunCommand("/INFINITE_AMMO 1");
                Game.RunCommand("/GIVE 0 shuriken");
            }
            else
            {
                HALE.SetInputEnabled(false);
                HaleStartCooldown.Trigger();
                RemoveHaleItemsTimer.Trigger();
            }
            DisplayHaleStatusTimer.Trigger();
        }