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."); }
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); } } } } }
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; }