public void Start() { if (!projectileController) { projectileController = gameObject.GetComponent <RoR2.Projectile.ProjectileController>(); } if (projectileController) { var owner = projectileController.Networkowner; if (owner) { deployableTracker = owner.GetComponent <ProjectileDeployableTracker>(); } } if (deployableTracker) { switch (deployableType) { case PerPlayerDeployableType.Saw: deployableTracker.sawList.Add(gameObject); break; } } }
private void ProjectileController_OnDestroy(On.RoR2.Projectile.ProjectileController.orig_OnDestroy orig, RoR2.Projectile.ProjectileController self) { orig(self); if (!self.GetComponent <ProjectileHasValidHitFlag>() && self.owner == this.localUser.cachedBodyObject) { userProfile.statSheet.PushStatValue(Mug.instance.whiffsStatDef, 1UL); if (ProgressForAchievement() >= 1.0f) { Grant(); } } }
private void ProjectileController_OnTriggerEnter(On.RoR2.Projectile.ProjectileController.orig_OnTriggerEnter orig, RoR2.Projectile.ProjectileController self, Collider collider) { orig(self, collider); if (!collider.gameObject) { return; } var hb = collider.gameObject.GetComponent <HurtBox>(); if (hb && hb.healthComponent) { self.gameObject.AddComponent <ProjectileHasValidHitFlag>(); } }
void UpdateThreatAssessment(float dt) { float threatDist = 1000f; float dist = 100f; float num = float.PositiveInfinity; Collider[] colliders = Physics.OverlapSphere(character.transform.position, 100f, LayerIndex.entityPrecise.mask); Collider[] colliders1 = Physics.OverlapSphere(character.transform.position, 25f, LayerIndex.projectile.mask); if (colliders.Length > 30 || colliders1.Length > 30) { threatDist = 0f; } else { foreach (Collider collider in colliders) { float distance = Vector3.Distance(character.transform.position, collider.transform.position); if (distance < num) { HurtBox a = collider.GetComponent <HurtBox>(); if (a) { HealthComponent b = a.healthComponent; if (b && (b.gameObject == character.gameObject || b.body.teamComponent.teamIndex <= TeamIndex.Player)) { continue; } if (distance == 0) { threatDist = 0; break; } num = distance; } } } if (threatDist != 0f) { foreach (Collider collider in colliders1) { float distance = Vector3.Distance(character.transform.position, collider.transform.position); if (distance < num) { //HurtBox a = collider.GetComponent<HurtBox>(); //if (a) //{ // HealthComponent b = a.healthComponent; // if (b && b.gameObject == character.gameObject) // { // continue; // } // if (distance == 0) // { // threatDist = 0; // break; // } // num = distance; //} RoR2.Projectile.ProjectileController projectileController = collider.transform.root.GetComponentInChildren <RoR2.Projectile.ProjectileController>(); if (projectileController) { if (projectileController.teamFilter.teamIndex <= TeamIndex.Player || projectileController.owner == character.gameObject) { continue; } } if (distance == 0) { threatDist = 0; break; } num = distance; } } } if (!float.IsPositiveInfinity(num)) { threatDist = num; } else { threatDist = dist; } } //List<Collider> colliderList = new List<Collider>(); //Collider[] tempColliders; //Collider[] tempColliders2; //tempColliders = Physics.OverlapBox(character.transform.position, new Vector3(50f, 50f, 50f), character.transform.rotation, LayerIndex.projectile.mask); //tempColliders2 = Physics.OverlapBox(character.transform.position, new Vector3(50f, 50f, 50f), character.transform.rotation, LayerIndex.entityPrecise.mask); //if (tempColliders.Length > 0) //{ // foreach (Collider col in tempColliders) // { // if (col.gameObject.transform.root.GetComponentInChildren<RoR2.Projectile.ProjectileController>().owner!=character.gameObject) // colliderList.Add(col); // } //} //if (tempColliders2.Length > 0) //{ // foreach (Collider coll in tempColliders2) // { // if (coll.gameObject.transform.root.GetComponentInChildren<CharacterBody>() != null) // { // GameObject root = coll.gameObject.transform.root.gameObject; // if (root.GetComponentInChildren<CharacterBody>().teamComponent.teamIndex >= TeamIndex.Monster && root.GetComponentInChildren<HurtBoxGroup>().mainHurtBox.collider == coll) // colliderList.Add(coll); // } // else // { // R2API.Utils.ChatMessage.Send("Found " + coll.gameObject.name + "'s collider"); // } // } //} //if (colliderList.Contains(character.mainHurtBox.collider)) // R2API.Utils.ChatMessage.Send("Still added Samus' collider"); //if (colliderList.Count != 0) //{ //R2API.Utils.ChatMessage.Send(dt+": found " + colliderList.Count + " colliders"); //foreach (Collider item in colliderList) //{ // float tempDist = Vector3.Distance( item.transform.position,temp); // if (tempDist < dist&&item!=character.mainHurtBox.collider) // dist = tempDist; //} //R2API.Utils.ChatMessage.Send("closest dist: "+dist); //if (dist < threatDist) // threatDist = dist; //} //colliderList.Clear(); //solveEnvironentDamage(); //if(envDamage) //{ // threatDist = 0f; //} if (threatIntf.isActive(false)) { threatIntf.SetThreatDistance(threatDist); } }
private void ProjectileController_OnTriggerEnter(On.RoR2.Projectile.ProjectileController.orig_OnTriggerEnter orig, RoR2.Projectile.ProjectileController self, Collider collider) { orig(self, collider); if (collider == null || !collider.gameObject || !self || !self.owner) { return; } var hb = collider.gameObject.GetComponent <HurtBox>(); var ob = self.owner.GetComponent <CharacterBody>(); var count = GetCount(ob); if (hb && hb.healthComponent && count > 0 && hb.healthComponent != self.owner.GetComponent <HealthComponent>() && hb.teamIndex == TeamComponent.GetObjectTeam(self.owner)) { new MsgHealTargetAndSelf(hb.healthComponent, ob.healthComponent, count * self.procCoefficient, self.procChainMask) .Send(R2API.Networking.NetworkDestination.Server); } }