示例#1
0
    private Item LootHammer(int currentItemLevel)
    {
        Item testItem     = new Weapon_Melee();
        int  rarity       = Rarity();
        int  nIL          = NewItemLevel(rarity, currentItemLevel);
        int  degreesSecun = Degrees();
        int  degreesPri   = Degrees();
        int  amountSecun  = 1;
        int  amountPrim   = 1;

        if (degreesSecun != 0)
        {
            amountSecun = AmountSecun();
        }
        if (degreesPri != 0)
        {
            amountPrim = AmountPrimary();
        }

        bool rOL = false;

        if (rarity >= 2)
        {
            rOL = true;
        }
        string secun = Database.hostInstance.GetMeleeSecundary(rOL);

        //Item Creation XD
        testItem.StartUp(Database.hostInstance.GetHammerName(), rarity, Database.hostInstance.GetHammerSprite(), NewStats(nIL), Database.hostInstance.GetHammerObject(), nIL);
        testItem.StartWeapon(BaseDamage(nIL), FireRate(), secun, SecundaryFR(), ChargeTime(), Force(), 1, 0, Buff(secun), Single(secun));
        testItem.StartMelee(Range(), Knockback());
        //end item creation
        return(testItem);
    }
示例#2
0
    void OnTriggerEnter(Collider otherCollider)
    {
        GameObject other = otherCollider.gameObject;

        //print("Collectible --> OnTriggerEnter: " + other.name);

        if (CommonObjects.IsPlayer(other))
        {
            if (!MustBePurchased || Inventory.Instance.TrySpendRupees(price))
            {
                Collect();
            }
        }
        else
        {
            if (!MustBePurchased)
            {
                Weapon_Melee w = other.GetComponent <Weapon_Melee>();
                if (w != null)
                {
                    w.OnHitCollectible(this);
                }
            }
        }
    }
示例#3
0
    private Item LootOtherWeapon(int currentItemLevel)
    {
        Item otherWeapon = new Weapon_Melee();
        int  rarity      = Rarity();
        int  nIL         = NewItemLevel(rarity, currentItemLevel);
        int  myItem      = Database.hostInstance.OW();
        bool rOL         = false;

        if (rarity >= 2)
        {
            rOL = true;
        }
        string secun = Database.hostInstance.GetMeleeSecundary(rOL);

        otherWeapon.StartUp(Database.hostInstance.GetOWName(myItem), rarity, Database.hostInstance.GetOWSprite(myItem), NewStats(nIL), Database.hostInstance.GetOWObject(myItem), nIL);
        otherWeapon.StartWeapon(BaseDamage(nIL), FireRate(), secun, SecundaryFR(), ChargeTime(), Force(), 1, 0, Buff(secun), Single(secun));
        otherWeapon.StartMelee(Range(), 0);
        return(otherWeapon);
    }
示例#4
0
    private Item LootAxe(int currentItemLevel)
    {
        Item testItem = new Weapon_Melee();
        int  rarity   = Rarity();
        int  nIL      = NewItemLevel(rarity, currentItemLevel);

        bool rOL = false;

        if (rarity >= 2)
        {
            rOL = true;
        }
        string secun = Database.hostInstance.GetMeleeSecundary(rOL);

        //Item Creation XD
        testItem.StartUp(Database.hostInstance.GetAxeName(), rarity, Database.hostInstance.GetAxeSprite(), NewStats(nIL), Database.hostInstance.GetAxeObject(), nIL);
        testItem.StartWeapon(BaseDamage(nIL), FireRate(), secun, SecundaryFR(), ChargeTime(), Force(), 1, 0, Buff(secun), Single(secun));
        testItem.StartMelee(Range(), 0);
        //end item creation
        return(testItem);
    }
示例#5
0
    private void WeaponSlot_OnUsePrimary()
    {
        if (isDropped || isDecoy)
        {
            return;
        }

        // Ranged Attack.
        if (WeaponSlot.currentWeapon is Weapon_Ranged)
        {
            Weapon_Ranged weapon = WeaponSlot.currentWeapon as Weapon_Ranged;

            ProjectileManager.ProjectileData data = new ProjectileManager.ProjectileData
            {
                spawnPosition       = ProjectileManager.instance.GetProjectileSpawn(this, weapon.primaryProjectile),
                spawnRotation       = projectileSpawn.rotation,
                projectilePool      = weapon.primaryProjectile,
                speed               = ProjectileManager.instance.GetProjectileSpeed(weapon.force, weapon.primaryProjectile),
                damage              = weapon.baseDamage + Player.localPlayer.entity.CalculateDamage(Stats.DamageType.Ranged),
                amount              = weapon.amountOfProjectiles,
                coneOfFireInDegrees = weapon.coneOfFireInDegrees,
                mousePos            = PlayerController.mouseInWorldPos,
                projectileOwnerID   = Player.localPlayer.photonView.ViewID
            };
            ProjectileManager.instance.FireProjectile(data);
        }
        // Melee Attack.
        else
        {
            Weapon_Melee weapon = WeaponSlot.currentWeapon as Weapon_Melee;

            int collidersFound = Physics.OverlapSphereNonAlloc(transform.position, weapon.attackRange, meleeHits, hitLayerMask);

            bool pvp = false;
            for (int i = 0; i < collidersFound; i++)
            {
                if (meleeHits[i].transform.tag == "PvPZone")
                {
                    pvp = true;
                }
            }

            for (int i = 0; i < collidersFound; i++)
            {
                Vector3 toHit = meleeHits[i].transform.position - Player.localPlayer.playerController.body.position;
                if (Vector3.Dot(Player.localPlayer.playerController.body.forward, toHit) > 0)
                {
                    Entity entity = meleeHits[i].GetComponent <Entity>();
                    if (entity)
                    {
                        if (pvp ? meleeHits[i].transform.tag == "Player" : meleeHits[i].transform.tag != "Player")
                        {
                            entity.Hit(-(weapon.baseDamage + Player.localPlayer.entity.CalculateDamage(Stats.DamageType.Melee)), Stats.DamageType.Melee, WeaponSlot.weaponBuffs);

                            // TODO: Change this to an event or a parameter in Entity.Hit()
                            UIManager.instance.playerStatusCanvas.Hit();

                            if (weapon.knockBack > 0 && !pvp)
                            {
                                entity.KnockBack(toHit, weapon.knockBack);
                            }
                        }
                    }

                    if (!string.IsNullOrEmpty(prefabToSpawnOnHit))
                    {
                        GameObject newSpawn = ObjectPooler.instance.GrabFromPool(prefabToSpawnOnHit, meleeHits[i].ClosestPoint(transform.position), Quaternion.identity);
                    }
                }
            }
        }
    }