public override void OnEquip(Inventory equipper) { DamageReciever dr = equipper.myPawn.GetComponent <DamageReciever>(); dr.Resistances.GenericResistance.SetModifier("resAugment", Resistance); dr.Resistances.ProjectileResistance.SetModifier("resAugment", Resistance); }
public virtual void DeathBehavior(Pawn killer) { if (killer) { //Debug.Log("Ye killed me, " + killer.name); } _controller.ProcessTree = false; if (moveScript) { moveScript.enabled = false; } Rigidbody rb = GetComponent <Rigidbody>(); if (rb) { rb.freezeRotation = false; } DamageReciever dr = GetComponent <DamageReciever>(); if (dr) { dr.enabled = false; } LookAtTarget ls = GetComponent <LookAtTarget>(); if (ls) { ls.enabled = false; } Destroy(gameObject, 3.0f); }
public virtual void ApplyDamage() { for (int i = 0; i < _intersectingColliders.Count; i++) { Collider c = _intersectingColliders[i]; if (!c) { _intersectingColliders.Remove(c); i--; } else { DamageReciever dr = c.GetComponent <DamageReciever>(); if (dr) { if (_damageRecipient) { if (_damageRecipient == c.gameObject) { dr.TakeDamageFrom(this); } } else { dr.TakeDamageFrom(this); } } } } SetFreezePosition(false); currentlyAttacking = false; }
public static void DealDamageToTarget(GameObject target, DamagePacket dmg, Pawn source, RaycastHit?hitInfo = null) { DamageReciever targetDR = target.GetComponent <DamageReciever>(); float kbRes = 0.0f; if (targetDR) { int finalDamage = targetDR.CalculateDamage(dmg); targetDR.TakeDamage(finalDamage, source); kbRes = Mathf.Clamp01(targetDR.Resistances.KnockbackResistance.Value); if (targetDR.HitParticles && hitInfo.HasValue && finalDamage > 0) { GameObject spawnedParticles = Instantiate(targetDR.HitParticles, hitInfo.Value.point, Quaternion.identity); spawnedParticles.transform.forward = hitInfo.Value.normal; } } Rigidbody targetRB = target.GetComponent <Rigidbody>(); if (targetRB) { float finalKnockback = Mathf.Max(0.0f, dmg.Knockback * (1.0f - kbRes)); Vector3 knockbackVector = (targetRB.transform.position - source.transform.position).normalized * finalKnockback; knockbackVector.y = finalKnockback * verticalKnockbackScalar; if (hitInfo.HasValue) { targetRB.AddForceAtPosition(knockbackVector, hitInfo.Value.point, ForceMode.Impulse); } else { targetRB.AddForce(knockbackVector, ForceMode.Impulse); } } }
public override bool DoAttack(GameObject target, Pawn user) { if (Ammo > 0) { Ammo--; } else if (Ammo == 0) { return(false); } //Else if ammo < 0 then player has "infinite" ammo //Just basic hitscan if (_anim) { _anim.SetTrigger("attack"); } RaycastHit hit; if (Physics.Raycast(transform.position, transform.forward, out hit, maxRange, hittable, QueryTriggerInteraction.Ignore)) { DamageReciever.DealDamageToTarget(hit.transform.gameObject, ScaleDamageByCharge(Damage), user, hit); return(true); } return(false); }
protected virtual void OnTriggerExit(Collider other) { DamageReciever dr = other.GetComponent <DamageReciever>(); if (dr && WhereToDamage == DamageZone.OUTSIDE) { dr.Die(null); } }
public override bool DoAttack(GameObject target, Pawn user) { if (_anim) { _anim.SetTrigger("attack"); } if (target) { RaycastHit?hitInfo = null; if (user is PlayerPawn) { PlayerPawn playerUser = user as PlayerPawn; hitInfo = playerUser.Raycaster.RaycastInfo.HitInfo; } DamageReciever.DealDamageToTarget(target, ScaleDamageByCharge(Damage), user, hitInfo); ResetAttackCharge(); if (AttackCharge >= 0.848f) { Collider[] foundColliders = Physics.OverlapSphere(target.transform.position, SweepAttackRadius, Physics.AllLayers, QueryTriggerInteraction.Ignore); foreach (Collider col in foundColliders) { Pawn foundPawn = col.GetComponent <Pawn>(); if (foundPawn) { bool hitThisPawn = true; if (user) { hitThisPawn = user.MyFaction != foundPawn.MyFaction; } if (hitThisPawn) { DamageReciever.DealDamageToTarget(target, SweepAttackDamage, user, hitInfo); } } } } return(true); } ResetAttackCharge(); return(false); }
protected virtual void CollideWith(RaycastHit hitInfo) { DamageReciever.DealDamageToTarget(hitInfo.transform.gameObject, _damage, _source, hitInfo); if (AfterCollisionLifeTime > 0 && !hitInfo.transform.GetComponent <ProjectileNonStick>()) { Destroy(gameObject, AfterCollisionLifeTime); } else { Destroy(gameObject); } FreezePosition = true; transform.parent = hitInfo.transform; _trail.enabled = false; }
public override bool DoAttack(GameObject target, Pawn user) { if (_anim) { _anim.SetTrigger("attack"); } if (target) { DamageReciever.DealDamageToTarget(target, ScaleDamageByCharge(Damage), user); ResetAttackCharge(); return(true); } ResetAttackCharge(); //If no target found to take damage, return false. return(false); }
private void OnCollisionEnter(Collision collision) { if (collision.gameObject == de.owner) { return; } DamageReciever dr = collision.gameObject.GetComponent <DamageReciever>(); if (dr) { dr.TakeDamageFrom(de); } Destroy(gameObject); }
private void OnTriggerEnter(Collider other) { DamageReciever damageReciever = other.gameObject.GetComponent <DamageReciever>(); if (damageReciever != null) { //print("Damage dealt in the amount of " + damageAmount); damageReciever.DamageRecieved(damageAmount); if (this.gameObject.CompareTag("Punch")) { AudioSource audioSource = GetComponent <AudioSource>(); if (audioSource != null) { audioSource.Play(); //add code to randomize pitch later } } } }
protected virtual void FixedUpdate() { if (_initialized) { float distanceTravelledThisUpdate = Speed * Time.fixedDeltaTime; RaycastHit hit; if (Physics.Raycast(transform.position, transform.forward, out hit, distanceTravelledThisUpdate, hittableLayers, QueryTriggerInteraction.Ignore)) { DamageReciever dr = hit.transform.GetComponent <DamageReciever>(); if (dr) { dr.ApplyDamage(Damage); } transform.position = hit.point; Destroy(gameObject); } else { transform.position += transform.forward * distanceTravelledThisUpdate; } } }
public virtual void OnKill(DamageReciever victim) { }
public override void OnKill(DamageReciever victim) { MyEnergyManager.AddEnergy(OnKillEnergyIncrease); }
public override void OnEquip(Inventory equipper) { DamageReciever dr = equipper.myPawn.GetComponent <DamageReciever>(); dr.Resistances.KnockbackResistance.SetModifier("steadfastAugment", 1.0f - dr.Resistances.KnockbackResistance.Value); }
public override void OnUnequip(Inventory equipper) { DamageReciever dr = equipper.myPawn.GetComponent <DamageReciever>(); dr.Resistances.GenericResistance.RemoveModifier("steadfastAugment"); }