Empire.Traits : components.Traits::Traits { local bool hasTrait(uint id) const; local uint get_traitCount() const; local uint getTraitType(uint index) const; local uint get_attitudeCount() const; local Attitude@[] getAttitudes() const; local bool hasAttitude(uint id) const; local int getNextAttitudeCost(); local uint getAttitudeLevel(uint id) const; restricted remote: void takeAttitude(uint id); void discardAttitude(uint id); server: void addTrait(uint id, bool doPreInit = false); void preInitTraits(); void initTraits(); void postInitTraits(); void traitsTick(double time); void replaceTrait(uint fromId, uint toId, bool doPreInit = true); async void forceAttitude(uint id); async void forceDiscardAttitude(uint id); async void levelAttitude(uint id, int levels = 1); async void progressAttitude(uint id, double progress = 0.0, double pct = 0.0); async void resetAttitude(uint id); uint getLevelAttitudeCount(uint level); void writeTraits(Message& msg); void writeAttitudes(Message& msg, bool initial); shadow: void readTraits(Message& msg); void readAttitudes(Message& msg, bool initial); };