Exemple #1
0
    public void applyTrait(TraitTypeInfo addTrait)
    {
        traitList.Add(addTrait);

        traitMaxHp     = 0;
        traitMaxmental = 0;
        traitmovement  = 0;
        traitWork      = 0;

        if (addTrait.discType != 0)
        {
            checkAgentLifeValue(addTrait);
        }

        for (int i = 0; i < traitList.Count; i++)
        {
            traitMaxHp     += traitList[i].hp;
            traitMaxmental += traitList[i].mental;
            traitmovement  += traitList[i].moveSpeed;
            traitWork      += traitList[i].workSpeed;
        }

        maxHp     = defaultMaxHp + traitMaxHp;
        maxMental = defaultMaxMental + traitMaxmental;
        movement  = defaultMovement + traitmovement;
        work      = defaultWork + traitWork;

        hp     += addTrait.hp;
        mental += addTrait.mental;

        directBonus   += (int)addTrait.directWork;
        inDirectBonus += (int)addTrait.inDirectWork;
        blockBonus    += (int)addTrait.blockWork;

        if (maxHp <= 0)
        {
            maxHp = 1;
            hp    = 1;
        }

        if (maxMental <= 0)
        {
            maxMental = 1;
            mental    = 1;
        }

        if (movement <= 0)
        {
            movement = 1;
        }

        if (work <= 0)
        {
            work = 1;
        }


        Debug.Log("변경후 체력" + maxHp);
        Debug.Log("변경후 멘탈" + maxMental);
        Debug.Log("변경후 속도" + movement);
        Debug.Log("변경후 작업속도" + work);
    }
Exemple #2
0
    public void checkAgentLifeValue(TraitTypeInfo addTrait)
    {
        if (addTrait.discType == 1)
        {
            externalTrait++;
        }

        else if (addTrait.discType == 2)
        {
            internalTrait++;
        }

        else if (addTrait.discType == 3)
        {
            thinkTrait++;
        }

        else if (addTrait.discType == 4)
        {
            emotionalTrait++;
        }

        int externalFlag = 0;
        int thinkFlag    = 0;

        if (externalTrait > internalTrait)
        {
            externalFlag = 1;
        }

        else if (externalTrait < internalTrait)
        {
            externalFlag = 0;
        }

        else
        {
            if (Random.Range(0, 1) == 1)
            {
                externalFlag = 1;
            }
            else
            {
                externalFlag = 0;
            }
        }

        if (thinkTrait > emotionalTrait)
        {
            thinkFlag = 1;
        }

        else if (thinkTrait < emotionalTrait)
        {
            thinkFlag = 0;
        }

        else
        {
            if (Random.Range(0, 1) == 1)
            {
                thinkFlag = 1;
            }
            else
            {
                thinkFlag = 0;
            }
        }

        if (externalFlag == 1 && thinkFlag == 1)
        {
            agentLifeValue = 1; // 합리주의자
        }

        else if (externalFlag == 1 && thinkFlag == 0)
        {
            agentLifeValue = 2; // 낙천주의자
        }

        else if (externalFlag == 0 && thinkFlag == 1)
        {
            agentLifeValue = 3; // 원칙주의자
        }

        else if (externalFlag == 0 && thinkFlag == 0)
        {
            agentLifeValue = 4; // 평화주의자
        }
    }