Script Help Please

i have errors in this script that i have no idea whats wrong with them.

these are the 2 errors

Assets/Characterclasses/BaseCharacter.cs(77,25): error CS0029: Cannot implicitly convert type Attribute' to Vital’

Assets/Characterclasses/BaseCharacter.cs(83,25): error CS0029: Cannot implicitly convert type Attribute' to Skill’

[CODE/]using UnityEngine;
using System.Collections;
using System;

public class BaseCharacter : MonoBehaviour {
private string _name;
private int _level;
private uint _freeExp;

private Attribute _primaryAttribute;
private Vital _vital;
private Skill _skill;

public void Awake() {
_name = string.Empty;
_level = 0;
_freeExp = 0;

_primaryAttribute = new Attribute[Enum.GetValues(typeof(AttributeName)).Length];
_vital = new Vital[Enum.GetValues(typeof(VitalName)).Length];
_skill = new Skill[Enum.GetValues(typeof(SkillName)).Length];

SetupPrimaryAttributes();
SetupVitals();
SetupSkills();

public string Name {
get{ return _name; }
set{ _name = value; }
}

public int Level {
get{ return _level; }
set{ _level = value; }
}

public uint FreeExp {
get{ return _freeExp; }
set{ _freeExp = value; }
}

public void AddExp(uint exp) {
_freeExp += exp;

CalculateLevel();
}

public void CalculateLevel() {
}

private void SetupPrimaryAttributes() {
for(int cnt = 0; cnt < _primaryAttribute.Length; cnt++) {
_primaryAttribute[cnt] = new Attribute();
}

}

private void SetupVitals() {
for(int cnt = 0; cnt < _vital.Length; cnt++) {
_vital[cnt] = new Attribute();
}
}

private void SetupSkills() {
for(int cnt = 0; cnt < _skill.Length; cnt++) {
_skill[cnt] = new Attribute();
}
}

public Attribute GetPrimaryAttribute(int index) {
return _primaryAttribute[index];
}

public Vital GetVital(int index) {
return _vital[index];
}

public Skill GetSkill(int index) {
return _skill[index];
}

private void SetupVitalModifiers() {
GetVital((int)VitalName.Health).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Vitality), .5f));

GetVital((int)VitalName.Energy).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Vitality), 1));

GetVital((int)VitalName.Mana).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Intelligence), 1));

}

private void SetupSkillModifiers() {
GetSkill((int)SkillName.Melee_Offense).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Strength), .33f));
GetSkill((int)SkillName.Melee_Offense).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Attack), .33f));

GetSkill((int)SkillName.Melee_Defense).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Speed), .33f));
GetSkill((int)SkillName.Melee_Defense).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Vitality), .33f));

GetSkill((int)SkillName.Magic_Offense).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Intelligence), .33f));
GetSkill((int)SkillName.Magic_Offense).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Magic), .33f));

GetSkill((int)SkillName.Magic_Defense).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Intelligence), .33f));
GetSkill((int)SkillName.Magic_Defense).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Magic), .33f));

GetSkill((int)SkillName.Ranged_Offense).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Intelligence), .33f));
GetSkill((int)SkillName.Ranged_Offense).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Speed), .33f));

GetSkill((int)SkillName.Ranged_Defense).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Parry), .33f));
GetSkill((int)SkillName.Ranged_Defense).AddModifier(new ModifyingAttribute(GetPrimaryAttribute((int)AttributeName.Speed), .33f));

}

public void StatUpdate() {
for(int cnt = 0; cnt < _vital.Length; cnt++)
_vital[cnt].Update();

for(int cnt = 0; cnt < _skill.Length; cnt++)
_skill[cnt].Update();
}

}


Also its c sharp (c#)

You cannot do this…

But why not? is it the [cnt]? or the value cannot be zero or?

You can’t because _vital is an Array of Vitals and _skill is an Array of Skills. Neither of them is an Array of Attributes.

I guess that Vital and Skill both extend Attribute.
But a firetruck may be a car, that doesn’t make all cars firetrucks :wink: