public override IEnumerator Die()
    {
        if (IWasHitBy != null)
        {
            IWasHitBy.GetComponent <NPC>().Kills++;
        }

        // to do: fade out
        yield return(new WaitForSeconds(timeUntilDisappear));

        if (FatherBuilding != null)
        {
            this.gameObject.transform.position = new Vector3(FatherBuilding.transform.position.x, 0, FatherBuilding.transform.position.z);
        }

        if (!Monster && !isSummon)
        {
            analytics.removeNPC(this.gameObject);
        }

        Destroy(this.gameObject);
    }
    public override void TrueTakeDmg(float Dmg)
    {
        int num = Random.Range(0, 3);

        if (num >= 2 && takeingDmgSound.Length < 0)
        {
            int ran = Random.Range(0, takeingDmgSound.Length);
            Instantiate(takeingDmgSound[ran], this.gameObject.transform.position, transform.rotation);
        }

        float DmgDealt = Dmg;

        if (FloatingtextPrefab)
        {
            ShowFloatingtext();
        }
        if (DmgDealt <= 0)
        {
            DmgDealt = 0;
        }

        CurrentHP -= DmgDealt;
        if ((Monster == false && isSummon == false && Guard == false && Worker == false && Merchent == false))
        {
            if (isMyPanelOpen())
            {
                charData.updateText();
            }
        }
        LastDmgTaken = (int)DmgDealt;
        MyDmgDealt  += (int)DmgDealt;


        if (isSummon == false && !Monster)
        {
            analytics.OnDataChanged(this.gameObject, "Damage Dealt");//analytics
        }

        if (IWasHitBy != null)
        {
            float MyDmgDealt = IWasHitBy.GetComponent <NPC>().MyDmgDealt + DmgDealt;
        }

        if (CurrentHP <= 0)
        {
            IsDead = true;
            if (Worker || Guard || Merchent)
            {
                FatherBuilding.GetComponent <TownHall>().RemoveFromWork(this.gameObject);
            }

            if (Monster == true)
            {
                StartCoroutine(Die());
            }
            removeMonsterToBuilding();
            if (dieSound != null)
            {
                Instantiate(dieSound, this.gameObject.transform.position, transform.rotation);
            }
        }
        else if ((CurrentHP < HP) && (IsDead == false) && (RegenOn == false))
        {
            RegenOn = true;
            Regen   = StartCoroutine(Regeneration());
        }
    }