https://rumble.com/v4gs79w-livingrimoire-awareness-skill.html

example of adding the skill:
chobit.addSkill(DiAware(chobit, "ember", "mcgyver"))

as you can see this skill has access to the very chobit object which contains it.

this access enables the chobit to know what skills it has been equipped with.

there is a lot of unlocked potential just by knowing the skill's names:
referencing what the bot can do,
toggling skills
logging and retrieving specific information using precise commands
(what did you do recently?)

Code:

public class DiAware extends DiSkillV2 {
    private Chobits chobit;
    private String name;
    private String summoner = "user";
    private ArrayList<String> skills = new ArrayList<String>();

    public DiAware(Chobits chobit, String name, String summoner) {
        this.chobit = chobit;
        this.name = name;
        this.summoner = summoner;
    }

    @Override
    public void input(String ear, String skin, String eye) {
        switch(ear) {
            case "list skills":
                skills = chobit.getSkillList();
                setVerbatimAlgFromList(4, skills);
                break;
            case "what is your name":
                setSimpleAlg(this.name);
                break;
            case "name summoner":
                setSimpleAlg(this.summoner);
                break;
            case "how do you feel":
                // handle in hardware skill in hardware chobit
                this.kokoro.toHeart.put("last_ap", chobit.getSoulEmotion());
                break;
        }
    }
}


to make this skill possible a method was added to the Chobit class:

Code:

  public ArrayList<String> getSkillList(){
        ArrayList<String> result = new ArrayList<String>();
        for (DiSkillV2 skill: this.dClasses) {
            result.add(skill.getClass().getSimpleName());
        }
        return result;
    }

:s32: