void Awake() { m_pMovements = GetComponent <AePlayerMovements>(); m_pMouseX = GetComponent <AeMouseLookX>(); m_pMouseY = GetComponentInChildren <AeMouseLookY>(); m_pBones = GetComponent <AeBones>(); m_pStats = GetComponent <AeStats>(); m_pNetworkCaller = GetComponent <AeNetworkPlayerController>(); m_pAnimator = GetComponent <AeAnimSynchronizer>(); m_pInputs = GetComponent <AeInputController>(); m_pWeaponHandler = GetComponentInChildren <AeNetShoot>(); m_pNickNameHandler = GetComponentInChildren <AeHeadName>(); m_pTrigger = GetComponent <AePlayerTrigger>(); m_pStatsSynchronizer = GetComponentInChildren <AeControllerStats>(); controller = GetComponent <CharacterController>(); Component [] Cameras = gameObject.GetComponentsInChildren <Camera>(); NormalCam = Cameras[0].GetComponent <Camera>(); GunCam = Cameras[1].GetComponent <Camera>(); Listener = GetComponentInChildren <AudioListener>(); if (networkView.isMine) { m_pMouseX.enabled = true; m_pMouseY.enabled = true; NormalCam.enabled = true; GunCam.enabled = true; Listener.enabled = true; m_pTrigger.enabled = true; } }
public static bool canDamage(Gauntlet g, AeStats h, bool isMine) { if (!h.AlreadyTouchedByMagic) { if (!isMine) { return(true); } else if (g.SelfDamage) { return(true); } } else if (g.MultipleTimeDamage) { if (!isMine) { return(true); } else if (g.SelfDamage) { return(true); } } return(false); }
void DoExplosion(GameObject epicenter) { var layerMask = ~(1 << 8); Collider [] RangedToExplosion = Physics.OverlapSphere(epicenter.transform.position, 3.0f); for (int i = 0; i < RangedToExplosion.Length; i++) { if (AeTools.isEnnemy(RangedToExplosion[i].tag)) { RaycastHit newHit; AeStats stat = RangedToExplosion[i].transform.root.GetComponent <AeStats>(); if (stat != null && AeTools.canDamage(this, stat, stat.networkView.isMine)) { if (Physics.Linecast(epicenter.transform.position, RangedToExplosion[i].transform.position, out newHit, layerMask)) { if (AeTools.isEnnemy(newHit.transform.tag)) { HitDamageInfo info = new HitDamageInfo(); stat.AlreadyTouchedByMagic = true; info.stat = stat; info.damageLocation = newHit.transform.tag; info.hit = newHit; info.isEnnemy = true; info.weaponID = m_iItemID; info.weaponDamage = Damage; info.player = stat.networkView; info.physicsFailed = false; AeCore.m_pCoreGame.m_pNetworkHandler.ServerInformations.GetCurrentMode().SendAttack(info); } } else { HitDamageInfo info = new HitDamageInfo(); stat.AlreadyTouchedByMagic = true; info.stat = stat; info.damageLocation = RangedToExplosion[i].transform.tag; info.isEnnemy = true; info.weaponID = m_iItemID; info.weaponDamage = Damage; info.player = stat.networkView; info.physicsFailed = false; AeCore.m_pCoreGame.m_pNetworkHandler.ServerInformations.GetCurrentMode().SendAttack(info); } } } } }
void OnTriggerEnter(Collider collid) { if (transform.root.networkView.isMine) { if (AeTools.isEnnemy(collid.tag)) { AeStats h = collid.transform.root.GetComponent <AeStats>(); if (AeTools.canDamage(gauntlet, h, collid.transform.root.networkView.isMine)) { buildInfo(collid.gameObject, h); } } } }
void buildInfo(GameObject obj, AeStats h) { HitDamageInfo info = new HitDamageInfo(); h.AlreadyTouchedByMagic = true; info.damageLocation = obj.tag; info.weaponDamage = gauntlet.Damage; info.isEnnemy = true; info.physicsFailed = false; info.player = obj.transform.root.networkView; info.stat = h; info.weaponID = gauntlet.m_iItemID; Collided.Add(info); AeCore.m_pCoreGame.m_pNetworkHandler.ServerInformations.GetCurrentMode().SendAttack(info); }
public static HitDamageInfo ShootingRaycast(Transform spawn, Vector3 direction, float range, float force, int damage, int weaponID) { HitDamageInfo info = new HitDamageInfo(); RaycastHit hit; Vector3 tempDir = spawn.TransformDirection(direction); var layerMask = ~(1 << 8); if (Physics.Raycast(spawn.position, tempDir, out hit, range, layerMask)) { if (hit.rigidbody) { hit.rigidbody.AddForceAtPosition(force * tempDir, hit.point); } if (AeTools.isEnnemy(hit.collider.tag)) { AeStats healthInfo = hit.collider.transform.root.GetComponent <AeStats>(); info.isEnnemy = true; info.damageLocation = hit.collider.tag; info.player = hit.collider.transform.root.networkView; info.stat = healthInfo; info.weaponDamage = damage; info.weaponID = weaponID; } else { info.damageLocation = hit.collider.tag; } } else { info.physicsFailed = true; } info.hit = hit; return(info); }