Color GetHealthColor(IHealth health)
		{
			var player = actor.World.RenderPlayer ?? actor.World.LocalPlayer;

			if (Game.Settings.Game.TeamHealthColors && player != null && !player.Spectating)
			{
				var apparentOwner = actor.EffectiveOwner != null && actor.EffectiveOwner.Disguised
					? actor.EffectiveOwner.Owner
					: actor.Owner;

				// For friendly spies, treat the unit's owner as the actual owner
				if (actor.Owner.IsAlliedWith(actor.World.RenderPlayer))
					apparentOwner = actor.Owner;

				if (apparentOwner == player)
					return Color.LimeGreen;

				if (apparentOwner.IsAlliedWith(player))
					return Color.Yellow;

				if (apparentOwner.NonCombatant)
					return Color.Tan;

				return Color.Red;
			}
			else
				return health.DamageState == DamageState.Critical ? Color.Red :
					health.DamageState == DamageState.Heavy ? Color.Yellow : Color.LimeGreen;
		}
    void OnTriggerEnter2D(Collider2D col)
    {
        if (col.tag != "Player")
            return;

        health = col.gameObject.GetComponent<HealthBehavior>() as IHealth;
        ((IPickup)this).AddStat();
        Destroy(gameObject);
    }
 //--------------------------------- Funcitns
 void SetIHealth()
 {
     try
     {
         IHealth = _player.GetComponent<HealthBehavior>() as IHealth;
     }
     catch (System.Exception e)
     {
         Debug.Log(e);
         //System.Diagnostics.Process.Start("http://stackoverflow.com/search?q=" + e.Message);
     }
 }
Exemple #4
0
    void Start()
    {
        healthBarCanvas = GameObject.Find("Health Bar Canvas").transform;
        hpSource = this.GetComponent<IHealth>();

        _healthBarInstance = GameObject.Instantiate(healthBarPrefab);
        _healthBarInstance.SetParent(healthBarCanvas, false);
        healthBarSlider = _healthBarInstance.GetComponentInChildren<Slider>();

        healthBarPos = this.transform.position;
        healthBarPos.y += healthBarHeight;
        _healthBarInstance.anchoredPosition = Camera.main.WorldToScreenPoint(healthBarPos);
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        m_health                      = CurrentRequest.Resolver.Resolve <IHealth>();
        m_ActivityLogService          = CurrentRequest.Resolver.Resolve <IActivityLogService>();
        ucServerHealthTabs.LanguageID = LanguageID;
        ucServerHealthTabs.Title      = PhraseLib.Lookup("term.health", LanguageID) + " " + PhraseLib.Lookup("term.for", LanguageID).ToLower();
        hdnURL.Value                  = m_health.HealthServiceURL;

        ((UE_MasterPage)this.Master).Tab_Name = "8_10";

        if (!IsPostBack)
        {
            ucServerHealthTabs.EnginesInstalled = m_health.GetInstalledEngines(LanguageID);
            ucServerHealthTabs.SetInfoMessage("", false);
            LocationID = -1;
            LocationID = m_health.GetServerLocationID();

            if (!m_health.UseHealthService)
            {
                Response.Redirect("/logix/UE/store-health-UE.aspx?filterhealth=2");
            }

            if (LocationID <= 0)
            {
                ucServerHealthTabs.SetInfoMessage(PhraseLib.Lookup("serverhealth.novalidserver", LanguageID), true);
                linkConfig.Visible           = false;
                loadmoreajaxloader.InnerHtml = loadmoreajaxloader1.InnerHtml = "<center>" + PhraseLib.Lookup("term.data", LanguageID) + " " + PhraseLib.Lookup("term.unavailable", LanguageID).ToLower() + "." + "</center>";
            }
            else
            {
                linkConfig.Text        = PhraseLib.Lookup("term.serverconfiguration", LanguageID);
                linkConfig.NavigateUrl = "../store-edit.aspx?LocationID=" + hdnLocationID.Value;

                if (!string.IsNullOrEmpty(Request.QueryString["errorMessage"]))
                {
                    ucServerHealthTabs.SetInfoMessage(Request.QueryString["errorMessage"], false);
                }

                PopulateServerSummary();
            }

            if (!string.IsNullOrEmpty(Request.QueryString["message"]))
            {
                ucServerHealthTabs.SetInfoMessage(Request.QueryString["message"], false);
            }
        }
    }
Exemple #6
0
        void DrawHealthBar(WorldRenderer wr, IHealth health, float2 start, float2 end)
        {
            if (health == null || health.IsDead)
            {
                return;
            }

            var c  = Color.FromArgb(128, 30, 30, 30);
            var c2 = Color.FromArgb(128, 10, 10, 10);
            var p  = new float2(0, -4);
            var q  = new float2(0, -3);
            var r  = new float2(0, -2);

            var healthColor  = GetHealthColor(health);
            var healthColor2 = Color.FromArgb(
                255,
                healthColor.R / 2,
                healthColor.G / 2,
                healthColor.B / 2);

            var z = float3.Lerp(start, end, (float)health.HP / health.MaxHP);

            var cr = Game.Renderer.RgbaColorRenderer;

            cr.DrawLine(start + p, end + p, 1, c);
            cr.DrawLine(start + q, end + q, 1, c2);
            cr.DrawLine(start + r, end + r, 1, c);

            cr.DrawLine(start + p, z + p, 1, healthColor2);
            cr.DrawLine(start + q, z + q, 1, healthColor);
            cr.DrawLine(start + r, z + r, 1, healthColor2);

            if (health.DisplayHP != health.HP)
            {
                var deltaColor  = Color.OrangeRed;
                var deltaColor2 = Color.FromArgb(
                    255,
                    deltaColor.R / 2,
                    deltaColor.G / 2,
                    deltaColor.B / 2);
                var zz = float3.Lerp(start, end, (float)health.DisplayHP / health.MaxHP);

                cr.DrawLine(z + p, zz + p, 1, deltaColor2);
                cr.DrawLine(z + q, zz + q, 1, deltaColor);
                cr.DrawLine(z + r, zz + r, 1, deltaColor2);
            }
        }
    private void Attack()
    {
        Collider2D[] collidersInRange = Physics2D.OverlapCircleAll(transform.position, _attackRadius, _attackableLayers);

        if (collidersInRange != null)
        {
            foreach (Collider2D col in collidersInRange)
            {
                IHealth health = col.GetComponent <IHealth>();

                if (health != null)
                {
                    health.MyHealthManager.CurrentHealth -= _attackPoints;
                }
            }
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        m_health                              = CurrentRequest.Resolver.Resolve <IHealth>();
        m_ActivityLogService                  = CurrentRequest.Resolver.Resolve <IActivityLogService>();
        ucServerHealthTabs.LanguageID         = LanguageID;
        ucServerHealthTabs.Title              = PhraseLib.Lookup("term.health", LanguageID) + " " + PhraseLib.Lookup("term.for", LanguageID).ToLower();
        hdnURL.Value                          = m_health.HealthServiceURL;
        hdnNodeName.Value                     = Request.QueryString["NodeName"];
        ((UE_MasterPage)this.Master).Tab_Name = "8_10";

        if (!IsPostBack)
        {
            ucServerHealthTabs.EnginesInstalled = m_health.GetInstalledEngines(LanguageID);
            ucServerHealthTabs.SetInfoMessage("", false);
            PopulateEnginesPage();
        }
    }
    private void OnTriggerEnter(Collider other)
    {
        IHealth otherComp = (IHealth)other.gameObject.GetComponentInParent(typeof(IHealth));

        if (otherComp != null)
        {
            //Add to List if not already in list
            if (!activeTargets.Contains(other.gameObject))
            {
                activeTargets.Add(other.gameObject);
            }
            if (activeTargets.Count > 0)
            {
                InvokeRepeating("ShootBullet", 0, m_ShootSpeed);
            }
        }
    }
Exemple #10
0
        protected override bool TryStartEnter(Actor self, Actor targetActor)
        {
            enterActor  = targetActor;
            enterHealth = targetActor.TraitOrDefault <IHealth>();

            // Make sure we can still repair the target before entering
            // (but not before, because this may stop the actor in the middle of nowhere)
            var stance = self.Owner.Stances[enterActor.Owner];

            if (enterHealth == null || enterHealth.DamageState == DamageState.Undamaged || !info.ValidStances.HasStance(stance))
            {
                Cancel(self, true);
                return(false);
            }

            return(true);
        }
Exemple #11
0
        internal Actor(World world, string name, TypeDictionary initDict)
        {
            var init = new ActorInitializer(this, initDict);

            World   = world;
            ActorID = world.NextAID();
            if (initDict.Contains <OwnerInit>())
            {
                Owner = init.Get <OwnerInit, Player>();
            }

            if (name != null)
            {
                name = name.ToLowerInvariant();

                if (!world.Map.Rules.Actors.ContainsKey(name))
                {
                    throw new NotImplementedException("No rules definition for unit " + name);
                }

                Info = world.Map.Rules.Actors[name];
                foreach (var trait in Info.TraitsInConstructOrder())
                {
                    AddTrait(trait.Create(init));

                    // Some traits rely on properties provided by IOccupySpace in their initialization,
                    // so we must ready it now, we cannot wait until all traits have finished construction.
                    if (trait is IOccupySpaceInfo)
                    {
                        OccupiesSpace = Trait <IOccupySpace>();
                    }
                }
            }

            Bounds              = DetermineBounds();
            VisualBounds        = DetermineVisualBounds();
            EffectiveOwner      = TraitOrDefault <IEffectiveOwner>();
            facing              = TraitOrDefault <IFacing>();
            health              = TraitOrDefault <IHealth>();
            renderModifiers     = TraitsImplementing <IRenderModifier>().ToArray();
            renders             = TraitsImplementing <IRender>().ToArray();
            disables            = TraitsImplementing <IDisable>().ToArray();
            visibilityModifiers = TraitsImplementing <IVisibilityModifier>().ToArray();
            defaultVisibility   = Trait <IDefaultVisibility>();
        }
        private void OnTriggerEnter(Collider other)
        {
            if (!isHit)
            {
                /*
                 * string otherTag = other.gameObject.tag;
                 * if (otherTag.Equals(GlobalVariables.ENEMY_TAG) || otherTag.Equals(GlobalVariables.PLAYER_TAG))
                 * {
                 *  other.GetComponent<IHealth>().DecreaseHealth(DamageAmount, DamageType);
                 *  OnHit();
                 * }
                 * else if (otherTag.Equals(GlobalVariables.MELEE_WEAPON_TAG))
                 * {
                 *  transform.rotation = other.gameObject.transform.rotation;
                 * }
                 * else
                 * {
                 *  OnHit();
                 * }
                 */

                int otherLayer = other.gameObject.layer;
                if (otherLayer == GlobalVariables.ENEMY_LAYER || otherLayer == GlobalVariables.PLAYER_LAYER)
                {
                    IHealth otherHealth = other.GetComponent <IHealth>();
                    if (otherHealth == null)
                    {
                        otherHealth = other.GetComponentInParent <IHealth>();
                    }

                    otherHealth.DecreaseHealth(DamageAmount, DamageType);
                    OnHit();
                }
                else if (otherLayer == GlobalVariables.PLAYER_MELEE_LAYER)
                {
                    gameObject.layer   = GlobalVariables.PLAYER_PROJECTILE_LAYER;
                    transform.rotation = GameMan.Instance.PlayerT.rotation;
                    StartCoroutine(DmgChange());
                }
                else
                {
                    OnHit();
                }
            }
        }
    private void OnTriggerStay(Collider other)
    {
        Debug.Log("Trigger");
        IHealth otherComp = (IHealth)other.gameObject.GetComponentInParent(typeof(IHealth));

        if (otherComp != null && otherComp.Dead)
        {
            activeTargets.Remove(other.gameObject);
        }
        if (activeTargets.Count > 0)
        {
            cannonHead.transform.LookAt(activeTargets[0].transform.position);
        }
        else
        {
            ResetPosition();
        }
    }
Exemple #14
0
    void UpdateHealth(IHealth health)
    {
        healthBarSlider.value = health.Percent;
        healthLabel.text      = string.Format("{0}/{1}", (int)health.Current, (int)health.Max);

        if (healthRegenLabel != null)
        {
            if (health.Regen != null && health.Regen.Current > 0)
            {
                healthRegenLabel.text = string.Format("+{0}", health.Regen.Current);
                healthRegenLabel.gameObject.SetActive(true);
            }
            else
            {
                healthRegenLabel.gameObject.SetActive(false);
            }
        }
    }
Exemple #15
0
 private void OnTriggerStay2D(Collider2D collided)
 {
     if (collided.gameObject.tag == "Player" || collided.gameObject.tag == "HeartHolder")
     {
         if (!collidedOnce)
         {
             myRigidbody.velocity = new Vector2(0, myRigidbody.velocity.y);
             healthInterface      = collided.gameObject.GetComponentInParent <IHealth>();
             if (healthInterface)
             {
                 if (healthInterface.health < healthInterface.maxHealth)
                 {
                     healthInterface.OnHeartCollide(healthIncreaseValue, this);
                 }
             }
         }
     }
 }
Exemple #16
0
    //Transform handPrefabs;

    void Start()
    {
        stats = GetComponent <Stats>();
        rb    = GetComponent <Rigidbody>();
        //handPrefabs = transform.GetChild(0);
        movement    = new Movement(this);
        movementDir = new MovementDir();
        controller  = GetComponent <CharacterController>();
        anim        = GetComponentInChildren <Animator>();
        poison      = GetComponent <PoisonState>();

        weaponManager = GameObject.Find("Weapon Manager");
        weapon        = null;
        uiManager     = UIManager.instance;
        health        = GetComponent <Health>();

        col = GetComponent <Collider>();
    }
Exemple #17
0
        protected void OnCollisionEnter(Collision collision)
        {
            // Collision, Projectile hit something

            IHealth damageReceiver =
                collision.gameObject.GetComponentInChildren <IHealth> ();

            if (damageReceiver != null)
            {
                // Colliding object can take damage
                damageReceiver.TakeDamage(_damage);

                // TODO: Instantiate effect
                // TODO: Add sound effect

                _shooter.ProjectileHit(this);
            }
        }
Exemple #18
0
 void Update()
 {
     if ((LastFireTime + RateOfFire) <= Time.time && Input.GetButtonDown("Fire1"))
     {
         LastFireTime = Time.time;
         RaycastHit hit;
         Ray        ray = PlayerCamera.FPSCamera.ScreenPointToRay(new Vector3(PlayerCamera.FPSCamera.pixelWidth, 0, PlayerCamera.FPSCamera.pixelHeight));
         if (Physics.Raycast(PlayerCamera.FPSCamera.transform.position, PlayerCamera.FPSCamera.transform.forward, out hit, 100, HitMask))
         {
             if (hit.transform.tag == "Enemy")
             {
                 IHealth health = hit.transform.GetComponent <IHealth>();
                 Debug.Log("Hit Enemy");
                 health.DealDamage();
             }
         }
     }
 }
        void DrawHealthBar(IHealth health, float2 start, float2 end)
        {
            if (health == null || health.IsDead)
            {
                return;
            }

            var emptyOutline = Color.FromArgb(128, 30, 30, 30);
            var emptyBar     = Color.FromArgb(128, 10, 10, 10);

            var p = new float2(0, -6);
            var q = new float2(0, -4);             // unten nach mitte
            var r = new float2(0, -2);

            var cr = Game.Renderer.RgbaColorRenderer;

            cr.DrawLine(start + p, end + p, 2, emptyOutline);
            cr.DrawLine(start + q, end + q, 3, emptyBar);
            cr.DrawLine(start + r, end + r, 2, emptyOutline);

            var healthColor = GetHealthColor(health);
            var outline     = Color.Black;

            var z = float3.Lerp(start, end, (float)health.HP / health.MaxHP);

            cr.DrawLine(start + p, z + p, 2, outline);
            cr.DrawLine(start + q, z + q, 3, healthColor);
            cr.DrawLine(start + r, z + r, 2, outline);

            if (health.DisplayHP != health.HP)
            {
                var deltaColor  = Color.OrangeRed;
                var deltaColor2 = Color.FromArgb(
                    255,
                    deltaColor.R / 2,
                    deltaColor.G / 2,
                    deltaColor.B / 2);
                var zz = float3.Lerp(start, end, (float)health.DisplayHP / health.MaxHP);

                cr.DrawLine(z + p, zz + p, 2, deltaColor2);
                cr.DrawLine(z + q, zz + q, 2, deltaColor);
                cr.DrawLine(z + r, zz + r, 2, deltaColor2);
            }
        }
        protected virtual void Awake()
        {
            photonView         = GetComponent <PhotonView>();
            health             = GetComponent <IHealth>();
            runtimeMenuManager = FindObjectOfType <RuntimeMenuManager>();
            if (photonView.IsMine)
            {
                RuntimeMenuManager runtimeMenuManager = FindObjectOfType <RuntimeMenuManager>();

                EnableOwn(components);
                if (!runtimeMenuManager)
                {
                    GetComponent <TPCharacter>().SetCamera(runtimeMenuManager.CameraInstance);
                    GetComponent <TPCharacter>().GetInverseKinematics().LookTarget = runtimeMenuManager.CameraInstance.GetComponentInChildren <Transform>(true);
                    runtimeMenuManager.CameraInstance.GetComponent <FPCameraPostProcessing>()._CharacterHealth = GetComponent <CharacterHealth>();
                }
                gameObject.AddComponent <StandaloneController>();
            }
        }
    void OnCollisionEnter(Collision other)
    {
        IHealth health = other.gameObject.GetComponent <IHealth> ();

        if (health != null)
        {
            if (health.Health < 1)
            {
                return;
            }

            //if (!PseudoRandom.Instance.SequenceMod (8))
            //	return;

            health.Damage(10);

            GameObject splatterInstance = GameObject.Instantiate(splatterPrefab, transform.position, transform.rotation) as GameObject;
        }
    }
    private void OnTriggerEnter(Collider other)
    {
        if (other != null)
        {
            if (other.name == targetedUnit.name)
            {
                IHealth enemyHp = other.GetComponent <IHealth>();
                switch (pType)
                {
                case TurretType.Normal:
                {
                    enemyHp.TakeDamage(pAtk);
                }
                break;

                case TurretType.Multi_Attack:
                {
                    enemyHp.TakeDamage(pAtk - 2);
                }
                break;

                case TurretType.Grenadier:
                {
                    Collider[] others = Physics.OverlapSphere(transform.position, 1.1f, enemyLayer);

                    foreach (var hit in others)
                    {
                        IHealth hitHp = hit.GetComponent <IHealth>();
                        if (hitHp != null)
                        {
                            hitHp.TakeDamage(pAtk - 3);
                        }
                    }

                    enemyHp.TakeDamage(pAtk);
                }
                break;
                }

                Destroy(gameObject);
            }
        }
    }
        private void ShootLaser()
        {
            Vector3 transPos = transform.position;
            Vector3 lookRot  = Quaternion.LookRotation(playerT.position - transPos, Vector3.up).eulerAngles;
            Vector3 ogRot    = transform.rotation.eulerAngles;

            transform.rotation = Quaternion.Euler(lookRot.x, ogRot.y, ogRot.z);

            RaycastHit hit;

            if (Physics.Raycast(transPos, transform.forward, out hit, rayMaxDistance, raycastMask))
            {
                if (!isHit)
                {
                    GameObject hitGO = hit.collider.gameObject;
                    if (hitGO.layer == GlobalVariables.PLAYER_LAYER)
                    {
                        IHealth otherHealth = hitGO.GetComponent <IHealth>();
                        if (otherHealth == null)
                        {
                            otherHealth = hitGO.GetComponentInParent <IHealth>();
                        }

                        otherHealth.DecreaseHealth(dmgAmount, dmgType);
                        isHit = true;
                    }
                }

                ParticleEffectBase hitParticles = (ParticleEffectBase)GameMan.Instance.ObjPoolMan.GetObjectFromPool(ObjectPoolType.MeleeHitParticles);
                hitParticles.Activate(hit.point, Quaternion.identity);

                float hitDistance = hit.distance;
                //AfterRay(transPos, hit.point, wasHit: true);
                //Debug.DrawLine(transform.position, hit.point, Color.red, 1.0f, false);
                lineRenderer.SetPosition(1, new Vector3(0f, 0f, hitDistance));
            }
            else
            {
                //AfterRay(transPos, transPos + transform.forward * rayMaxDistance, wasHit: false);
                //Debug.DrawLine(transform.position, transform.position + (transform.forward * rayMaxDistance), Color.green, 1f, false);
                lineRenderer.SetPosition(1, new Vector3(0f, 0f, rayMaxDistance));
            }
        }
    private void OnTriggerEnter(Collider other)
    {
        if (other.tag == StaticStrings.player)
        {
            IHealth h = other.GetComponent <IHealth>();
            switch (tp)
            {
            //回復
            case PickUpType.Heal:
                if (h != null)
                {
                    h.Healing(valor);
                }
                if (EffectDirector.instance != null && Effect != "")
                {
                    EffectDirector.instance.playInPlace(other.transform.position, Effect);
                }
                break;

            //ダメージ
            case PickUpType.Poison:
                if (h != null)
                {
                    h.takeDamage(valor);
                }
                if (EffectDirector.instance != null && Effect != "")
                {
                    EffectDirector.instance.playInPlace(transform.position, Effect);
                }
                break;

            //スコアアップ
            case PickUpType.PointsUp:
                if (EffectDirector.instance != null && Effect != "")
                {
                    EffectDirector.instance.generatePopUp((int)valor);
                }
                break;
            }

            Destroy(gameObject);
        }
    }
        // ANIMATION EVENTS
        private void MeleeAttackAnimEvent()
        {
            if (currentBehaviour != EnemyBehaviours.Dead && currentBehaviour != EnemyBehaviours.FleeFromPlayer && currentBehaviour != EnemyBehaviours.Knockback)
            {
                if (Physics.Raycast(transform.position + transform.up, transform.forward, out RaycastHit hit, meleeAttackRangeRealUnits, playerLayerMask))
                {
                    ParticleEffectBase hitParticles = (ParticleEffectBase)GameMan.Instance.ObjPoolMan.GetObjectFromPool(ObjectPoolType.MeleeHitParticles);
                    hitParticles.Activate(hit.point, Quaternion.identity);
                    //playerT.gameObject.GetComponent<IHealth>().DecreaseHealth(meleeDamageAmount, meleeAttackDmgType);
                    IHealth otherHealth = playerT.GetComponent <IHealth>();
                    if (otherHealth == null)
                    {
                        otherHealth = playerT.GetComponentInParent <IHealth>();
                    }

                    otherHealth.DecreaseHealth(meleeDamageAmount, meleeAttackDmgType);
                }
            }
        }
Exemple #26
0
        public Resupply(Actor self, Actor host, WDist closeEnough, bool stayOnResupplier = false)
        {
            this.host             = Target.FromActor(host);
            this.closeEnough      = closeEnough;
            this.stayOnResupplier = stayOnResupplier;
            allRepairsUnits       = host.TraitsImplementing <RepairsUnits>().ToArray();
            health                = self.TraitOrDefault <IHealth>();
            repairable            = self.TraitOrDefault <Repairable>();
            repairableNear        = self.TraitOrDefault <RepairableNear>();
            rearmable             = self.TraitOrDefault <Rearmable>();
            notifyResupplies      = host.TraitsImplementing <INotifyResupply>().ToArray();
            notifyBeingResupplied = self.TraitsImplementing <INotifyBeingResupplied>().ToArray();
            transportCallers      = self.TraitsImplementing <ICallForTransport>().ToArray();
            move            = self.Trait <IMove>();
            aircraft        = move as Aircraft;
            moveInfo        = self.Info.TraitInfo <IMoveInfo>();
            playerResources = self.Owner.PlayerActor.Trait <PlayerResources>();

            var valued = self.Info.TraitInfoOrDefault <ValuedInfo>();

            unitCost = valued != null ? valued.Cost : 0;

            var cannotRepairAtHost = health == null || health.DamageState == DamageState.Undamaged ||
                                     !allRepairsUnits.Any() ||
                                     ((repairable == null || !repairable.Info.RepairActors.Contains(host.Info.Name)) &&
                                      (repairableNear == null || !repairableNear.Info.RepairActors.Contains(host.Info.Name)));

            if (!cannotRepairAtHost)
            {
                activeResupplyTypes |= ResupplyType.Repair;

                // HACK: Reservable logic can't handle repairs, so force a take-off if resupply included repairs.
                // TODO: Make reservation logic or future docking logic properly handle this.
                wasRepaired = true;
            }

            var cannotRearmAtHost = rearmable == null || !rearmable.Info.RearmActors.Contains(host.Info.Name) || rearmable.RearmableAmmoPools.All(p => p.HasFullAmmo);

            if (!cannotRearmAtHost)
            {
                activeResupplyTypes |= ResupplyType.Rearm;
            }
        }
Exemple #27
0
        //=============================================================================
        //Other Methods
        //=============================================================================



        public void PingRadar(Character character, string command)
        {
            SpaceObject[] objectList = Sector.GetSpaceObjectList();
            character.Player.SendInfoMsg("Sending from " + Name + ", ping in: " + Sector.ToString());
            character.Player.SendInfoMsg("Objects Found: " + objectList.Length.ToString());

            foreach (SpaceObject item in objectList)
            {
                if (item is IHealth)
                {
                    IHealth target = item as IHealth;
                    character.Player.SendInfoMsg(item.IdInSector + " - " + item.Transform.Position.ToString() + " - " + item.Name + " - " + target.Health + "/" + target.MaxHealth);
                }
                else
                {
                    character.Player.SendInfoMsg(item.IdInSector + " - " + item.Name);
                }
            }
        }
Exemple #28
0
        public float GetDpsOf([NotNull] IHealth damager)
        {
            if (damager == null)
            {
                throw new ArgumentNullException(nameof(damager));
            }

            var damages = _damages.Where(t => t.Item1.From == damager).Select(t => t.Item1).ToArray();

            if (!damages.Any())
            {
                return(0);
            }
            if (Duration == TimeSpan.Zero)
            {
                return(damages.Sum(d => d.Damage));
            }
            return(damages.Sum(d => d.Damage) / (float)Duration.TotalSeconds);
        }
Exemple #29
0
 private void OnTriggerEnter(Collider other)
 {
     if (death || !dangerous)
     {
         return;
     }
     if (other.tag == StaticStrings.player)
     {
         IHealth health = other.GetComponent <IHealth>();
         if (health != null)
         {
             health.takeDamage(1);
         }
     }
     if (other.GetComponent <Adv_Drive>())
     {
         other.GetComponent <Adv_Drive>().blinking();
     }
 }
Exemple #30
0
    private void UseAOEAttack()
    {
        if (target != null)
        {
            if (explosionParticle != null)
            {
                explosionParticle.transform.position = target.transform.position;
                explosionParticle.Play();
            }
            if (explosionSound != null)
            {
                audioSource.PlayOneShot(explosionSound, 0.2f);
            }

            target.TakeDamage(atk);
            --currentMp;

            Collider[] others = Physics.OverlapSphere(target.transform.position, 2f);

            foreach (var hit in others)
            {
                IHealth hitHp = hit.GetComponent <IHealth>();
                if (hitHp != null)
                {
                    hitHp.TakeDamage(atk - 3);
                    damageDealt += atk;
                }
            }

            target.TakeDamage(atk);
            damageDealt += atk;

            if (rangedSound != null)
            {
                audioSource.PlayOneShot(rangedSound, 0.2f);
            }
        }
        else
        {
            ChangeState(Move);
        }
    }
Exemple #31
0
        private IEnumerator Start()
        {
            currentChanse = Random.Range(minChanse, maxChanse);

            IMover        _mover     = new Mover(this, moveSpeed);
            IMyAnimations _animation = new CharacterAnimation(GetComponent <Animator>());
            IFlip         _flip      = new FlipWithTranform(this);
            IHealth       _health    = GetComponent <IHealth>();
            IAttacker     _attacker  = GetComponent <IAttacker>();

            Idle        idle        = new Idle(_mover, _animation);
            Walk        walk        = new Walk(this, _mover, _animation, _flip, patrols);
            ChasePlayer chasePlayer = new ChasePlayer(_mover, _flip, _animation, IsPlayerRightSide);
            Attack      attack      = new Attack(_player.transform.GetComponent <IHealth>(), _flip, _animation, _attacker, maxAttackTime, IsPlayerRightSide);
            TakeHit     takeHit     = new TakeHit(_health, _animation);
            Dead        dead        = new Dead(this, _animation, () =>
            {
                if (currentChanse > Random.Range(0, 100))
                {
                    Instantiate(scorePrefab, transform.position, Quaternion.identity);
                }
            });



            _stateMachine.AddTransision(idle, walk, () => idle.IsIdle == false);                               //Idle'dan Walk'a IsIdle == false ise geç.
            _stateMachine.AddTransision(idle, chasePlayer, () => DistanceFromMeToPlayer() < chaseDistance);    //Idle'dan ChasePlayer'a methoddan dönen değer chaseDistance'dan küçük ise geç.
            _stateMachine.AddTransision(walk, chasePlayer, () => DistanceFromMeToPlayer() < chaseDistance);    //Walk'dan ChasePlayer'a methoddan dönen değer chaseDistance'dan küçük ise geç.
            _stateMachine.AddTransision(chasePlayer, attack, () => DistanceFromMeToPlayer() < attackDistance); //ChasePlayer'dan Attack'a methoddan dönen değer attackDistance'dan küçük ise geç.
            //Ters İşlemler
            _stateMachine.AddTransision(walk, idle, () => !walk.IsWalking);
            _stateMachine.AddTransision(chasePlayer, idle, () => DistanceFromMeToPlayer() > chaseDistance);
            _stateMachine.AddTransision(attack, chasePlayer, () => DistanceFromMeToPlayer() > attackDistance);

            _stateMachine.AddAnyState(dead, () => _health.IsDead);       //Kalan can 1'den küçük ise dead state çalıştır.
            _stateMachine.AddAnyState(takeHit, () => takeHit.IsTakeHit); //isTakeHit true dönerse takeHit çalıştır.

            _stateMachine.AddTransision(takeHit, chasePlayer, () => takeHit.IsTakeHit == false);
            _stateMachine.SetState(idle);

            yield return(null);
        }
Exemple #32
0
    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }

        Health               = GetComponent <IHealth>();
        controller           = GetComponent <CharacterController>();
        colliderBottom       = transform.GetChild(1).gameObject;
        currentMovementSpeed = baseMovementSpeed;
        equippedItems        = new Dictionary <SlotType, EquippableObject>
        {
            { SlotType.Auxiliary, null },
            { SlotType.Chest, null },
            { SlotType.Head, null },
            { SlotType.Legs, null },
            { SlotType.Weapon, null }
        };
    }
    public override bool Use()
    {
        IHealth       health         = Player.instance.Health;
        List <Effect> effectsApplied = new List <Effect>();

        foreach (Effect effect in Effects)
        {
            if (effect.EffectType == EffectType.TakeDamage)
            {
                if (effect.Amount <= 0 && health.CurrentHealth == health.MaxHealth)
                {
                    continue;
                }
                health.TakeDamage(effect.Amount, effect.Duration);
                effectsApplied.Add(effect);
            }
        }

        return(effectsApplied.Count > 0);
    }
        private void OnTriggerEnter(Collider other)
        {
            if (!TreeBoss.hasMeleeHit)
            {
                if (other.gameObject.layer == GlobalVariables.PLAYER_LAYER)
                {
                    IHealth otherHealth = other.GetComponent <IHealth>();
                    if (otherHealth == null)
                    {
                        otherHealth = other.GetComponentInParent <IHealth>();
                    }

                    otherHealth.DecreaseHealth(currentAttackDmg, attackDmgType);
                    TreeBoss.hasMeleeHit = true;

                    ParticleEffectBase hitParticles = (ParticleEffectBase)GameMan.Instance.ObjPoolMan.GetObjectFromPool(ObjectPoolType.MeleeHitParticles);
                    hitParticles.Activate(GameMan.Instance.PlayerT.position, Quaternion.identity);
                }
            }
        }
Exemple #35
0
 void Start()
 {
     healthMgr = transform.parent.GetComponent<IHealth>();
     engine=transform.parent.GetComponent<PlayerEngine>();
     nextFireTime=Time.time;
 }
 void Awake()
 {
     healthMgr = GetComponentInParent<IHealth>();
 }
Exemple #37
0
 static HitStruct PowerHit(IDealsDamage Power, IHealth Target)
 {
     HitStruct Hit = Power.GetDamage();
     Target.Health -= Hit.HealthDamage;
     IStun StunTarget = Target as IStun;
     if (StunTarget != null)
     {
         StunTarget.Stun -= Hit.StunDamage;
     }
     return Hit;
 }
Exemple #38
0
 void Awake()
 {
     healthBar = GetComponent<IHealth>();
 }
Exemple #39
0
 // creates service definition that can be registered with a server
 public static ServerServiceDefinition BindService(IHealth serviceImpl)
 {
   return ServerServiceDefinition.CreateBuilder(__ServiceName)
       .AddMethod(__Method_Check, serviceImpl.Check).Build();
 }
 void IBullet.ApplyDamageOnHit(IHealth hitObject)
 {
     hitObject.ApplyDamage(damage);
 }
        void DrawHealthBar(WorldRenderer wr, IHealth health, float3 start, float3 end)
        {
            if (health == null || health.IsDead)
                return;

            var c = Color.FromArgb(128, 30, 30, 30);
            var c2 = Color.FromArgb(128, 10, 10, 10);
            var iz = 1 / wr.Viewport.Zoom;
            var p = new float2(0, -4 * iz);
            var q = new float2(0, -3 * iz);
            var r = new float2(0, -2 * iz);

            var healthColor = GetHealthColor(health);
            var healthColor2 = Color.FromArgb(
                255,
                healthColor.R / 2,
                healthColor.G / 2,
                healthColor.B / 2);

            var z = float3.Lerp(start, end, (float)health.HP / health.MaxHP);

            var wcr = Game.Renderer.WorldRgbaColorRenderer;
            wcr.DrawLine(start + p, end + p, iz, c);
            wcr.DrawLine(start + q, end + q, iz, c2);
            wcr.DrawLine(start + r, end + r, iz, c);

            wcr.DrawLine(start + p, z + p, iz, healthColor2);
            wcr.DrawLine(start + q, z + q, iz, healthColor);
            wcr.DrawLine(start + r, z + r, iz, healthColor2);

            if (health.DisplayHP != health.HP)
            {
                var deltaColor = Color.OrangeRed;
                var deltaColor2 = Color.FromArgb(
                    255,
                    deltaColor.R / 2,
                    deltaColor.G / 2,
                    deltaColor.B / 2);
                var zz = float3.Lerp(start, end, (float)health.DisplayHP / health.MaxHP);

                wcr.DrawLine(z + p, zz + p, iz, deltaColor2);
                wcr.DrawLine(z + q, zz + q, iz, deltaColor);
                wcr.DrawLine(z + r, zz + r, iz, deltaColor2);
            }
        }
 Color GetHealthColor(IHealth health)
 {
     if (Game.Settings.Game.UsePlayerStanceColors)
         return actor.Owner.PlayerStanceColor(actor);
     else
         return health.DamageState == DamageState.Critical ? Color.Red :
             health.DamageState == DamageState.Heavy ? Color.Yellow : Color.LimeGreen;
 }