Наследование: MonoBehaviour
Пример #1
0
        private static IEnumerator <float> SpawnGrenadesSurface()
        {
            yield return(Timing.WaitForSeconds(GrenadeRun.Instance.Config.GrenadeDelaySurface));

            while (GrenadeRun.Instance.GrenadeRound)
            {
                foreach (Exiled.API.Features.Player player in Exiled.API.Features.Player.List)
                {
                    if (player.Role == RoleType.ClassD && player.Position.y > SurfaceBound)
                    {
                        GrenadeManager  gm      = player.ReferenceHub.GetComponent <GrenadeManager>();
                        GrenadeSettings grenade = gm.availableGrenades.FirstOrDefault(g => g.inventoryID == ItemType.GrenadeFrag);
                        if (grenade == null)
                        {
                            continue;
                        }

                        Grenade component = UnityEngine.Object.Instantiate(grenade.grenadeInstance).GetComponent <Grenade>();
                        component.InitData(gm, Vector3.zero, Vector3.zero, 0f);
                        NetworkServer.Spawn(component.gameObject);
                    }
                }

                yield return(Timing.WaitForSeconds(GrenadeRun.Instance.Config.GrenadeDelaySurface));
            }
        }
Пример #2
0
 public ThrowData(Character s, Character t, Skill sk, Grenade g)
 {
     this.source  = s;
     this.target  = t;
     this.skill   = sk;
     this.grenade = g;
 }
Пример #3
0
 private void DoGrenade(Grenade grenade)
 {
     if (null != grenade)
     {
         float num  = grenade.AtkPow / maxAtkPow;
         float num2 = grenade.speedFactor / maxMobility;
         if (num > 1f)
         {
             num = 1f;
         }
         if (num2 > 1f)
         {
             num2 = 1f;
         }
         float num3 = num * 100f;
         float num4 = num2 * 100f;
         DoWeaponPropertyBase();
         Color color = GUI.color;
         GUI.color = Color.yellow;
         TextureUtil.DrawTexture(new Rect(333f, 155f, 104f * num, 12f), gauge, ScaleMode.StretchToFill);
         TextureUtil.DrawTexture(new Rect(333f, 235f, 104f * num2, 12f), gauge, ScaleMode.StretchToFill);
         GUI.color = color;
         LabelUtil.TextOut(new Vector2(390f, 160f), num3.ToString("0.##") + "%", "Label", Color.white, GlobalVars.txtEmptyColor, TextAnchor.MiddleCenter);
         LabelUtil.TextOut(new Vector2(390f, 180f), "N/A", "Label", Color.white, GlobalVars.txtEmptyColor, TextAnchor.MiddleCenter);
         LabelUtil.TextOut(new Vector2(390f, 200f), "N/A", "Label", Color.white, GlobalVars.txtEmptyColor, TextAnchor.MiddleCenter);
         LabelUtil.TextOut(new Vector2(390f, 220f), "N/A", "Label", Color.white, GlobalVars.txtEmptyColor, TextAnchor.MiddleCenter);
         LabelUtil.TextOut(new Vector2(390f, 240f), num4.ToString("0.##") + "%", "Label", Color.white, GlobalVars.txtEmptyColor, TextAnchor.MiddleCenter);
         LabelUtil.TextOut(new Vector2(390f, 260f), grenade.maxAmmo.ToString(), "Label", Color.white, GlobalVars.txtEmptyColor, TextAnchor.MiddleCenter);
     }
 }
Пример #4
0
    public void InitLoadout(LoadoutData loadoutRef)
    {
        Loadout newLoadout = new Loadout();

        if (loadoutRef.gun)
        {
            Gun gun = Instantiate(loadoutRef.gun);
            Equip(gun, Anim.GetBoneTransform(HumanBodyBones.RightHand));
            newLoadout.gun = gun;
        }

        if (loadoutRef.grenade)
        {
            Grenade grenade = Instantiate(loadoutRef.grenade);
            Equip(grenade, Vector3.zero, Quaternion.identity);
            newLoadout.grenade = grenade;
        }

        if (loadoutRef.gadget)
        {
            Gadget gadget = Instantiate(loadoutRef.gadget);
            Equip(gadget, Vector3.zero, Quaternion.identity);
            newLoadout.gadget = gadget;
        }
        loadout = newLoadout;
    }
Пример #5
0
    void DamageTargets()
    {
        Collider[] colliders = Physics.OverlapSphere(transform.position, explosionRadius);

        foreach (Collider collider in colliders)
        {
            Rigidbody rb = collider.attachedRigidbody;
            if (rb != null)
            {
                rb.AddExplosionForce(Damage * explosionRadius, transform.position, explosionRadius);
            }

            GameObject parent = collider.gameObject;

            if (parent != null)
            {
                Grenade         g          = parent.GetComponent <Grenade>();
                StateController controller = parent.GetComponent <StateController>();
                if (controller != null)
                {
                    float thrownDistance = Vector3.Distance(startPos, finalPos);
                    controller.DoDamage(Damage);

                    if (score != null)
                    {
                        score.UpdateScore(Mathf.RoundToInt(Damage * thrownDistance));
                    }
                }
                if (g != null && !g.hasExploded)
                {
                    g.Explode();
                }
            }
        }
    }
Пример #6
0
 internal void PlayerDeath(ref PlayerDeathEvent ev)
 {
     if (plugin.curMod.HasFlag(ModType.NONE) && plugin.enabledTypes.Contains(ModType.NONE))
     {
         return; // cuz none means none
     }
     if (plugin.curMod.HasFlag(ModType.EXPLODEONDEATH) && plugin.enabledTypes.Contains(ModType.EXPLODEONDEATH))
     {
         if (ev.Killer == null || (ev.Killer != null && ev.Killer.GetTeam() != Team.SCP && ev.Killer.GetTeam() != Team.TUT))
         {
             GrenadeManager  gm  = ev.Player.GetComponent <GrenadeManager>();
             GrenadeSettings set = gm.availableGrenades.FirstOrDefault(g => g.inventoryID == ItemType.GrenadeFrag);
             if (set == null)
             {
             }
             else
             {
                 Grenade comp = UnityEngine.Object.Instantiate(set.grenadeInstance).GetComponent <Grenade>();
                 comp.fuseDuration = 0.1f;
                 comp.InitData(gm, Vector3.zero, Vector3.zero, 10f);
                 // commented for stable release
                 //deathGrenades.Add(comp);
                 NetworkServer.Spawn(comp.gameObject);
             }
         }
     }
     if (plugin.curMod.HasFlag(ModType.CLASSINFECT) && plugin.enabledTypes.Contains(ModType.CLASSINFECT))
     {
         if (ev.Killer != null && ev.Killer != ev.Player && !plugin.noInfectRoles.Contains(ev.Killer.characterClassManager.CurClass))
         {
             Timing.RunCoroutine(InfectLate(ev.Player, ev.Killer.characterClassManager.CurClass, ev.Killer.transform.position));
         }
     }
 }
Пример #7
0
    void UpdateFiring()
    {
        if (m_GrenadeObject == null)
        {
            return;
        }

        if (Input.GetButtonDown("Fire1"))
        {
            Vector3 direction   = new Vector3(1.0f, 0.0f, 0.0f);
            Vector3 bankingAxis = new Vector3(0.0f, 1.0f, 0.0f);
            direction = Quaternion.AngleAxis(m_CurrentDesiredAngle, bankingAxis) * direction;
            Vector3 horizonAxis = Vector3.Cross(direction, bankingAxis);
            direction = Quaternion.AngleAxis(45.0f, horizonAxis) * direction;
            Vector3 startVelocity = direction * m_CurrentDesiredSpeed;

            // spawn a grenade
            GameObject temp = GameObject.Instantiate(m_GrenadeObject);
            temp.transform.position = new Vector3(0.0f, 0.0f, 0.0f);
            Grenade grenade = temp.GetComponent <Grenade>();
            grenade.m_Gravity         = m_Gravity;
            grenade.m_CurrentVelocity = startVelocity;
            grenade.enabled           = true;
        }
    }
Пример #8
0
    public void FirePhysicsProjectile(Transform spawnLocation, Vector3 targetLocation, float force)
    {
        // TODO: Make spawned projectile a saveable object
        GameObject spawnedProjectile = Instantiate(physicsProjectile, spawnLocation.position, spawnLocation.rotation);

        spawnedProjectile.transform.LookAt(targetLocation);

        // If the spawnedProjectile is a grenade, set character
        Grenade grenade = spawnedProjectile.GetComponent <Grenade>();

        if (grenade != null)
        {
            grenade.character = character;
        }

        // Spread
        Vector3 spreadTransform = new Vector3(Random.Range(-spread, spread), Random.Range(-spread, spread), 0);

        spawnedProjectile.transform.rotation = spawnedProjectile.transform.rotation * Quaternion.Euler(spreadTransform);

        Rigidbody rb = spawnedProjectile.GetComponent <Rigidbody>();

        if (rb)
        {
            rb.AddForce(spawnedProjectile.transform.forward * force);
        }
    }
 public void ReceiveGrenade(Grenade thrownGrenade)
 {
     thrownGrenade.SetPosition(Position + armOffset + new Vector3(leftOrRight * myGrenades.Count, 0, 0));
     myGrenades.Add(thrownGrenade);
     myGrenades[0].SetPosition(Position + armOffset);
     thrownGrenade.OnExploded.AddListener(grenadeExploded);
 }
Пример #10
0
        /// <inheritdoc/>
        public void C4Handler(Grenade charge, C4RemoveMethod removeMethod = C4RemoveMethod.Detonate)
        {
            switch (removeMethod)
            {
            case C4RemoveMethod.Remove:
            {
                NetworkServer.Destroy(charge.gameObject);
                break;
            }

            case C4RemoveMethod.Detonate:
            {
                charge.NetworkfuseTime = 0.1f;
                break;
            }

            case C4RemoveMethod.Drop:
            {
                TrySpawn((int)Id, charge.transform.position);
                NetworkServer.Destroy(charge.gameObject);
                break;
            }
            }

            PlacedCharges.Remove(charge);
        }
Пример #11
0
    public void MoveGrenade(Grenade g)
    {
        GameObject obj = GrenadeToGameObj[g];

        obj.transform.position = g.Position;

        /*
         * if (Vector3.Distance(obj.transform.position, g.Position) > 0)
         * {
         *  // Do curve
         *  Vector3 start = obj.transform.position;
         *  Vector3 end = g.Position + grenadeArmOffset;
         *  var points = new Vector3[] {
         *      start,
         *      new Vector3(start.x+(end.x-start.x)/2,(end.y-start.y)+3,start.z),
         *      end
         *  };
         *  var path = new GoSpline(points);
         *  gAnim = obj.GetComponent<Animator>();
         *  gAnim.SetTrigger("isMoving");
         *  GoTween gt = Go.to(obj.transform, 1f, new GoTweenConfig().positionPath(path, false));
         *  gt.setOnCompleteHandler(t =>
         *  {
         *      grenadeSettle(g);
         *  });
         * }
         */
    }
 void RegisterGrenade(Grenade g)
 {
     sources[g]        = Camera.main.gameObject.AddComponent <AudioSource>();
     sources[g].volume = soundVolume;
     g.OnThrown.AddListener(GrenadeThrow);
     g.OnExploded.AddListener(GrenadeExploded);
 }
Пример #13
0
    /* --- Additional Methods --- */
    void Throw()
    {
        if (isBackSwinging)
        {
        }
        else if (isSwinging)
        {
            if (!hasThrown)
            {
                // The path
                Vector2 A = holderState.targetPosition;
                Vector2 B = holderState.transform.position;
                if (Vector2.Distance(A, B) > throwRange)
                {
                    A = (A - B).normalized * throwRange + B;
                }


                // The exploder
                Grenade exploder = Instantiate(exploderPrefab, skeleton.head.transform.position, Quaternion.identity, null).GetComponent <Grenade>();
                exploder.gameObject.SetActive(true);
                exploder.SetPath(A, B, arcHeight, throwSpeed);
                exploder.GetComponent <SpriteRenderer>().enabled = true;
                hasThrown = true;
            }
        }
        else if (isResetting)
        {
            hasThrown = false;
        }
    }
Пример #14
0
    void FixedUpdate()
    {
        Grenade ent = gameObject.GetComponent <Grenade>();

        if (ent.speed > 0 || ent.spawned)
        {
            return;
        }

        ent.spawned = true;

        GameObject expl = Instantiate(explosion, gameObject.transform.position, Quaternion.identity);

        Destroy(expl, 0.5f);

        Collider2D[] hitList = Physics2D.OverlapCircleAll(transform.position, radius);

        foreach (Collider2D entity in hitList)
        {
            if (entity.name.Contains("zombie") || entity.name.Contains("boss"))
            {
                entity.GetComponent <zombieStats>().setDamage(GlobalVar.instance.getBombDamage());
            }
            else if (entity.name.Contains("player"))
            {
                HealthSystem.instance.Damage(gameObject.GetComponent <Grenade>().damage * 5);
            }
        }
    }
Пример #15
0
        private void OnThrowingGrenade(ThrowingGrenadeEventArgs ev)
        {
            if (CheckItem(ev.Player.CurrentItem))
            {
                ev.IsAllowed = false;
                Grenade grenadeComponent = ev.Player.GrenadeManager.availableGrenades[0].grenadeInstance.GetComponent <Grenade>();

                Timing.CallDelayed(1f, () =>
                {
                    Vector3 pos = ev.Player.CameraTransform.TransformPoint(grenadeComponent.throwStartPositionOffset);

                    if (ExplodeOnCollision)
                    {
                        var grenade = SpawnGrenade(pos, ev.Player.CameraTransform.forward * 9f, 1.5f, GetGrenadeType(ItemType)).gameObject;
                        CollisionHandler collisionHandler = grenade.gameObject.AddComponent <CollisionHandler>();
                        collisionHandler.owner            = ev.Player.GameObject;
                        collisionHandler.grenade          = grenadeComponent;
                        TrackedGrenades.Add(grenade);
                    }
                    else
                    {
                        SpawnGrenade(pos, ev.Player.CameraTransform.forward * 9f, FuseTime, GetGrenadeType(ItemType));
                    }

                    ev.Player.RemoveItem(ev.Player.CurrentItem);
                });
            }
        }
Пример #16
0
    /// <summary>
    /// Load the grenade
    /// </summary>
    public override void Load()
    {
        Grenade grenade = GameResources.GetInstance().Get <Grenade>();

        grenadeHolder.AddChild(grenade);
        this.WeaponAmmo = grenade;
    }
Пример #17
0
        /// <summary>
        /// Starts the item use.
        /// </summary>
        /// <param name="itemAbility">The item ability that is using the item.</param>
        public override void StartItemUse(ItemAbility itemAbility)
        {
            base.StartItemUse(itemAbility);

            // An Animator Audio State Set may prevent the item from being used.
            if (!IsItemInUse())
            {
                return;
            }

            // Grenades can be cooked (and explode while still in the character's hands).
            m_InstantiatedGrenade = m_InstantiatedTrajectoryObject as Grenade;
            m_InstantiatedGrenade.StartCooking(m_Character);

            // If a pin is specified then it can optionally be removed when the grenade is being thrown.
            if (m_InstantiatedGrenade.Pin != null)
            {
                if (m_AnimatePinRemoval && !m_DisableVisibleObject)
                {
                    if (m_RemovePinEvent.WaitForAnimationEvent)
                    {
                        EventHandler.RegisterEvent(m_Character, "OnAnimatorItemRemovePin", RemovePin);
                    }
                    else
                    {
                        Scheduler.ScheduleFixed(m_RemovePinEvent.Duration, RemovePin);
                    }
                }
            }
        }
Пример #18
0
    void Start()
    {
        healthBar     = gameObject.transform.Find("HealthBar");
        hb_max        = health;
        local_scale_x = healthBar.transform.localScale.x;

        au_sou     = GetComponent <AudioSource>();
        boss_die   = Resources.Load <AudioClip>("Boss_die");
        boss_shot  = Resources.Load <AudioClip>("Boss_shot");
        boss_hit   = Resources.Load <AudioClip>("Boss_hurt");
        boss_throw = Resources.Load <AudioClip>("Boss_throw");
        boss_knife = Resources.Load <AudioClip>("Boss_knife");

        box         = GetComponent <BoxCollider2D>();
        myRigidBody = GetComponent <Rigidbody2D>();
        sprite      = GetComponent <SpriteRenderer>();
        animate     = GetComponent <Animator>();
        polygon     = GetComponentInChildren <PolygonCollider2D>();
        character   = FindObjectOfType <charChange>();
        man         = GameObject.Find("Man").GetComponent <Player>().transform;
        robot       = GameObject.Find("Robot").GetComponent <Player>().transform;
        projectile  = gunProjectile.GetComponent <Projectile>();
        grenade     = grenadeObject.GetComponent <Grenade>();

        isShooting             = false;
        polygon.enabled        = false;
        state                  = State.Walking;
        gravity                = -gravitySpeed / 100;
        projectile.speed       = projectileSpeed;
        projectile.damage      = projectileDamage;
        grenade.throwDistance  = throwDistance;
        grenade.explosionDelay = explosionDelay;

        bossDeath = false;
    }
Пример #19
0
    void Update()
    {
        healthBar.SetHealth(hitPoints);


        CalculateCrosshairPosition();
        if (alive)
        {
            Movment();
            if (Keyboard.current.gKey.isPressed && Time.time > nextGrenade)
            {
                nextGrenade = Time.time + 1f;
                Grenade newGrenade = Instantiate(grenade, new Vector3(transform.position.x, transform.position.y + 1f, transform.position.z), Quaternion.identity) as Grenade;
                newGrenade.CalculatePath(this.transform, crosshairPosition);
            }
            if (Mouse.current.leftButton.isPressed)
            {
                isShooting = 1;
                equipedWeapon.Fire(crosshairPosition);
            }
            else
            {
                isShooting -= 0.05f;
            }
            playerAnimator.SetFloat("isShooting", isShooting);
        }
    }
Пример #20
0
    override protected void InitSkills(Transform owner)
    {
        Skill.SetGST(GameObject.Find("Manager").GetComponent <GlobalScriptTeam>());

        Transform attackPoint = owner.GetChild(2);


        Fist     fist     = new Fist(owner, "Fist", 10, 1, 0, 1f, Skill.SkillType.Melee, attackPoint, 100);
        Shuriken shuriken = new Shuriken(owner, "Shuriken", 25, 3, 10, 3f, Skill.SkillType.Ranged, 1000, 4, attackPoint);
        Grenade  grenade  = new Grenade(owner, "Grenade", 35, 12, 15, 10, Skill.SkillType.Ranged, 500, 5, attackPoint);

        _skills.set((int)AbilityType.Stype.None, fist);
        _skills.set((int)AbilityType.Stype.None, shuriken);
        _skills.set((int)AbilityType.Stype.None, grenade);

        FireBall fireBall = new FireBall(owner, "FireBall", 35, 3, 15, 3f, Skill.SkillType.Ranged, 1000, 4, attackPoint);

        _skills.set((int)AbilityType.Stype.Fire, fist);
        _skills.set((int)AbilityType.Stype.Fire, fireBall);

        Tornado tornado = new Tornado(owner, "Tornado", 100, 0, 20, 15, Skill.SkillType.OnArea, 5, 5);

        _skills.set((int)AbilityType.Stype.Wind, fist);
        _skills.set((int)AbilityType.Stype.Wind, tornado);
    }
Пример #21
0
        public void cmd_ball(CommandInfo info)
        {
            Vector3 NULL_VECTOR = new Vector3(0, 0, 0);

            List <GameObject> playerList = GetPlayersFromString(info.commandArgs[1]);

            foreach (GameObject plr in playerList)
            {
                if (plr.GetComponent <CharacterClassManager>().CurClass == RoleType.Spectator)
                {
                    continue;
                }

                PheggPlayer pp = new PheggPlayer(plr);

                // Initialization
                GrenadeManager gm = pp.gameObject.GetComponent <GrenadeManager>();

                // Finalize creation & Spawn
                Grenade nade = Object.Instantiate <GameObject>(gm.availableGrenades[2].grenadeInstance).GetComponent <Grenade>();
                (nade).InitData(gm, NULL_VECTOR, NULL_VECTOR);
                NetworkServer.Spawn(nade.gameObject);
            }

            info.commandSender.RaReply(info.commandName.ToUpper() + $"#Spawned 018 on {(info.commandArgs[1] == "*" ? "All" : playerList.Count.ToString())} players", true, true, "");
        }
Пример #22
0
        public void OnDied(DiedEventArgs ev)
        {
            if (Tracking.PlayersInvisibleByCommand.Contains(ev.Target))
            {
                Tracking.PlayersInvisibleByCommand.Remove(ev.Target);
            }
            if (Tracking.PlayersWithSubclasses.ContainsKey(ev.Target) && Tracking.PlayersWithSubclasses[ev.Target].Abilities.Contains(AbilityType.ExplodeOnDeath))
            {
                GrenadeManager  grenadeManager = ev.Target.ReferenceHub.gameObject.GetComponent <GrenadeManager>();
                GrenadeSettings settings       = grenadeManager.availableGrenades.FirstOrDefault(g => g.inventoryID == ItemType.GrenadeFrag);
                Grenade         grenade        = UnityEngine.Object.Instantiate(settings.grenadeInstance).GetComponent <Grenade>();
                grenade.fuseDuration = Tracking.PlayersWithSubclasses[ev.Target].FloatOptions.ContainsKey("ExplodeOnDeathFuseTimer") ?
                                       Tracking.PlayersWithSubclasses[ev.Target].FloatOptions["ExplodeOnDeathFuseTimer"] : 2f;
                grenade.FullInitData(grenadeManager, ev.Target.Position, Quaternion.Euler(grenade.throwStartAngle),
                                     grenade.throwLinearVelocityOffset, grenade.throwAngularVelocity);
                NetworkServer.Spawn(grenade.gameObject);
            }

            Tracking.AddPreviousTeam(ev.Target);
            Tracking.RemoveZombie(ev.Target);
            Tracking.RemoveAndAddRoles(ev.Target, true);
            Timing.CallDelayed(0.1f, () => {
                Tracking.CheckRoundEnd();
            });
        }
Пример #23
0
 void Start()
 {
     rb = GetComponent <Rigidbody>();
     startingPosition = transform.position;
     grenadeScript    = GetComponent <Grenade>();
     windForce        = 0;
 }
Пример #24
0
 // Use this for initialization
 void Start()
 {
     _grenadeScript          = FindObjectOfType <Grenade>();
     _shootingScript         = FindObjectOfType <PlayerShooting>();
     _mainWeaponTimerText    = mainWeapon.GetComponentInChildren <Text>();
     _specialWeaponTimerText = specialWeapon.GetComponentInChildren <Text>();
 }
Пример #25
0
        /// <inheritdoc/>
        public override Grenade Spawn(Vector3 position, Vector3 velocity, float fuseTime = 3, ItemType grenadeType = ItemType.GrenadeFrag, Player player = null)
        {
            if (player == null)
            {
                player = Server.Host;
            }

            GrenadeManager  grenadeManager = player.GrenadeManager;
            GrenadeSettings settings       =
                grenadeManager.availableGrenades.FirstOrDefault(g => g.inventoryID == grenadeType);

            Grenade grenade = GameObject.Instantiate(settings.grenadeInstance).GetComponent <Grenade>();

            grenade.FullInitData(grenadeManager, position, Quaternion.Euler(grenade.throwStartAngle), velocity, grenade.throwAngularVelocity, player == Server.Host ? Team.RIP : player.Team);
            grenade.NetworkfuseTime = NetworkTime.time + fuseTime;

            Tracked.Add(grenade.gameObject);

            GameObject grenadeObject = grenade.gameObject;

            UnityEngine.Object.Destroy(grenadeObject.GetComponent <Scp018Grenade>());
            grenadeObject.AddComponent <Components.Rock>().Init(player.GameObject, player.Side, FriendlyFire, ThrownDamage);
            NetworkServer.Spawn(grenadeObject);

            if (ExplodeOnCollision)
            {
                grenade.gameObject.AddComponent <CollisionHandler>().Init(player.GameObject, grenade);
            }

            return(grenade);
        }
Пример #26
0
    override protected void PrimeTimeFinished()
    {
        // spawn child grenades
        PackedScene _projectileScene = (PackedScene)ResourceLoader.Load(MIRVGrenade.MIRVResource);

        Grenade[] mirvs = new Grenade[4];
        Random    ran   = new Random();

        for (int i = 0; i < 4; i++)
        {
            // spawn projectile, set it moving
            Grenade _projectileMesh = (Grenade)_projectileScene.Instance();

            // add to scene
            GetNode("/root/OpenFortress/Main").AddChild(_projectileMesh);
            Vector3 dir = new Vector3(ran.Next(150), ran.Next(150), ran.Next(150));
            _projectileMesh.MIRVInit(this.GetGlobalTransform(), _playerOwner, "mirvgrenade", 20, 100, dir);
            mirvs[i] = _projectileMesh;
        }

        // make sure they don't just bounce on each other and float in air
        for (int i = 0; i < 4; i++)
        {
            for (int i2 = 0; i2 < 4; i2++)
            {
                if (i2 != i)
                {
                    mirvs[i].AddCollisionExceptionWith(mirvs[i2]);
                }
            }
        }

        // now have original mirv explode
        this.Explode(_damage);
    }
    /**
     * @brief
     * metoda odpowiadajaca za instancjonowanie prefaba pocisku/ów i ustawienie kierunku w jakim ma byc wystrzelony
     */
    protected override void Shoot()
    {
        GameObject gobject       = Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
        Grenade    grenade       = gobject.GetComponent <Grenade>();
        float      mouseDistance = (firePoint.position - new Vector3(mousePosition.x, mousePosition.y)).magnitude;

        grenade.range = mouseDistance > grenade.range ? grenade.range : mouseDistance;
    }
    void GrenadeThrow(Vector2 _dir)
    {
        GameObject _grenade     = Instantiate(playerGrenade, (new Vector3(_dir.x, _dir.y, 0) * 1.5f + transform.position), Quaternion.identity);
        Grenade    _grenadeProp = _grenade.GetComponent <Grenade>();

        _grenadeProp.targetDir = _dir.normalized * bulletSpeed;
        GameManager.instance.ShakeCamera(2f, 5);
    }
Пример #29
0
 private void OnEnable()
 {
     grenade = Instantiate(grenadePrefab, transform.position, transform.rotation);
     Destroy(grenade.GetComponent <Rigidbody>());
     grenade.transform.parent = gameObject.transform;
     _grenadeScript           = grenade.GetComponent <Grenade>();
     timeElapsed = 0f;
 }
Пример #30
0
    void Ammu()
    {
        Grenade kranu = new Grenade(4.0, TimeSpan.FromSeconds(0.7));

        pelaaja.Throw(kranu, Angle.FromDegrees(10), 5000);
        kranu.Explosion.Force     = 100;
        kranu.Explosion.MaxRadius = 70;
        kranu.Explosion.AddShockwaveHandler("vihollinen", KranuOsui);
    }
Пример #31
0
 void Update()
 {
     if (Input.GetButtonDown("Grenade") && heldGrenade == null && grenadeAmmo > 0) {
         heldGrenade = BoltNetwork.Instantiate(BoltPrefabs.Grenade).GetComponent<Grenade>();
         heldGrenade.SetThrower(GameManager.instance.CurrentUserName);
         heldGrenade.transform.parent = this.transform;//the grenade needs to follow us if we move while cooking it
         heldGrenade.transform.localPosition = new Vector3(0f,0f,3f);//put it in front of the player for now
         heldGrenade.transform.localRotation = Quaternion.identity;
         heldGrenade.transform.localScale = Vector3.one;
         heldGrenade.GetComponent<Rigidbody>().isKinematic = true;
         grenadeAmmo--;
     }
     if (Input.GetButtonUp("Grenade") && heldGrenade != null) {
         Rigidbody rgb = heldGrenade.GetComponent<Rigidbody>();
         rgb.isKinematic = false;
         rgb.AddForce(transform.forward * ThrowForce);
         heldGrenade.transform.parent = null;
         heldGrenade.GetComponent<Collider>().enabled = true;
         heldGrenade = null;
     }
 }
Пример #32
0
        public override CastleButcher.GameEngine.IMissile GetMissile(object owner, Framework.MyMath.MyVector position, Framework.MyMath.MyQuaternion orientation)
        {
            IMissile missile = new Grenade(1, owner, this, position, orientation, (new MyVector(0, 0, -1)).Rotate(orientation) * this.flyingObjectParameters.MaxVelocity);

            return missile;
        }
Пример #33
0
        private void GrenadeExplosion(Grenade grenade, CollisionParameters parameters)
        {
            float maxDistance = grenade.ImpactDamage/4;
            float impactDamage = grenade.ImpactDamage;
            if (OnGrenadeHit != null)
                OnGrenadeHit(grenade, parameters.CollisionPoint);
            RemoveObject((IGameObject)grenade);

            for (int i = 0; i < players.Count; i++)
            {
                if (players[i].IsAlive)
                {
                    MyVector pos = players[i].CurrentCharacter.Position;

                    if ((pos - parameters.CollisionPoint).Length < maxDistance)
                    {
                        int damage = (int)(impactDamage * ((pos - parameters.CollisionPoint).Length / maxDistance));

                        players[i].OnMissileHit(grenade, parameters);
                        if (remote)
                            damage = 0;
                        if (players[i].CurrentCharacter.TakeDamage(damage))
                        {

                            ((Character)grenade.Owner).Player.OnEnemyDestroyed(players[i]);

                            World.Instance.PlayerKilled(players[i]);

                        }
                    }
                }
            }
        }
Пример #34
0
 protected override void LoadContent()
 {
     
     spriteBatch = new SpriteBatch(GraphicsDevice);
     device = graphics.GraphicsDevice;
     backgroundTexture = Content.Load<Texture2D>("gamebg");
     screenWidth = device.PresentationParameters.BackBufferWidth;
     screenHeight = device.PresentationParameters.BackBufferHeight;
     foregroundTexture = Content.Load<Texture2D>("foreground");
     SetUpPlayers();
     armyTexture = Content.Load<Texture2D>("army2");
     Grenade gre = new Grenade();
     GrenadeBuilder grenade = new GrenadeBuilder(gre);
     grenade.build();
     Rocket roc = new Rocket();
     RocketBuilder rocket = new RocketBuilder(roc);
     rocket.build();
     playerScaling = 40.0f / (float)armyTexture.Width;
     
 }
Пример #35
0
 void Instance_OnGrenadeHit(Grenade grenade, MyVector position)
 {
     renderer.MakeExplosion(position, grenade.ImpactDamage);
     SoundSystem.SoundEngine.PlaySound(SoundSystem.Enums.SoundTypes.explode, (Vector3)position);
 }
Пример #36
0
 public ThrowGrenade( Unit owner, Grenade source )
     : base(owner, source, "ThrowGrenade")
 {
     oneUse = true;
 }
Пример #37
0
 void HeitaPommi()
 {
     Grenade pommi = new Grenade(10.5); //luodaan pommi
     pommi.Image = pomminKuva; //asetetaan sille tekstuurit
     pelaaja.Throw(pommi, Angle.FromDegrees(30), 1);//heitetään se
     pommi.Explosion.ShockwaveReachesObject += KranaattiOsui; //collisionhandler
 }