private void OnCollisionEnter2D(Collision2D collision) { var bs = collision.gameObject.GetComponent <BulletScript>(); if (bs != null) { float dt = 0, dr = 0; if (GameState.Instance.Player.Armor > 0) { dt = HasArmorDT; dr = HasArmorDR; GameState.Instance.Player.Armor -= bs.Damage + bs.DamagePierce; } float bulletDamage = DamageUtil.CalculateDamage(bs.Damage, bs.DamagePierce, dt, dr); GameState.Instance.Player.Health -= bulletDamage; //gameUI.GetComponent<HealthUI>().LoseHealth(); if (GameState.Instance.Player.Health <= 0) { Debug.Log("Game Over"); MessageInterface.PushToBus(new PlayerDeathMessage()); //gameOverScene.SetActive(true); //TODO make this signal a gamecontroller, preferably using messaging, because I mean DAMN } Destroy(collision.gameObject); } }
public override void OnJungleClear() { if (!EntityManager.MinionsAndMonsters.Monsters.Any(m => m.Distance(Player.Instance) < Q.Range)) { return; } var targets = EntityManager.MinionsAndMonsters.Monsters.Where(t => t.IsValidTarget(Q.Range) && t.IsValidTarget(Q.Range)); var jungleclear = Features.Find(f => f.NameFeature == "Jungle Clear"); if (!targets.Any() || jungleclear.SliderValue("mana") > Player.Instance.ManaPercent) { return; } var bestTarget = targets.Aggregate((curMax, x) => ((curMax == null && x.IsValid) || x.MaxHealth > curMax.MaxHealth ? x : curMax)); if (Q.IsReady() && jungleclear.IsChecked("jungleclear.q")) { Q.Cast(Q.GetPrediction(bestTarget).CastPosition); } if (E.IsReady() && jungleclear.IsChecked("jungleclear.e") && DamageUtil.Killable(bestTarget, SpellSlot.E) && bestTarget != Orbwalker.LastTarget) { E.Cast(bestTarget); } }
public void DoFlame(float delta) { if (!UseFuel(delta)) { return; } Ray ray = new Ray(GetEyePosition(), base.transform.TransformDirection(Quaternion.Euler(aimDir) * Vector3.forward)); Vector3 origin = ray.origin; RaycastHit hitInfo; bool flag = Physics.SphereCast(ray, 0.4f, out hitInfo, flameRange, 1218652417); if (!flag) { hitInfo.point = origin + ray.direction * flameRange; } float amount = damagePerSec[0].amount; damagePerSec[0].amount = amount * delta; DamageUtil.RadiusDamage(this, LookupPrefab(), hitInfo.point - ray.direction * 0.1f, flameRadius * 0.5f, flameRadius, damagePerSec, 2230272, true); DamageUtil.RadiusDamage(this, LookupPrefab(), base.transform.position + new Vector3(0f, 1.25f, 0f), 0.25f, 0.25f, damagePerSec, 133120, false); damagePerSec[0].amount = amount; if (Time.realtimeSinceStartup >= nextFireballTime) { nextFireballTime = Time.realtimeSinceStartup + UnityEngine.Random.Range(1f, 2f); Vector3 vector = ((UnityEngine.Random.Range(0, 10) <= 7 && flag) ? hitInfo.point : (ray.origin + ray.direction * (flag ? hitInfo.distance : flameRange) * UnityEngine.Random.Range(0.4f, 1f))); BaseEntity baseEntity = GameManager.server.CreateEntity(fireballPrefab.resourcePath, vector - ray.direction * 0.25f); if ((bool)baseEntity) { baseEntity.creatorEntity = this; baseEntity.Spawn(); } } }
private void Start() { _rigidbody2D = GetComponent <Rigidbody2D>(); var health = GetComponentInChildren <HealthBar>(); _damageUtil = new DamageUtil(health); _movementUtil = new MobileMovementUtil(_rigidbody2D, transform, Bullet, MoveSpeed, true); }
public virtual void Explode() { base.health = float.PositiveInfinity; Effect.server.Run(explosionEffect.resourcePath, PivotPoint(), base.transform.up, null, true); DamageUtil.RadiusDamage(this, LookupPrefab(), CenterPoint(), minExplosionRadius, explosionRadius, damageTypes, 2263296, true); if (!base.IsDestroyed) { Kill(); } }
public void OnCollisionEnter2D(Collision2D collision) { var bs = collision.gameObject.GetComponent <BulletScript>(); if (bs != null) { Health -= DamageUtil.CalculateDamage(bs.Damage, bs.DamagePierce, DamageThreshold, DamageResistance); bs.Die(); CheckIfDead(); } }
public virtual void Explode() { this.health = float.PositiveInfinity; Effect.server.Run(this.explosionEffect.resourcePath, this.PivotPoint(), ((Component)this).get_transform().get_up(), (Connection)null, true); DamageUtil.RadiusDamage((BaseEntity)this, this.LookupPrefab(), this.CenterPoint(), this.minExplosionRadius, this.explosionRadius, this.damageTypes, 2230528, true); if (this.IsDestroyed) { return; } this.Kill(BaseNetworkable.DestroyMode.None); }
public void FlameTick() { RaycastHit raycastHit; float single = UnityEngine.Time.realtimeSinceStartup - this.lastFlameTick; this.lastFlameTick = UnityEngine.Time.realtimeSinceStartup; BasePlayer ownerPlayer = base.GetOwnerPlayer(); if (!ownerPlayer) { return; } this.ReduceAmmo(single); base.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); Ray ray = ownerPlayer.eyes.BodyRay(); Vector3 vector3 = ray.origin; bool flag = UnityEngine.Physics.SphereCast(ray, 0.3f, out raycastHit, this.flameRange, 1218652417); if (!flag) { raycastHit.point = vector3 + (ray.direction * this.flameRange); } float single1 = (ownerPlayer.IsNpc ? this.npcDamageScale : 1f); float item = this.damagePerSec[0].amount; this.damagePerSec[0].amount = item * single * single1; DamageUtil.RadiusDamage(ownerPlayer, base.LookupPrefab(), raycastHit.point - (ray.direction * 0.1f), this.flameRadius * 0.5f, this.flameRadius, this.damagePerSec, 2246913, true); this.damagePerSec[0].amount = item; if (flag && UnityEngine.Time.realtimeSinceStartup >= this.nextFlameTime && raycastHit.distance > 1.1f) { this.nextFlameTime = UnityEngine.Time.realtimeSinceStartup + 0.45f; Vector3 vector31 = raycastHit.point; GameManager gameManager = GameManager.server; string str = this.fireballPrefab.resourcePath; Vector3 vector32 = vector31 - (ray.direction * 0.25f); Quaternion quaternion = new Quaternion(); BaseEntity baseEntity = gameManager.CreateEntity(str, vector32, quaternion, true); if (baseEntity) { baseEntity.creatorEntity = ownerPlayer; baseEntity.Spawn(); } } if (this.ammo == 0) { this.SetFlameState(false); } Item ownerItem = base.GetOwnerItem(); if (ownerItem != null) { ownerItem.LoseCondition(single); } }
public virtual void Explode() { base.health = Single.PositiveInfinity; Effect.server.Run(this.explosionEffect.resourcePath, base.PivotPoint(), base.transform.up, null, true); DamageUtil.RadiusDamage(this, base.LookupPrefab(), base.CenterPoint(), this.minExplosionRadius, this.explosionRadius, this.damageTypes, 2230528, true); if (base.IsDestroyed) { return; } base.Kill(BaseNetworkable.DestroyMode.None); }
public override void Build(Vector3 finalPos, float buildTime, int fallheight, Ease easeType, BuildConfig.BuildableBlueprint blueprint) { _explosionMask = LayerMask.GetMask(maskList); base.Build(finalPos, buildTime, fallheight, easeType, blueprint); Tween t = transform.DOMove(finalPos, buildTime).SetEase(easeType).OnComplete(() => { DamageUtil.ApplyExplosionDamage(this, finalPos, _blueprint.explodeRadius, _blueprint.damage, _explosionMask, ref _cachedColliders); Singleton.instance.particleGod.GenerateParticle(Particle.Type.HelixBomb, finalPos); Singleton.instance.audioSystem.PlaySound(SoundBank.Type.HelixBomb); RemoveFromPool(); }); }
private void DoSplash(BasePlayer attacker, Vector3 position, Vector3 direction, int amount) { Item item = GetItem(); if (item != null && item.contents != null) { Item slot = item.contents.GetSlot(0); if (slot != null && slot.amount > 0 && !(slot.info == null)) { WaterBall.DoSplash(position, SplashRadius, slot.info, amount); DamageUtil.RadiusDamage(attacker, LookupPrefab(), position, MinDmgRadius, MaxDmgRadius, Damage, 131072, true); } } }
public void Update() { if (!isCasted) { return; } attackTimer -= Time.deltaTime; if (attackTimer <= 0) { attackTimer = config.attackInterval; List <Characer> targets = new List <Characer>(); if (config.isAoe) { targets = CharacerSearch.SearchTarget(caster, config.targetType, TargetFieltType.None); } else { targets.Add(target); } foreach (var t in targets) { DoAttack(t); } attackTimes++; } int maxTimes = config.attackTimes; if (attackTimes >= maxTimes) { isCasted = false; if (config.onePunch) { if (overflowDamage > 1) { var targets = CharacerSearch.SearchTarget(caster, TargetType.Enemy, TargetFieltType.None); foreach (var t in targets) { var damageInfo = DamageUtil.CalculateDamage(caster, t, overflowDamage); t.BeAttacked(damageInfo); } } } } }
private void applyDamage() { Vector3 position = transform.position; if (_blueprint != null) { DamageUtil.ApplyExplosionDamage(this, position, _blueprint.explodeRadius, _blueprint.damage, _explosionMask, ref _cachedCollider); } Singleton.instance.particleGod.GenerateParticle(Particle.Type.BaseExplosion, position); Singleton.instance.audioSystem.PlaySound(SoundBank.Type.Explosion, null, true); killTweens(); RemoveFromPool(); }
public void FlameTick() { float num = UnityEngine.Time.realtimeSinceStartup - lastFlameTick; lastFlameTick = UnityEngine.Time.realtimeSinceStartup; BasePlayer ownerPlayer = GetOwnerPlayer(); if (!ownerPlayer) { return; } ReduceAmmo(num); SendNetworkUpdate(); Ray ray = ownerPlayer.eyes.BodyRay(); Vector3 origin = ray.origin; RaycastHit hitInfo; bool num2 = UnityEngine.Physics.SphereCast(ray, 0.3f, out hitInfo, flameRange, 1218652417); if (!num2) { hitInfo.point = origin + ray.direction * flameRange; } float num3 = (ownerPlayer.IsNpc ? npcDamageScale : 1f); float amount = damagePerSec[0].amount; damagePerSec[0].amount = amount * num * num3; DamageUtil.RadiusDamage(ownerPlayer, LookupPrefab(), hitInfo.point - ray.direction * 0.1f, flameRadius * 0.5f, flameRadius, damagePerSec, 2279681, true); damagePerSec[0].amount = amount; if (num2 && UnityEngine.Time.realtimeSinceStartup >= nextFlameTime && hitInfo.distance > 1.1f) { nextFlameTime = UnityEngine.Time.realtimeSinceStartup + 0.45f; Vector3 point = hitInfo.point; BaseEntity baseEntity = GameManager.server.CreateEntity(fireballPrefab.resourcePath, point - ray.direction * 0.25f); if ((bool)baseEntity) { Interface.CallHook("OnFlameThrowerBurn", this, baseEntity); baseEntity.creatorEntity = ownerPlayer; baseEntity.Spawn(); } } if (ammo == 0) { SetFlameState(false); } GetOwnerItem()?.LoseCondition(num); }
void Explode(BasePlayer player) { // Initialize DamageTypeEntry - Explosion Rust.DamageTypeEntry dmg = new Rust.DamageTypeEntry(); dmg.amount = 100; dmg.type = Rust.DamageType.Generic; // Fire Effects Effect.server.Run("assets/bundled/prefabs/fx/fire/fire_v2.prefab", player.transform.position, Vector3.up); Effect.server.Run("assets/bundled/prefabs/fx/fire/fire_v2.prefab", player.transform.position + new Vector3(1, 0, 1), Vector3.up); Effect.server.Run("assets/bundled/prefabs/fx/fire/fire_v2.prefab", player.transform.position + new Vector3(1, 0, 0), Vector3.up); Effect.server.Run("assets/bundled/prefabs/fx/fire/fire_v2.prefab", player.transform.position + new Vector3(0, 0, 1), Vector3.up); // Explosion Effect Effect.server.Run("assets/prefabs/tools/c4/effects/c4_explosion.prefab", player.transform.position, Vector3.up, null, true); // Initialize HitInfo HitInfo hitInfo = new HitInfo() { Initiator = null, WeaponPrefab = null }; // Add DamageTypeEntry to HitInfo hitInfo.damageTypes.Add(new List <Rust.DamageTypeEntry> { dmg }); // Hurt Player DamageUtil.RadiusDamage(null, null, player.transform.position, 5, 10, new List <Rust.DamageTypeEntry> { dmg }, 133376, true); // Hurt Player // player.Hurt(hitInfo, true); timer.Once(5f, () => { // Kill player if still wounded if (player.IsWounded()) { player.DieInstantly(); } }); }
public void FlameTick() { float num1 = Time.get_realtimeSinceStartup() - this.lastFlameTick; this.lastFlameTick = Time.get_realtimeSinceStartup(); BasePlayer ownerPlayer = this.GetOwnerPlayer(); if (!Object.op_Implicit((Object)ownerPlayer)) { return; } this.ReduceAmmo(num1); this.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); Ray ray = ownerPlayer.eyes.BodyRay(); Vector3 origin = ((Ray) ref ray).get_origin(); RaycastHit raycastHit; int num2 = Physics.SphereCast(ray, 0.3f, ref raycastHit, this.flameRange, 1218652417) ? 1 : 0; if (num2 == 0) { ((RaycastHit) ref raycastHit).set_point(Vector3.op_Addition(origin, Vector3.op_Multiply(((Ray) ref ray).get_direction(), this.flameRange))); } float num3 = ownerPlayer.IsNpc ? this.npcDamageScale : 1f; float amount = this.damagePerSec[0].amount; this.damagePerSec[0].amount = amount * num1 * num3; DamageUtil.RadiusDamage((BaseEntity)ownerPlayer, this.LookupPrefab(), Vector3.op_Subtraction(((RaycastHit) ref raycastHit).get_point(), Vector3.op_Multiply(((Ray) ref ray).get_direction(), 0.1f)), this.flameRadius * 0.5f, this.flameRadius, this.damagePerSec, 2246913, true); this.damagePerSec[0].amount = amount; if (num2 != 0 && (double)Time.get_realtimeSinceStartup() >= (double)this.nextFlameTime && (double)((RaycastHit) ref raycastHit).get_distance() > 1.10000002384186) { this.nextFlameTime = Time.get_realtimeSinceStartup() + 0.45f; Vector3 point = ((RaycastHit) ref raycastHit).get_point(); BaseEntity entity = GameManager.server.CreateEntity(this.fireballPrefab.resourcePath, Vector3.op_Subtraction(point, Vector3.op_Multiply(((Ray) ref ray).get_direction(), 0.25f)), (Quaternion)null, true); if (Object.op_Implicit((Object)entity)) { entity.creatorEntity = (BaseEntity)ownerPlayer; entity.Spawn(); } } if (this.ammo == 0) { this.SetFlameState(false); } this.GetOwnerItem()?.LoseCondition(num1); }
public void DoAttack(Characer receiver) { var d = DamageUtil.CalculateDamage(caster, receiver, this); float hpChange = receiver.BeAttacked(d); overflowDamage += d.damage - hpChange; if (caster.special == CharacterSpecialType.RealDamage) { float damage = caster.attack * 1.2f; float max = receiver.maxHp * 0.1f; if (damage > max) { damage = max; } DamageInfo info = new DamageInfo(); info.damage = damage; receiver.BeAttacked(info); } }
private void OnTriggerEnter(Collider other) { if (other.GetComponent <Bullet>() != null) { return; } var damagable = Util.GetDamagableFromCollider(other); if (damagable != null && !_damaged) { _damaged = true; if (damagable.GetComponent <IDamagable>().Damage(damage)) { DamageUtil.ProgressKillQuests(responsible, damagable); } damagable.gameObject.GetComponent <Rigidbody>().AddForce(GetComponent <Rigidbody>().velocity.normalized *50); Destroy(this.gameObject); } }
// Start is called before the first frame update void Start() { var rb = GetComponent <Rigidbody2D>(); var health = GetComponentInChildren <HealthBar>(); _mobileInputController = GetComponentInChildren <MobileInputController>(); _damageUtil = new DamageUtil(health); _movementUtil = new MobileMovementUtil(rb, transform, Bullet, MoveSpeed, false); // Set Movement Events Jump.onClick.AddListener(() => { _movementUtil.Jump(); }); Shoot.onClick.AddListener(() => { _movementUtil.Shoot(); }); }
public override void OnKilled(HitInfo info) { double num1 = (double)this.GetFuelAmount() / 500.0; DamageUtil.RadiusDamage((BaseEntity)this, this.LookupPrefab(), this.GetEyePosition(), 2f, 6f, this.damagePerSec, 133120, true); Effect.server.Run(this.explosionEffect.resourcePath, ((Component)this).get_transform().get_position(), Vector3.get_up(), (Connection)null, false); int num2 = Mathf.CeilToInt(Mathf.Clamp((float)(num1 * 8.0), 1f, 8f)); for (int index = 0; index < num2; ++index) { BaseEntity entity = GameManager.server.CreateEntity(this.fireballPrefab.resourcePath, ((Component)this).get_transform().get_position(), ((Component)this).get_transform().get_rotation(), true); if (Object.op_Implicit((Object)entity)) { Vector3 onUnitSphere = Random.get_onUnitSphere(); ((Component)entity).get_transform().set_position(Vector3.op_Addition(Vector3.op_Addition(((Component)this).get_transform().get_position(), new Vector3(0.0f, 1.5f, 0.0f)), Vector3.op_Multiply(onUnitSphere, Random.Range(-1f, 1f)))); entity.Spawn(); entity.SetVelocity(Vector3.op_Multiply(onUnitSphere, (float)Random.Range(3, 10))); } } base.OnKilled(info); }
public override void OnKilled(HitInfo info) { float fuelAmount = (float)this.GetFuelAmount() / 500f; DamageUtil.RadiusDamage(this, base.LookupPrefab(), this.GetEyePosition(), 2f, 6f, this.damagePerSec, 133120, true); Effect.server.Run(this.explosionEffect.resourcePath, base.transform.position, Vector3.up, null, false); int num = Mathf.CeilToInt(Mathf.Clamp(fuelAmount * 8f, 1f, 8f)); for (int i = 0; i < num; i++) { BaseEntity vector3 = GameManager.server.CreateEntity(this.fireballPrefab.resourcePath, base.transform.position, base.transform.rotation, true); if (vector3) { Vector3 vector31 = UnityEngine.Random.onUnitSphere; vector3.transform.position = (base.transform.position + new Vector3(0f, 1.5f, 0f)) + (vector31 * UnityEngine.Random.Range(-1f, 1f)); vector3.Spawn(); vector3.SetVelocity(vector31 * (float)UnityEngine.Random.Range(3, 10)); } } base.OnKilled(info); }
public override void OnKilled(HitInfo info) { float num = (float)GetFuelAmount() / 500f; DamageUtil.RadiusDamage(this, LookupPrefab(), GetEyePosition(), 2f, 6f, damagePerSec, 133120, true); Effect.server.Run(explosionEffect.resourcePath, base.transform.position, Vector3.up); int num2 = Mathf.CeilToInt(Mathf.Clamp(num * 8f, 1f, 8f)); for (int i = 0; i < num2; i++) { BaseEntity baseEntity = GameManager.server.CreateEntity(fireballPrefab.resourcePath, base.transform.position, base.transform.rotation); if ((bool)baseEntity) { Vector3 onUnitSphere = UnityEngine.Random.onUnitSphere; baseEntity.transform.position = base.transform.position + new Vector3(0f, 1.5f, 0f) + onUnitSphere * UnityEngine.Random.Range(-1f, 1f); baseEntity.Spawn(); baseEntity.SetVelocity(onUnitSphere * UnityEngine.Random.Range(3, 10)); } } base.OnKilled(info); }
public void DoFlame(float delta) { if (!this.UseFuel(delta)) { return; } Ray ray; ((Ray) ref ray).\u002Ector(this.GetEyePosition(), ((Component)this).get_transform().TransformDirection(Quaternion.op_Multiply(Quaternion.Euler(this.aimDir), Vector3.get_forward()))); Vector3 origin = ((Ray) ref ray).get_origin(); RaycastHit raycastHit; bool flag = Physics.SphereCast(ray, 0.4f, ref raycastHit, this.flameRange, 1218652417); if (!flag) { ((RaycastHit) ref raycastHit).set_point(Vector3.op_Addition(origin, Vector3.op_Multiply(((Ray) ref ray).get_direction(), this.flameRange))); } float amount = this.damagePerSec[0].amount; this.damagePerSec[0].amount = amount * delta; DamageUtil.RadiusDamage((BaseEntity)this, this.LookupPrefab(), Vector3.op_Subtraction(((RaycastHit) ref raycastHit).get_point(), Vector3.op_Multiply(((Ray) ref ray).get_direction(), 0.1f)), this.flameRadius * 0.5f, this.flameRadius, this.damagePerSec, 2230272, true); DamageUtil.RadiusDamage((BaseEntity)this, this.LookupPrefab(), Vector3.op_Addition(((Component)this).get_transform().get_position(), new Vector3(0.0f, 1.25f, 0.0f)), 0.25f, 0.25f, this.damagePerSec, 133120, false); this.damagePerSec[0].amount = amount; if ((double)Time.get_realtimeSinceStartup() < (double)this.nextFireballTime) { return; } this.nextFireballTime = Time.get_realtimeSinceStartup() + Random.Range(1f, 2f); Vector3 vector3 = Random.Range(0, 10) <= 7 & flag ? ((RaycastHit) ref raycastHit).get_point() : Vector3.op_Addition(((Ray) ref ray).get_origin(), Vector3.op_Multiply(Vector3.op_Multiply(((Ray) ref ray).get_direction(), flag ? ((RaycastHit) ref raycastHit).get_distance() : this.flameRange), Random.Range(0.4f, 1f))); BaseEntity entity = GameManager.server.CreateEntity(this.fireballPrefab.resourcePath, Vector3.op_Subtraction(vector3, Vector3.op_Multiply(((Ray) ref ray).get_direction(), 0.25f)), (Quaternion)null, true); if (!Object.op_Implicit((Object)entity)) { return; } entity.creatorEntity = (BaseEntity)this; entity.Spawn(); }
public void DoFlame(float delta) { RaycastHit raycastHit; if (!this.UseFuel(delta)) { return; } Ray ray = new Ray(this.GetEyePosition(), base.transform.TransformDirection(Quaternion.Euler(this.aimDir) * Vector3.forward)); Vector3 vector3 = ray.origin; bool flag = Physics.SphereCast(ray, 0.4f, out raycastHit, this.flameRange, 1218652417); if (!flag) { raycastHit.point = vector3 + (ray.direction * this.flameRange); } float item = this.damagePerSec[0].amount; this.damagePerSec[0].amount = item * delta; DamageUtil.RadiusDamage(this, base.LookupPrefab(), raycastHit.point - (ray.direction * 0.1f), this.flameRadius * 0.5f, this.flameRadius, this.damagePerSec, 2230272, true); DamageUtil.RadiusDamage(this, base.LookupPrefab(), base.transform.position + new Vector3(0f, 1.25f, 0f), 0.25f, 0.25f, this.damagePerSec, 133120, false); this.damagePerSec[0].amount = item; if (Time.realtimeSinceStartup >= this.nextFireballTime) { this.nextFireballTime = Time.realtimeSinceStartup + UnityEngine.Random.Range(1f, 2f); Vector3 vector31 = (UnityEngine.Random.Range(0, 10) <= 7 & flag ? raycastHit.point : ray.origin + ((ray.direction * (flag ? raycastHit.distance : this.flameRange)) * UnityEngine.Random.Range(0.4f, 1f))); GameManager gameManager = GameManager.server; string str = this.fireballPrefab.resourcePath; Vector3 vector32 = vector31 - (ray.direction * 0.25f); Quaternion quaternion = new Quaternion(); BaseEntity baseEntity = gameManager.CreateEntity(str, vector32, quaternion, true); if (baseEntity) { baseEntity.creatorEntity = this; baseEntity.Spawn(); } } }
void doDamage(BaseCombatEntity entity, Vector3 position, BarrelEffect effect) { List <DamageTypeEntry> damage = new List <DamageTypeEntry>(); foreach (KeyValuePair <string, float> entry in effect.damageMap) { if (!Enum.IsDefined(typeof(DamageType), entry.Key)) { PrintWarning(String.Format(GetMessage("Warning_InvalidDamageType"), entry.Key)); continue; } if (entry.Value == null || entry.Value < 0.0f) { PrintWarning(String.Format(GetMessage("Warning_InvalidDamageValue"), new object[] { entry.Key, entry.Value })); continue; } DamageTypeEntry d = new DamageTypeEntry(); d.type = (DamageType)Enum.Parse(typeof(DamageType), entry.Key); d.amount = entry.Value; damage.Add(d); } DamageUtil.RadiusDamage(entity, null, position, effect.minRadius, effect.maxRadius, damage, -1, false); }
private IEnumerator MoveWeapon(GameObject weapon, Vector3 direction, float overTime) { float startTime = Time.time; var startPosition = weapon.GetComponent <Weapon>().Responsible.Equipment.weaponPosition.transform.position; var endPosition = startPosition + direction; GameObject damagable = null; HashSet <GameObject> damagables = new HashSet <GameObject>(); weapon.GetComponent <Weapon>().Responsible.animator.SetBool("isPunching", true); while (Time.time < startTime + overTime) { weapon.transform.position = Vector3.Lerp(startPosition, endPosition, (Time.time - startTime) / overTime); damagables = DamageUtil.FindDamagables(weapon.transform.position, weapon.transform.localScale / 2, weapon); yield return(null); } foreach (var damagableObject in damagables) { if (damagableObject.GetComponent <IDamagable>().Damage(weapon.GetComponent <Weapon>().damage)) { DamageUtil.ProgressKillQuests(weapon.GetComponent <Weapon>().Responsible, damagableObject); } damagableObject.GetComponent <Rigidbody>().AddForce(direction.normalized * 50); } startTime = Time.time; while (Time.time < startTime + overTime) { weapon.transform.position = Vector3.Lerp(endPosition, startPosition, (Time.time - startTime) / overTime); yield return(null); } weapon.transform.position = weapon.GetComponent <Weapon>().Responsible.Equipment.weaponPosition.transform.position; weapon.GetComponent <Weapon>().Responsible.animator.SetBool("isPunching", false); }
//-------------------------------------------KS-------------------------------------------- void KS() { if (Q.IsReady()) { var bye = EntityManager.Heroes.Enemies.FirstOrDefault(enemy => enemy.IsValidTarget(Q.Range) && DamageUtil.GetSpellDamage(enemy, SpellSlot.Q, true, true) >= enemy.Health); if (bye != null) { Q.Cast(bye); return; } } if (W.IsReady()) { var bye = EntityManager.Heroes.Enemies.FirstOrDefault(enemy => enemy.IsValidTarget(W.Range) && DamageUtil.GetSpellDamage(enemy, SpellSlot.W, true, true) >= enemy.Health); if (bye != null) { W.Cast(bye); return; } } if (Q.IsReady() && W.IsReady()) { var bye = EntityManager.Heroes.Enemies.FirstOrDefault(enemy => enemy.IsValidTarget(Q.Range) && DamageUtil.GetSpellDamage(enemy, SpellSlot.Q, true, true) + DamageUtil.GetSpellDamage(enemy, SpellSlot.W, true, true) >= enemy.Health); if (bye != null) { W.Cast(bye); return; } } }
public override void OnLastHit() { base.OnLastHit(); var mode = Features.First(it => it.NameFeature == "Last Hit"); if (Player.ManaPercent <= mode.SliderValue("lasthit.mana%")) { return; } if (Q.IsReady() && mode.IsChecked("lasthit.q")) { IEnumerable <Obj_AI_Base> IEMinions = EntityManager.MinionsAndMonsters.GetLaneMinions(EntityManager.UnitTeam.Enemy, Player.ServerPosition, Q.Range).Where(minion => minion.Health <= DamageUtil.GetSpellDamage(minion, SpellSlot.Q, true, true)).OrderBy(minion => minion.Distance(Player.Position.To2D())); if (IEMinions.Any()) { switch (mode.SliderValue("lasthit.q.mode")) { case 0: Q.Cast(IEMinions.First()); break; case 1: if (Player.CountEnemiesInRange(700) == 0) { Q.Cast(IEMinions.First()); } break; case 2: if (!Player.HasBuff("pyromania_particle")) { Q.Cast(IEMinions.First()); } break; } } } return; }
public override void OnLaneClear() { var mode = Features.First(it => it.NameFeature == "Lane Clear"); bool UseItem = EntityManager.MinionsAndMonsters.GetLaneMinions(EntityManager.UnitTeam.Enemy, Player.Position, 400).Count() >= 3; if (UseItem) { Activator.tiamat.Cast(); Activator.hydra.Cast(); } if (Player.ManaPercent <= mode.SliderValue("laneclear.mana%")) { return; } if (Q.IsReady() && mode.IsChecked("laneclear.q")) { IEnumerable <Obj_AI_Base> IEMinions = EntityManager.MinionsAndMonsters.GetLaneMinions(EntityManager.UnitTeam.Enemy, Player.ServerPosition, Q.Range).Where(minion => minion.Health <= DamageUtil.GetSpellDamage(minion, SpellSlot.Q, true, true)).OrderBy(minion => minion.Distance(Player.Position.To2D())); if (IEMinions.Any()) { switch (mode.SliderValue("laneclear.q.mode")) { case 0: Q.Cast(IEMinions.First()); break; case 1: if (Player.CountEnemiesInRange(700) == 0) { Q.Cast(IEMinions.First()); } break; case 2: if (!Player.HasBuff("pyromania_particle")) { Q.Cast(IEMinions.First()); } break; } } } if (mode.IsChecked("laneclear.w") && W.IsReady() && Player.ManaPercent >= mode.SliderValue("laneclear.mana%")) { var WPos = GetBestWPos(true); if (WPos != default(Vector3)) { W.Cast(WPos); } } return; }
/* * Spells[0] = Q * Spells[1] = W * Spells[2] = E * Spells[3] = R */ public override void OnCombo() { var target = TargetSelector.GetTarget(((Spell.Chargeable)Spells[0]).MaximumRange, DamageType.Magical); var rTarget = TargetSelector.GetTarget(Spells[3].Range, DamageType.Magical); if (target == null || !target.IsValidTarget()) { return; } var combo = Features.Find(f => f.NameFeature == "Combo"); var Q = ((Spell.Chargeable)Spells[0]); var W = ((Spell.Skillshot)Spells[1]); var E = ((Spell.Skillshot)Spells[2]); var R = ((Spell.Skillshot)Spells[3]); if (combo.IsChecked("combo.q") && Q.IsReady() && target.Distance(Player.Instance) < Q.MaximumRange && !castingR) { if (!Q.IsCharging) { Q.StartCharging(); } else if (Q.Range == Q.MaximumRange) { if (Q.Cast(target.ServerPosition)) { } } else { var qPrediction = Q.GetPrediction(target); var predictionPost = Prediction.Position.PredictUnitPosition(target, 410); if (predictionPost.Distance(Player.Instance) > Q.Range && Q.IsCharging) { return; } if (qPrediction.HitChancePercent >= 87) { Q.Cast(qPrediction.CastPosition); } } } if (Q.IsCharging) { return; } if (combo.IsChecked("combo.r") && R.IsReady() && R.IsInRange(rTarget) && ((!Q.IsInRange(rTarget) && DamageUtil.Killable(rTarget, SpellSlot.R, 50)) || castingR)) { var predictionR = R.GetPrediction(rTarget); if (predictionR.HitChancePercent >= 80) { if (!castingR) { castingR = true; Orbwalker.DisableMovement = true; Orbwalker.DisableAttacking = true; } R.Cast(predictionR.CastPosition); } else if (castingR && predictionR.HitChancePercent >= 70) { R.Cast(predictionR.CastPosition); } } else if (!R.IsReady()) { castingR = false; Orbwalker.DisableMovement = false; Orbwalker.DisableAttacking = false; } if (combo.IsChecked("combo.w") && W.IsReady() && W.IsInRange(target) && !castingR) { var predictionW = W.GetPrediction(target); var posPrediction = Prediction.Position.PredictUnitPosition(target, 500); if (predictionW.HitChancePercent >= 85 && predictionW.CastPosition.Distance(posPrediction) < 70) { W.Cast(predictionW.CastPosition); } } if (combo.IsChecked("combo.e") && E.IsReady() && E.IsInRange(target) && !castingR) { var predictionE = E.GetPrediction(target); if (predictionE.HitChancePercent >= 80) { E.Cast(predictionE.CastPosition); } } }