示例#1
0
        private void OnModelLoaded(GameObject args)
        {
            weaponPrefab = args;

            thisWeapon = new WeaponChance(weaponPrefab, (int)spawnChance, new bool[]
            {
                canPary,
                canBeParried,
                stickOnDamage,
                hideHandOnGrab,
                isCurrentlyGrabbable,
                setPositionOnGrab,
                setRotationOnGrab,
                canAlsoCut,
                isDamaging
            }, new float[]
            {
                impaleZDamper,
                connectedBMass,
                impaleBreakForce,
                scaleDamage,
                bonusVelocity,
                impaleDepth,
                damageType,
                weaponType,
                addForceToRigidbodyFactor
            });

            ModUtilities.toInvokeOn.AddWeaponToList(thisWeapon);

            Debug.Log(args.name + " has loaded.");
        }
示例#2
0
        public void OnEnemySpawn(Enemy enemy, Crab crab)
        {
            if (enemy != null)
            {
                if (spawnChance < r)
                {
                    return;
                }

                WeaponChance weapon = ModUtilities.GetWeaponFromList(thisWeapon);

                if (weapon == null)
                {
                    return;
                }

                enemy.rightFist.GetComponent <GrabHand> ().LetGo();
                enemy.leftFist.GetComponent <GrabHand> ().LetGo();

                GameObject w = UnityEngine.Object.Instantiate(weapon.weapon, enemy.rightFist.GetComponent <GrabHand> ().anchorPoint.position, enemy.rightFist.GetComponent <GrabHand> ().anchorPoint.rotation);

                w.AddComponent <MyWeaponSetUp> ().SetUp(weapon);

                enemy.rightFist.GetComponent <TestGrabJoint> ().rigidbodyToGrab = w.GetComponent <WeaponBase> ().grabbable;
                enemy.rightFist.GetComponent <TestGrabJoint> ().grab            = true;

                ArmorPiece[] componentsInChildren = enemy.GetComponentsInChildren <ArmorPiece> ();
                for (int i = 0; i < componentsInChildren.Length; i++)
                {
                    foreach (Collider collider in componentsInChildren[i].GetComponentsInChildren <Collider> ())
                    {
                        foreach (Collider collider2 in w.GetComponentsInChildren <Collider> ())
                        {
                            Physics.IgnoreCollision(collider, collider2, true);
                        }
                    }
                }
            }
        }
示例#3
0
        public void SetUp(WeaponChance weapon)
        {
            gameObject.AddComponent <WeaponBase> ().type = (WeaponType)weapon.weaponType;

            WeaponBase wb = GetComponent <WeaponBase> ();

            blade  = transform.GetChild(0).gameObject;
            handle = transform.GetChild(1).gameObject;

            if (handle == null || blade == null)
            {
                Debug.LogError("BLADE OR HANDLE IS MISSING!");
                return;
            }

            handle.AddComponent <WeaponHandle> ();

            WeaponHandle wh = handle.GetComponent <WeaponHandle> ();

            wb.grabbable    = wh;
            wb.canParry     = weapon.canPary;
            wb.canBeParried = weapon.canBeParried;
            wb.addForceToRigidbodyFactor = weapon.addForceToRigidbodyFactor;

            wh.grabRigidbody       = wh.GetComponent <Rigidbody> ();
            wh.hideHandModelOnGrab = weapon.hideHandOnGrab;
            wh.isCurrentlyGrabbale = weapon.isCurrentlyGrabbable;
            wh.setPositionOnGrab   = weapon.setPositionOnGrab;
            wh.setRotationOnGrab   = weapon.setRotationOnGrab;

            DamagerRigidbody drb = blade.AddComponent <DamagerRigidbody> ();

            drb.scaleDamage   = weapon.scaleDamage;
            drb.canAlsoCut    = weapon.canAlsoCut;
            drb.bonusVelocity = weapon.bonusVelocity;
            drb.isDamaging    = weapon.isDamaging;
            drb.impaleDepth   = weapon.impaleDepth;
            drb.damageType    = (DamageType)weapon.damageType;

            handle.AddComponent <FootStepSound> ().soundEffectName    = "WeaponDrop";
            handle.GetComponent <FootStepSound> ().minVolumeToTrigger = 0.05f;

            try {
                if (transform.GetChild(2) != null)
                {
                    drb.heartStabPoint = transform.GetChild(2);

                    drb.impaledBreakForce             = weapon.impaleBreakForce;
                    drb.impaledZDamper                = weapon.impaleZDamper;
                    drb.impaledConnectedBodyMassScale = weapon.connectedBMass;
                }
            }
            catch {
                return;
            }

            /*
             * BezierConnector bc = blade.AddComponent<BezierConnector> ();
             *
             * bc.midPoints = new Transform[4] { blade.transform.GetChild(2), blade.transform.GetChild ( 2 ).GetChild(0), blade.transform.GetChild ( 2 ).GetChild(0).GetChild(0), blade.transform.GetChild ( 2 ).GetChild ( 0 ).GetChild ( 0 ).GetChild(0) };
             *
             * bc.orientTransforms = true;
             *
             * bc.end = blade.transform.GetChild(1);
             * bc.origin = blade.transform.GetChild(0);
             * bc.clampAngleTo = 30;
             */
            return;
        }