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); }
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; // 평화주의자 } }