Exemple #1
0
        private static void doBotDamage(int damage, Entity player, string weapon, Entity botHitbox, string MOD, Vector3 point, bool skipFeedback = false)
        {
            int hitDamage;

            if (AIZ.weaponIsUpgrade(weapon))
            {
                hitDamage = damage / 2;                             //Base upgraded damage
            }
            else if (AIZ.isHellMap)
            {
                hitDamage = damage / 2;                    //Hellmap damage
            }
            else
            {
                hitDamage = damage / (1 + ((int)roundSystem.Wave / 2)); //Base damage
            }
            if (MOD == "MOD_MELEE")
            {
                hitDamage = damage / (((int)roundSystem.Wave + 1) / 2);                    //Melee damage
            }
            if (weapon == "iw5_p99_mp_tactical_xmags" && MOD == "MOD_MELEE")
            {
                hitDamage = 350;                                                             //P99 Upgraded damage
            }
            if (weapon == "iw5_riotshield_mp")
            {
                hitDamage = damage * 2;                             //Upgraded shield
            }
            if (AIZ.isWeaponDeathMachine(weapon))
            {
                hitDamage = damage * 4;
            }

            if (MOD != "MOD_MELEE")
            {
                if (weapon.Contains("iw5_deserteagle_mp") || weapon == "at4_mp" || weapon.Contains("iw5_44magnum_mp") || weapon.StartsWith("iw5_mp412"))
                {
                    hitDamage = damage;                                                                                                                                     //Specials damage
                }
                //Weapon tweaks
                if (AIZ.isSniper(weapon) || weapon.Contains("iw5_dragunov_mp"))
                {
                    hitDamage = (damage *= 2);                                                            //Sniper damage
                }
                if (AIZ.isShotgun(weapon))
                {
                    hitDamage = (int)(hitDamage * 4f);                       //Shotgun multiplier
                }
                if (weapon == "gl_mp")
                {
                    hitDamage = 10000;                   //GL
                }
                else if (weapon == "iw5_xm25_mp")
                {
                    hitDamage = damage;
                }
                else if (weapon == "xm25_mp")
                {
                    hitDamage = damage * 2;
                }
                else if (weapon == "iw5_mk14_mp")
                {
                    hitDamage *= 2;
                }
                else if (weapon.StartsWith("iw5_mk14_mp_reflex_xmags_camo11"))
                {
                    hitDamage *= 3;
                }
                else if (weapon == "iw5_1887_mp_camo11")
                {
                    hitDamage = 100;
                }
                else if (weapon == "iw5_mk12spr_mp_acog_xmags")
                {
                    hitDamage = 500;                                            //Heli Sniper damage
                }
                //if (weapon == "uav_strike_missile_mp") hitDamage = damage;//Thundergun
            }

            if (MOD == "MOD_HEADSHOT")
            {
                hitDamage *= 3;
            }

            else if (MOD == "MOD_PASSTHRU")
            {
                hitDamage = damage;                            //Script usage
            }
            else if ((MOD == "MOD_EXPLOSIVE" || MOD == "MOD_GRENADE_SPLASH") && botHitbox.GetField <int>("damageTaken") >= botHitbox.GetField <int>("currentHealth") * 0.7f && botHitbox.GetField <Entity>("parent").HasField("head"))
            {
                botToCrawler(botHitbox);
            }

            if (instaKillTime > 0 && !botHitbox.HasField("isBoss"))
            {
                botHitbox.SetField("damageTaken", botHitbox.GetField <int>("currentHealth"));
            }
            else
            {
                botHitbox.SetField("damageTaken", botHitbox.GetField <int>("damageTaken") + hitDamage);
            }

            if ((botHitbox.GetField <int>("damageTaken") >= botHitbox.GetField <int>("currentHealth") * 0.85f && MOD == "MOD_HEADSHOT" && botHitbox.GetField <Entity>("parent").HasField("head")) || (instaKillTime > 0 && botHitbox.GetField <Entity>("parent").HasField("head")))
            {
                Entity head = botHitbox.GetField <Entity>("parent").GetField <Entity>("head");
                head.Hide();
                botHitbox.GetField <Entity>("parent").GetField <Entity>("headHitbox").SetCanDamage(false);
                PlayFX(AIZ.fx_headshotBlood, head.Origin);
                if (instaKillTime == 0)
                {
                    OnInterval(1000, () => runBotBleedout(player, botHitbox));
                }
            }

            if (!AIZ.isPlayer(player) || !player.HasField("isDown"))
            {
                return;
            }

            if (!botHitbox.GetField <Entity>("parent").GetField <bool>("primedForNuke"))
            {
                int pointGain = 10;
                if (doublePointsTime > 0)
                {
                    pointGain *= 2;
                }

                if (MOD != "MOD_PASSTHRU")
                {
                    player.SetField("cash", player.GetField <int>("cash") + pointGain);
                    hud.scorePopup(player, pointGain);
                }
                AIZ.addRank(player, pointGain);
            }

            if (skipFeedback || !AIZ.isPlayer(player) || !player.HasField("hud_damageFeedback"))
            {
                return;
            }

            HudElem combatHighFeedback = player.GetField <HudElem>("hud_damageFeedback");

            combatHighFeedback.Alpha = 1;
            player.PlayLocalSound("MP_hit_alert");
            combatHighFeedback.FadeOverTime(1);
            combatHighFeedback.Alpha = 0;
        }