public void DealDamage(float damage) { if (health <= 0 || damage < health) { health -= damage; } else { health -= damage; OM_ObstacleHealthInfo.SendMessage(arena, this, new Vector3(0, 0, 1)); } }
protected override void OnContact(List <Player> players, List <Obstacle> obstacles) { int goldMade = 0; float damageAmount = damage * (1 + RandomInstance.instance.Next(21) / 100f - 0.1f); // random +- %10 foreach (var p in players) { p.FlyRequest(p.position + ((p.position - position).normalized + movementDirection.normalized).normalized * 3); // ucus mesafesi 3 birim if (!p.effects.hasShield) { p.DealDamage(damageAmount, senderPlayer); OM_PlayerHealthInfo.SendMessage(senderPlayer.arena, p); if (p != senderPlayer) { goldMade++; } } else { p.effects.hasShield = false; OM_ShieldConsumed.SendMessage(p.arena, p); p.UpdateGold(p.gold + 1); OM_PlayerGoldInfo.SendMessage(p); } } foreach (var o in obstacles) { o.DealDamage(damageAmount); OM_ObstacleHealthInfo.SendMessage(arena, o, position); } OM_MissileExplode.SendMessage(senderPlayer.arena, this); awaitsDestruction = true; if (goldMade != 0 && senderPlayer != null) { arena.roundStats.PlayerHit(senderPlayer); senderPlayer.UpdateGold(senderPlayer.gold + goldMade); OM_PlayerGoldInfo.SendMessage(senderPlayer); } }