Beispiel #1
0
    public void CheckLevelup(GameObject obj)
    {
        List <GameObject> levelupObjs = new List <GameObject>();

        foreach (GameObject o in GameFSMManager.instance.FindAllies())
        {
            if (o == obj)
            {
                continue;
            }                           //스스로 무시하고
            UnitStat o_stat = o.GetComponent <UnitStat>();
            if (o_stat.name == currentItem.stat.name && o_stat.level == currentItem.stat.level)
            {
                levelupObjs.Add(o);
            }
        }
        if (levelupObjs.Count >= 2)
        {
            foreach (GameObject o in levelupObjs)
            {
                Destroy(o.GetComponent <UnitStat>().hpBar.gameObject);
                Destroy(o.gameObject);// o.GetComponent<UnitFSMManager>().SetState(UnitState.DEAD);
            }
            obj.GetComponent <UnitStat>().level++;
        }
        else
        {
            return;
        }
    }
Beispiel #2
0
        private double AdjustStat(UnitBuilder unit, double valueBudget, UnitStat stat)
        {
            switch (stat)
            {
            case UnitStat.Health:
                return(AdjustHealthStat(unit, valueBudget));

            case UnitStat.Armor:
                return(AdjustArmorStat(unit, valueBudget));

            case UnitStat.Cost:
                return(AdjustCostStat(unit, valueBudget));

            case UnitStat.BuildTime:
                return(AdjustBuildTimeStat(unit, valueBudget));

            case UnitStat.Supply:
                return(AdjustSupplyCostStat(unit, valueBudget));

            case UnitStat.MoveRange:
                return(AdjustMoveRangeStat(unit, valueBudget));

            default:
                return(0);
            }
        }
        public short SetItemStatMultiplier(Stats bonusType, int mult)
        {
            UnitStat stat = GetUnitStat(bonusType);

            stat.ItemStatMultiplier = mult;
            return((short)(stat.AvailableItemBonus * (stat.ItemStatMultiplier - 1)));
        }
Beispiel #4
0
    public void TakeDamage(int damage)
    {
        health -= damage;
        if (health > healthMax)
        {
            health = healthMax;
        }

        AnimaText animaText = new AnimaText();

        if (damage > 0)
        {
            animaText.ShowText(PlayerMovement.tilePos, damage.ToString(), Color.red);
        }
        else if (damage < 0)
        {
            animaText.ShowText(PlayerMovement.tilePos, damage.ToString(), Color.green);
        }
        else
        {
            animaText.ShowText(PlayerMovement.tilePos, damage.ToString(), Color.gray);
        }

        UnitStat unitStat = new UnitStat();

        unitStat.DisplayStats(PlayerMovement.tilePos);
    }
        public int GetStatLinearModifier(Stats statType)
        {
            UnitStat modifier = _statModifiers[(int)statType];

            if (modifier == null)
            {
                _logger.Trace($"Modifier : null");
                return(0);
            }
            else
            {
                _logger.Trace($"Modifier : {modifier.TotalStat} {modifier.TotalMultiplier} {modifier.AvailableItemBonus} {modifier.InternalItemBonus} {modifier.ItemAddFromStat}");
            }

            int linearStat = modifier.TotalStat;

            if (modifier.ItemAddFromStat != 0)
            {
                linearStat += _statModifiers[modifier.ItemAddFromStat].InternalItemBonus;
            }

            _logger.Trace($"HTStacks : {HTLStacks} linearstat {linearStat}");

            if (HTLStacks == 0 || (statType != Stats.Disrupt && statType != Stats.Evade))
            {
                return(linearStat);
            }

            _logger.Trace($"return is {linearStat + Math.Min((byte)3, HTLStacks) * 15}");

            return(linearStat + Math.Min((byte)3, HTLStacks) * 15);
        }
Beispiel #6
0
        public void SetUnit(Unit _unit)
        {
            m_Unit     = _unit;
            m_UnitStat = m_Unit.m_Stat;

            SetData();
        }
Beispiel #7
0
        public short GetTotalStat(Stats bonusType)
        {
            if (GetUnit() == null)
            {
                return(0);
            }

            int value = GetCoreStat(bonusType);

            UnitStat statModifier = _statModifiers[(int)bonusType];

            if (statModifier == null)
            {
                return((short)value);
            }

            if (bonusType < Stats.BaseStatCount && value + GetStatLinearModifier(bonusType) <= 0)
            {
                return(0);
            }

            value = (int)((value + GetStatLinearModifier(bonusType)) * statModifier.TotalMultiplier);

            return((short)value);
        }
Beispiel #8
0
    private void Start()
    {
        switch (type)
        {
        case CharacterType.Hero:
            stat = (UnitStat)AssetDatabase.LoadAssetAtPath("Assets/Datas/Heroes/Hero_" + characterCode + ".asset", typeof(UnitStat));
            setSkills(stat.GetSkills());
            cooldown = new List <float> {
                0.0f, 0.0f, 0.0f, 0.0f
            };
            break;

        case CharacterType.Unit:
            stat = (UnitStat)AssetDatabase.LoadAssetAtPath("Assets/Datas/Units/Unit_" + characterCode + ".asset", typeof(UnitStat));
            break;

        case CharacterType.Building:
            stat = (UnitStat)AssetDatabase.LoadAssetAtPath("Assets/Datas/Buildings/Building_" + characterCode + ".asset", typeof(UnitStat));
            break;
        }
        setStats(stat.GetStats());
        setSprite(stat.GetSprite());
        anime = gameObject.GetComponent <Animator>();
        anime.runtimeAnimatorController = stat.GetAnime();
        nextMovePosition = transform.position;
        direction        = CharacterDirection.Right;
    }
Beispiel #9
0
        public void unitstat_cannot_decrease_beyond_zero()
        {
            UnitStat stat = new UnitStat(10);

            stat.AddModifier(new StatModifier(-15, StatModType.Flat));
            Assert.AreEqual(0, stat.Value);
        }
Beispiel #10
0
    public void ShowToolTip(UnitStat stat, string statName)
    {
        statNameText.text     = GetStatTopText(stat, statName);
        statModifierText.text = GetStatModifiersText(stat);

        gameObject.SetActive(true);
    }
Beispiel #11
0
        public void unitstat_cannot_increase_beyond_limit()
        {
            UnitStat stat = new UnitStat(10, true);

            stat.AddModifier(new StatModifier(-3, StatModType.Flat));
            stat.AddModifier(new StatModifier(5, StatModType.Flat));
            Assert.AreEqual(10, stat.Value);
        }
Beispiel #12
0
 public void SetStat(UnitStat s, int v)
 {
     stats[s] += v;
     if (stats[UnitStat.skillpoints] > 0)
     {
         stats[UnitStat.skillpoints] -= 1;
     }
 }
Beispiel #13
0
 protected virtual void Awake()
 {
     m_Stat              = GetComponent <UnitStat>();
     m_Animator          = GetComponent <Animator>();
     m_SpriteRenderer    = GetComponent <SpriteRenderer>();
     m_SetCenterPosition = GetComponent <SetCenterPosition>();
     m_SetZOrder         = GetComponent <SetZOrder>();
 }
Beispiel #14
0
    public static void SetStat(UnitType subject, UnitStat stat, float value)
    {
        if (stat == UnitStat.Level || stat == UnitStat.Experience)
        {
            return;
        }

        mUnitStats [(int)subject, (int)stat] = value;
    }
Beispiel #15
0
 override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
 {
     if (!initialized)
     {
         this.stat   = animator.GetComponent <UnitStat>();
         initialized = true;
     }
     stat.OnIdleStateEnter();
 }
Beispiel #16
0
        private UnitStat GetUnitStat(Stats statType)
        {
            byte type = (byte)statType;

            if (_statModifiers[type] == null)
            {
                _statModifiers[type] = new UnitStat(this);
            }
            return(_statModifiers[type]);
        }
Beispiel #17
0
        public ushort GetCombinationItemStat(Stats statType)
        {
            UnitStat mainStat = GetUnitStat(statType);

            if (mainStat.ItemAddFromStat == 0)
            {
                return(mainStat.InternalItemBonus);
            }
            return((ushort)(mainStat.InternalItemBonus + _statModifiers[mainStat.ItemAddFromStat].InternalItemBonus));
        }
Beispiel #18
0
        public void modifier_with_default_duration_is_not_removed()
        {
            UnitStat stat = new UnitStat(10);

            stat.AddModifier(new StatModifier(0.4f, StatModType.PercentAdd));
            stat.DecrementDuration();
            stat.DecrementDuration();
            stat.DecrementDuration();
            Assert.AreEqual(10 * 1.4f, stat.Value);
        }
Beispiel #19
0
 private static UnitStat[] GetStatsToDisplay(Unit unit)
 {
     UnitStat[] stats = new UnitStat[5];
     stats[0] = unit.stats[StatString.PHYSICAL_DAMAGE];
     stats[1] = unit.stats[StatString.MAGIC_DAMAGE];
     stats[2] = unit.stats[StatString.HIT_RATE];
     stats[3] = unit.stats[StatString.CRIT_RATE];
     stats[4] = unit.stats[StatString.ATTACK_RANGE];
     return(stats);
 }
    public void MakeHPBar(UnitStat target)
    {
        GameObject bar = Instantiate(HPBar);

        bar.transform.parent = canvas.transform;

        HPBarManager manager = bar.GetComponent <HPBarManager>();

        manager.stat = target;
        target.hpBar = manager;
    }
Beispiel #21
0
 public bool ConsumeRage()
 {
     if (rage >= rageConsume)
     {
         rage -= rageConsume;
         UnitStat unitStat = new UnitStat();
         unitStat.DisplayStats(PlayerMovement.tilePos);
         return(true);
     }
     return(false);
 }
Beispiel #22
0
    public void Goto(UnitStat stat)
    {
        this.gameObject.SetActive(true);
        info.text = stat.name + " " + (stat.level + 1).ToString() + "성" +
                    "\n공격속도: " + stat.attackSpeed.ToString() +
                    "\n공격력: " + stat.power.ToString() +
                    "\n이동속도:" + stat.moveSpeed.ToString();
        Vector3 pos = stat.transform.position;

        transform.position = Camera.main.WorldToScreenPoint(pos);
    }
Beispiel #23
0
        public void modifier_with_duration_4_is_removed_after_4_endTurns()
        {
            UnitStat stat = new UnitStat(10);

            stat.AddModifier(new StatModifier(0.4f, 4, StatModType.PercentAdd));
            stat.DecrementDuration();
            stat.DecrementDuration();
            stat.DecrementDuration();
            Assert.AreEqual(10 * 1.4f, stat.Value);
            stat.DecrementDuration();
            Assert.AreEqual(10, stat.Value);
        }
Beispiel #24
0
        public void modifiers_applied_in_custom_sorting_order()
        {
            UnitStat stat = new UnitStat(10);

            stat.AddModifier(new StatModifier(0.4f, StatModType.PercentAdd, 1));
            stat.AddModifier(new StatModifier(-0.3f, StatModType.PercentMult, 2));
            Assert.AreEqual(10 * 1.4f * 0.7f, stat.Value);
            stat.AddModifier(new StatModifier(-5, StatModType.Flat, 3));
            Assert.AreEqual(10 * 1.4f * 0.7f - 5, stat.Value);
            stat.AddModifier(new StatModifier(0.3f, StatModType.PercentMult, 4));
            Assert.AreEqual(1.3f * (10 * 1.4f * 0.7f - 5), stat.Value);
        }
Beispiel #25
0
    public void ResetStats()
    {
        health = healthMax;
        rage   = 0;

        UnitStat unitStat = new UnitStat();

        unitStat.DisplayStats(PlayerMovement.tilePos);

        keyObtained = false;
        bossKilled  = false;
    }
Beispiel #26
0
    public void DamagePlayer(int damage, int tile, Type type)
    {
        Rng rng = new Rng();

        damage = rng.Range(Mathf.FloorToInt(damage * 0.5f), Mathf.FloorToInt(damage * 1.5f) + 1);
        PlayerStat playerStat = new PlayerStat();

        playerStat.TakeDamage(damage);
        UnitStat unitStat = new UnitStat();

        unitStat.DisplayStats(tile);
    }
Beispiel #27
0
    public void Shop_Goto(UnitStat stat)
    {
        this.gameObject.SetActive(true);
        info.text = stat.name +
                    "\n공격속도: " + stat.attackSpeed.ToString() +
                    "\n공격력: " + stat.power.ToString() +
                    "\n이동속도:" + stat.moveSpeed.ToString() +
                    "\n가격: " + stat.price.ToString();
        Vector3 pos = stat.transform.position;

        transform.position = pos;
    }
    void Awake()
    {
        instance = this;
        states.Add(UnitState.IDLE, GetComponent <UnitIDLE>());
        states.Add(UnitState.MOVE, GetComponent <UnitMOVE>());
        states.Add(UnitState.ATTACK, GetComponent <UnitATTACK>());
        states.Add(UnitState.DEAD, GetComponent <UnitDEAD>());
        states.Add(UnitState.READY, GetComponent <UnitREADY>());

        cc   = GetComponent <CharacterController>();
        anim = GetComponentInChildren <Animator>();
        stat = GetComponent <UnitStat>();
        tag  = stat.type.ToString();
    }
Beispiel #29
0
        public void modifiers_applied_in_sorting_order()
        {
            UnitStat stat = new UnitStat(10);

            stat.AddModifier(new StatModifier(0.4f, StatModType.PercentAdd));
            stat.AddModifier(new StatModifier(-0.3f, StatModType.PercentMult));
            Assert.AreEqual(10 * 1.4f * 0.7f, stat.Value);
            stat.AddModifier(new StatModifier(-5, StatModType.Flat));
            Assert.AreEqual((10 - 5) * 1.4f * 0.7f, stat.Value);
            stat.AddModifier(new StatModifier(0.3f, StatModType.PercentMult));
            Assert.AreEqual((10 - 5) * 1.4f * 0.91f, stat.Value);
            stat.AddModifier(new StatModifier(0.3f, StatModType.PercentAdd));
            Assert.AreEqual((10 - 5) * 1.7f * 0.7f * 1.3f, stat.Value);
        }
Beispiel #30
0
    public void CreateUnits(int index)
    {
        Stage current = stages[index];

        for (int i = 0; i < current.unit.Count; i++)
        {
            GameObject obj = Instantiate(current.unit[i]);
            obj.transform.position = new Vector3(Random.Range(-10, 10), 0, Random.Range(-10, 10));
            UnitStat stat = obj.GetComponent <UnitStat>();
            stat.type = UnitType.ENEMY;
            stat.tag  = stat.type.ToString();
            stat.manager.SetBodyColor();
            stat.currentHp = stat.hp;
        }
    }
    public static void SetStat(UnitType subject, UnitStat stat, float value)
    {
        if (stat == UnitStat.Level || stat == UnitStat.Experience)
            return;

        mUnitStats [(int)subject, (int)stat] = value;
    }
Beispiel #32
0
    protected override void Awake()
    {
        base.Awake();

        mStats = GetComponentInChildren<UnitStat>();
        mFlockUnit = GetComponentInChildren<FlockUnit>();
        mListener = GetComponentInChildren<ActionListener>();
        mActTarget = GetComponentInChildren<ActionTarget>();
        mSpriteControl = GetComponentInChildren<UnitSpriteController>();
        mWeapon = GetComponentInChildren<Weapon>();
        mSpellCaster = GetComponentInChildren<SpellCaster>();

        //hook calls up
        mStats.statChangeCallback += OnStatChange;

        if(mFlockUnit != null) {
            mFlockUnit.groupMoveEnabled = false;
        }

        if(mListener != null) {
            mListener.enterCallback += OnActionEnter;
            mListener.hitEnterCallback += OnActionHitEnter;
            mListener.hitExitCallback += OnActionHitExit;
            mListener.finishCallback += OnActionFinish;
        }
    }
    public static float GetStat(UnitType unit, UnitStat stat)
    {
        Era currentEra = GameState.GameEra;

        if (stat == UnitStat.Level)
            return mUnitLevels[(int) unit, (int) currentEra];

        if (stat == UnitStat.Experience)
            return mUnitExperience[(int) unit, (int) currentEra];

        return mUnitStats [(int)unit, (int)stat];
    }