CharClass
, CMObject
, Modifiable
, MsgListener
, StatsAffecting
, Tickable
, java.lang.Cloneable
, java.lang.Comparable<CMObject>
public class GenCharClass extends StdCharClass
CharClass.SubClassRule
Modifier and Type | Field | Description |
---|---|---|
protected PhyStats |
adjPStats |
|
protected CharState |
adjState |
|
protected CharStats |
adjStats |
|
protected int |
allowedArmorLevel |
|
protected int |
attackAttribute |
|
protected java.lang.String |
baseClass |
|
protected int |
bonusAttackLevel |
|
protected int |
bonusPracLevel |
|
protected static java.lang.String[] |
CODES |
|
protected int |
disableFlags |
|
protected java.util.Set<java.lang.Integer> |
disallowedWeaponSet |
|
protected CharClass |
eventBuddy |
|
protected java.lang.String |
helpEntry |
|
protected java.lang.String |
hitPointsFormula |
|
protected java.lang.String |
ID |
|
protected int |
levelCap |
|
protected int |
levelsPerBonusDamage |
|
protected java.lang.String |
manaFormula |
|
protected int |
maxCommonSkills |
|
protected int |
maxCraftingSkills |
|
protected int |
maxLanguages |
|
protected int |
maxNonCraftingSkills |
|
protected java.lang.String |
movementFormula |
|
protected java.lang.Integer[] |
nameLevels |
|
protected java.lang.String |
otherBonuses |
|
protected java.lang.String |
otherLimitations |
|
protected int |
pracsFirstLevel |
|
protected java.lang.String |
qualifications |
|
protected int |
requiredArmorSourceMinor |
|
protected java.util.Map<java.lang.Integer,CMSecurity.SecGroup> |
securityGroupCache |
|
protected java.lang.Integer[] |
securityGroupLevels |
|
protected java.util.List<java.lang.String>[] |
securityGroups |
|
protected int |
selectability |
|
protected CharStats |
setStats |
|
protected CharState |
startAdjState |
|
protected java.lang.String |
startingMoney |
|
protected CharClass |
statBuddy |
|
protected CharClass.SubClassRule |
subClassRule |
|
protected java.lang.String[] |
tempables |
|
protected int |
trainsFirstLevel |
|
protected java.lang.String[] |
xtraValues |
ARMOR_ANY, ARMOR_CLOTH, ARMOR_DESCS, ARMOR_LEATHER, ARMOR_LONGDESC, ARMOR_METALONLY, ARMOR_NONMETAL, ARMOR_OREONLY, ARMOR_VEGAN, ARMOR_WEARMASK, GENFLAG_DESCS, GENFLAG_NOEXP, GENFLAG_NOLEVELS, GENFLAG_NORACE, GENFLAG_THINQUALLIST, WEAPONS_ALLCLERIC, WEAPONS_ANY, WEAPONS_BURGLAR, WEAPONS_DAGGERONLY, WEAPONS_EVILCLERIC, WEAPONS_FLAILONLY, WEAPONS_GOODCLERIC, WEAPONS_LONGDESC, WEAPONS_MAGELIKE, WEAPONS_MERLIKE, WEAPONS_NATURAL, WEAPONS_NEUTRALCLERIC, WEAPONS_ROCKY, WEAPONS_SETS, WEAPONS_STAFFONLY, WEAPONS_THIEFLIKE
cachedRaceQualList, finalAllowedRaceSet, hitPointDescReplacePairs, hitPointsDesc, lastPropsCheckTime, manaDesc, manaDescReplacePairs, maxStatAdj, movementDesc, movementDescReplacePairs, names, outfitChoices, previousRaceListHash
STATUS_AFFECT, STATUS_ALIVE, STATUS_BEHAVIOR, STATUS_CLASS, STATUS_DEAD, STATUS_END, STATUS_FIGHT, STATUS_MISC, STATUS_MISC2, STATUS_MISC3, STATUS_MISC4, STATUS_MISC5, STATUS_MISC6, STATUS_MISC7, STATUS_NOT, STATUS_OTHER, STATUS_RACE, STATUS_REBIRTH, STATUS_SCRIPT, STATUS_START, STATUS_WEATHER, TICKID_AREA, TICKID_BALLISTICK, TICKID_CLAN, TICKID_CLANITEM, TICKID_DEADBODY_DECAY, TICKID_ELECTRONICS, TICKID_EMAIL, TICKID_EVENT, TICKID_EXIT_BEHAVIOR, TICKID_EXIT_REOPEN, TICKID_ITEM_BEHAVIOR, TICKID_ITEM_BOUNCEBACK, TICKID_LIGHT_FLICKERS, TICKID_LIVEAUCTION, TICKID_LONGERMASK, TICKID_MISCELLANEOUS, TICKID_MOB, TICKID_PROPERTY_SPECIAL, TICKID_QUEST, TICKID_READYTOSTOP, TICKID_ROOM_BEHAVIOR, TICKID_ROOM_ITEM_REJUV, TICKID_SHORTERMASK, TICKID_SOLITARYMASK, TICKID_SPECIALCOMBAT, TICKID_SPECIALMANEUVER, TICKID_SPELL_AFFECT, TICKID_SUPPORT, TICKID_TIMEAUCTION, TICKID_TRAP_DESTRUCTION, TICKID_TRAP_RESET
Constructor | Description |
---|---|
GenCharClass() |
Modifier and Type | Method | Description |
---|---|---|
int |
addedExpertise(MOB host,
ExpertiseLibrary.XType expertiseCode,
java.lang.String abilityID) |
Whenever a uses a skill, this method can return any additional expertise
granted explicitly by the class.
|
void |
affectCharState(MOB affectedMob,
CharState affectableMaxState) |
This method is called by the recoverCharState() method on other MOB objects.
|
void |
affectCharStats(MOB affectedMob,
CharStats affectableStats) |
This method is called by the recoverCharStats() method on other MOB objects.
|
void |
affectPhyStats(Physical affected,
PhyStats affectableStats) |
This method is called by the recoverPhyStats() method on other Environmental objects.
|
int |
allowedArmorLevel() |
A code designating what kind of armor can be used by this class
without affecting their skills.
|
int |
allowedWeaponLevel() |
A code designating what kind of weapons can be used by this class
without fumbling their usage.
|
int |
availabilityCode() |
Returns one or a combination of the Area.THEME_*
constants from the Area interface.
|
java.lang.String |
baseClass() |
Returns the base-class of this class.
|
java.lang.String |
classParms() |
Returns any boot-time parameters that are required to fully define
this instance of a charclass.
|
void |
cloneFix(CharClass C) |
|
CMObject |
copyOf() |
Similar to Cloneable.clone(), but does its best to make sure that
any internal objects to this class are also copyOfed.
|
protected java.util.Set<java.lang.Integer> |
disallowedWeaponClasses(MOB mob) |
|
void |
executeMsg(Environmental myHost,
CMMsg msg) |
The general message event handler for the object.
|
boolean |
expless() |
Whether players of this class can gain or lose experience points.
|
protected void |
fixMaxStatAdj() |
|
protected java.util.Vector<AbilityMapper.AbilityMapping> |
getAbleSet() |
|
int |
getAttackAttribute() |
Returns which of the CharStats.STAT_* constants should be
used to calculate the standard attack prowess points given
when a member of this class gains a level.
|
int |
getBonusAttackLevel() |
Returns the number of bonus attack points received by members of
this class when they gain a level.
|
int |
getBonusPracLevel() |
Returns the number of bonus practices received by members of
this class when they gain a level.
|
protected java.lang.String |
getCharClassLocatorID(CharClass C) |
|
protected int |
getCodeNum(java.lang.String code) |
|
java.lang.String |
getHitPointsFormula() |
Returns the formula used every time a player of this class gains
a level as this class.
|
int |
getLevelCap() |
Returns the highest class level that can be achieved
by a player who has this class.
|
int |
getLevelsPerBonusDamage() |
Returns the number of levels which must be gained by a member
of this class before they gain 1 more point of default damage
per hit.
|
java.lang.String |
getManaFormula() |
Returns the formula used every time a player of this class gains
a level as this class.
|
Pair<java.lang.String,java.lang.Integer>[] |
getMinimumStatRequirements() |
Returns pairings of stat names and the minimum a player
must have in the state in order to learn this class.
|
java.lang.String |
getMovementFormula() |
Returns the formula used every time a player of this class gains
a level as this class.
|
java.lang.String |
getOtherBonusDesc() |
Returns a text description of any bonus properties
granted by this class to its members.
|
java.lang.String |
getOtherLimitsDesc() |
Returns a text description of any misc restrictions
imposed by this class upon its members.
|
int |
getPracsFirstLevel() |
Returns the number of practices received by members of
this class when they are first created.
|
java.lang.String[] |
getRequiredRaceList() |
Returns an array of Strings containing either the
names of particular races, racial categories, or
the word "ANY" to mean any class is OK.
|
int |
getSaveStatIndex() |
Returns the index into the stat codes array where extra savable fields begins.
|
CMSecurity.SecGroup |
getSecurityFlags(int classLevel) |
Returns a read only set of security flags granted to all mobs/players
who are this class, and the given class level or lower.
|
java.lang.String |
getStartingMoney() |
Returns a text string for amount of money for characters
starting as this character.
|
java.lang.String |
getStat(java.lang.String code) |
An alternative means of retreiving the values of those fields on this object which are modifiable at
run-time by builders.
|
java.lang.String[] |
getStatCodes() |
Returns an array of the string names of those fields which are modifiable on this object at run-time by
builders.
|
java.lang.String |
getStatQualDesc() |
Returns a text description of the stat qualifications
required to become a member of this character class
|
CharClass.SubClassRule |
getSubClassRule() |
This defines how this class fits into the SUB subclassing class system.
|
int |
getTrainsFirstLevel() |
Returns the number of training sessions received by members of
this class when they are first created.
|
java.lang.String |
getWeaponLimitDesc() |
Returns a text description of any weapon restrictions
imposed by this class upon its members.
|
java.lang.String |
ID() |
The CoffeeMud Java Class ID shared by all instances of
this object.
|
boolean |
isGeneric() |
Returns whether this class is fully defined using the setParms
method, as opposed to being defined by its Java code.
|
boolean |
leveless() |
Whether players of this class can be associated with an experience level.
|
boolean |
loaded() |
|
int |
maxCommonSkills() |
Max number of common skills (both crafting and non-crafting) this class can learn.
|
int |
maxCraftingSkills() |
Max number of common crafting skills this class can learn.
|
int |
maxLanguages() |
Max number of languages this class can learn.
|
int |
maxNonCraftingSkills() |
Max number of common gathering/non-crafting skills this class can learn.
|
java.lang.String |
name() |
Returns the generally displayable name of this class.
|
java.lang.String |
name(int classLevel) |
Returns the displayable name of this class, when the mob is the
given class level.
|
CMObject |
newInstance() |
Returns a new instance of this class.
|
boolean |
okMessage(Environmental myHost,
CMMsg msg) |
The general message event previewer for the object.
|
boolean |
qualifiesForThisClass(MOB mob,
boolean quiet) |
Returns whether this given mob qualifies for this class, and
optionally gives them an error message.
|
boolean |
raceless() |
Whether this class can be associated with a race.
|
int |
requiredArmorSourceMinor() |
|
protected java.util.Set<java.lang.Integer> |
requiredWeaponMaterials() |
|
boolean |
sameAs(CharClass E) |
|
void |
setClassParms(java.lang.String parms) |
Sets any boot-time parameters that are required to fully define
this instance of a charclass.
|
void |
setLoaded(boolean truefalse) |
|
void |
setStat(java.lang.String code,
java.lang.String val) |
An alternative means of setting the values of those fields on this object which are modifiable at
run-time by builders.
|
boolean |
showThinQualifyList() |
Whether players of this class see qualifying skills only if they meet all prereqs.
|
void |
startCharacter(MOB mob,
boolean isBorrowedClass,
boolean verifyOnly) |
This method should be called whenever a mob has this class added to
their charStats list.
|
boolean |
tick(Tickable ticking,
int tickID) |
this is the method which is called periodically by the threading engine.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
adjustExperienceGain, allowedToAutoGain, armorCheck, armorFailMessage, buildDisallowedWeaponClasses, buildDisallowedWeaponClasses, buildRequiredWeaponMaterials, canBeABenificiary, canBeADivider, checkRaceQualifierChanges, classDurationModifier, classLevelModifier, cleanOutfit, compareTo, endCharacter, getArmorLimitDesc, getAttackDesc, getDamageDesc, getHitPointDesc, getManaDesc, getMaxStatDesc, getMovementDesc, getPracticeDesc, getPrimeStatDesc, getRaceQualDesc, getShortAttackAttribute, getTickStatus, getTrainDesc, giveMobAbility, giveMobAbility, grantAbilities, initializeClass, isAllowedRace, isQualifyingAuthority, isStat, isValidClassBeneficiary, isValidClassDivider, L, level, makeGenCharClass, maxStatAdjustments, nameSet, outfit, unLevel, weaponCheck
protected java.lang.String ID
protected java.lang.Integer[] nameLevels
protected java.lang.String baseClass
protected java.lang.String hitPointsFormula
protected java.lang.String manaFormula
protected java.lang.String movementFormula
protected int levelCap
protected int bonusPracLevel
protected int bonusAttackLevel
protected int attackAttribute
protected int pracsFirstLevel
protected int trainsFirstLevel
protected int levelsPerBonusDamage
protected int allowedArmorLevel
protected java.lang.String otherLimitations
protected java.lang.String otherBonuses
protected java.lang.String qualifications
protected java.lang.String[] xtraValues
protected CharClass.SubClassRule subClassRule
protected int selectability
protected int maxNonCraftingSkills
protected int maxCraftingSkills
protected int maxCommonSkills
protected int maxLanguages
protected int requiredArmorSourceMinor
protected java.util.Set<java.lang.Integer> disallowedWeaponSet
protected CharStats setStats
protected CharStats adjStats
protected PhyStats adjPStats
protected CharState adjState
protected CharState startAdjState
protected CharClass statBuddy
protected CharClass eventBuddy
protected int disableFlags
protected java.lang.String startingMoney
protected java.util.List<java.lang.String>[] securityGroups
protected java.lang.Integer[] securityGroupLevels
protected java.lang.String helpEntry
protected java.util.Map<java.lang.Integer,CMSecurity.SecGroup> securityGroupCache
protected static java.lang.String[] CODES
protected java.lang.String[] tempables
public java.lang.String getManaFormula()
CharClass
getManaFormula
in interface CharClass
getManaFormula
in class StdCharClass
CharClass.getManaDesc()
,
CharClass.getAttackAttribute()
public java.lang.String getHitPointsFormula()
CharClass
getHitPointsFormula
in interface CharClass
getHitPointsFormula
in class StdCharClass
CharClass.getHitPointDesc()
public CharClass.SubClassRule getSubClassRule()
CharClass
getSubClassRule
in interface CharClass
getSubClassRule
in class StdCharClass
public int getLevelCap()
CharClass
getLevelCap
in interface CharClass
getLevelCap
in class StdCharClass
public int maxNonCraftingSkills()
CharClass
maxNonCraftingSkills
in interface CharClass
maxNonCraftingSkills
in class StdCharClass
public int maxCraftingSkills()
CharClass
maxCraftingSkills
in interface CharClass
maxCraftingSkills
in class StdCharClass
public int maxCommonSkills()
CharClass
maxCommonSkills
in interface CharClass
maxCommonSkills
in class StdCharClass
public int maxLanguages()
CharClass
maxLanguages
in interface CharClass
maxLanguages
in class StdCharClass
public int allowedWeaponLevel()
CharClass
allowedWeaponLevel
in interface CharClass
allowedWeaponLevel
in class StdCharClass
CharClass.WEAPONS_ANY
protected java.util.Set<java.lang.Integer> requiredWeaponMaterials()
requiredWeaponMaterials
in class StdCharClass
public int requiredArmorSourceMinor()
requiredArmorSourceMinor
in class StdCharClass
public java.lang.String[] getRequiredRaceList()
CharClass
getRequiredRaceList
in interface CharClass
getRequiredRaceList
in class StdCharClass
CharClass.isAllowedRace(Race)
public Pair<java.lang.String,java.lang.Integer>[] getMinimumStatRequirements()
CharClass
getMinimumStatRequirements
in interface CharClass
getMinimumStatRequirements
in class StdCharClass
protected java.util.Set<java.lang.Integer> disallowedWeaponClasses(MOB mob)
disallowedWeaponClasses
in class StdCharClass
public boolean raceless()
CharClass
raceless
in interface CharClass
raceless
in class StdCharClass
Race
public boolean leveless()
CharClass
leveless
in interface CharClass
leveless
in class StdCharClass
public boolean expless()
CharClass
expless
in interface CharClass
expless
in class StdCharClass
public boolean showThinQualifyList()
CharClass
showThinQualifyList
in interface CharClass
showThinQualifyList
in class StdCharClass
public java.lang.String getStartingMoney()
CharClass
getStartingMoney
in interface CharClass
getStartingMoney
in class StdCharClass
public int addedExpertise(MOB host, ExpertiseLibrary.XType expertiseCode, java.lang.String abilityID)
CharClass
addedExpertise
in interface CharClass
addedExpertise
in class StdCharClass
host
- the player or mob whose class is being queriedexpertiseCode
- the expertise codeabilityID
- the Ability IDExpertiseLibrary.XType
public CMSecurity.SecGroup getSecurityFlags(int classLevel)
CharClass
getSecurityFlags
in interface CharClass
getSecurityFlags
in class StdCharClass
classLevel
- the class level of the mobpublic boolean isGeneric()
CharClass
isGeneric
in interface CharClass
isGeneric
in class StdCharClass
CharClass.classParms()
,
CharClass.makeGenCharClass()
,
CharClass.setClassParms(String)
public java.lang.String ID()
CMObject
ID
in interface CMObject
ID
in class StdCharClass
public java.lang.String name()
CharClass
name
in interface CharClass
name
in interface CMObject
name
in interface Tickable
name
in class StdCharClass
CharClass.name(int)
,
CharClass.nameSet()
public java.lang.String name(int classLevel)
CharClass
name
in interface CharClass
name
in class StdCharClass
classLevel
- the level to look up a name forCharClass.name()
,
CharClass.nameSet()
public java.lang.String baseClass()
CharClass
baseClass
in interface CharClass
baseClass
in class StdCharClass
public int getBonusPracLevel()
CharClass
getBonusPracLevel
in interface CharClass
getBonusPracLevel
in class StdCharClass
public int getBonusAttackLevel()
CharClass
getBonusAttackLevel
in interface CharClass
getBonusAttackLevel
in class StdCharClass
public int getAttackAttribute()
CharClass
getAttackAttribute
in interface CharClass
getAttackAttribute
in class StdCharClass
CharStats
public int getPracsFirstLevel()
CharClass
getPracsFirstLevel
in interface CharClass
getPracsFirstLevel
in class StdCharClass
public int getTrainsFirstLevel()
CharClass
getTrainsFirstLevel
in interface CharClass
getTrainsFirstLevel
in class StdCharClass
public int getLevelsPerBonusDamage()
CharClass
getLevelsPerBonusDamage
in interface CharClass
getLevelsPerBonusDamage
in class StdCharClass
public java.lang.String getMovementFormula()
CharClass
getMovementFormula
in interface CharClass
getMovementFormula
in class StdCharClass
CharClass.getMovementDesc()
public int allowedArmorLevel()
CharClass
allowedArmorLevel
in interface CharClass
allowedArmorLevel
in class StdCharClass
CharClass.ARMOR_WEARMASK
,
CharClass.ARMOR_ANY
public java.lang.String getOtherLimitsDesc()
CharClass
getOtherLimitsDesc
in interface CharClass
getOtherLimitsDesc
in class StdCharClass
public java.lang.String getOtherBonusDesc()
CharClass
getOtherBonusDesc
in interface CharClass
getOtherBonusDesc
in class StdCharClass
public int availabilityCode()
CharClass
availabilityCode
in interface CharClass
availabilityCode
in class StdCharClass
Area
public java.lang.String getWeaponLimitDesc()
CharClass
getWeaponLimitDesc
in interface CharClass
getWeaponLimitDesc
in class StdCharClass
public void cloneFix(CharClass C)
cloneFix
in class StdCharClass
public CMObject newInstance()
CMObject
newInstance
in interface CMObject
newInstance
in class StdCharClass
public CMObject copyOf()
CMObject
copyOf
in interface CMObject
copyOf
in class StdCharClass
public boolean loaded()
public void setLoaded(boolean truefalse)
public boolean qualifiesForThisClass(MOB mob, boolean quiet)
CharClass
qualifiesForThisClass
in interface CharClass
qualifiesForThisClass
in class StdCharClass
mob
- the mob to evaluate the worthiness ofquiet
- false to give the mob error messages, true for silencepublic java.lang.String getStatQualDesc()
CharClass
getStatQualDesc
in interface CharClass
getStatQualDesc
in class StdCharClass
protected java.lang.String getCharClassLocatorID(CharClass C)
public void affectPhyStats(Physical affected, PhyStats affectableStats)
StatsAffecting
affectPhyStats
in interface StatsAffecting
affectPhyStats
in class StdCharClass
affected
- the host of the PhyStats object being affectedaffectableStats
- the particular PhyStats object being affectedPhyStats
,
Environmental
,
Affectable.basePhyStats()
,
Affectable.phyStats()
,
Affectable.recoverPhyStats()
public boolean tick(Tickable ticking, int tickID)
Tickable
tick
in interface Tickable
tick
in class StdCharClass
ticking
- a reference to this Tickable objecttickID
- the TICKID_ constant describing this periodic call, as defined in TickableTickable
,
ServiceEngine
,
TickableGroup
public void executeMsg(Environmental myHost, CMMsg msg)
MsgListener
executeMsg
in interface MsgListener
executeMsg
in class StdCharClass
myHost
- either the initiator of the event, or the host of this objectmsg
- the CMMsg that needs to be executedCMMsg
public boolean okMessage(Environmental myHost, CMMsg msg)
MsgListener
okMessage
in interface MsgListener
okMessage
in class StdCharClass
myHost
- either the initiator of the event, or the host of this objectmsg
- the CMMsg that wants to be executedCMMsg
,
CMMsg.source()
public void affectCharStats(MOB affectedMob, CharStats affectableStats)
StatsAffecting
affectCharStats
in interface StatsAffecting
affectCharStats
in class StdCharClass
affectedMob
- the host of the CharStats object being affectedaffectableStats
- the particular CharStats object being affectedCharStats
,
MOB
,
MOB.baseCharStats()
,
MOB.charStats()
,
MOB.recoverCharStats()
public void affectCharState(MOB affectedMob, CharState affectableMaxState)
StatsAffecting
affectCharState
in interface StatsAffecting
affectCharState
in class StdCharClass
affectedMob
- the host of the CharState object being affectedaffectableMaxState
- the particular CharState object being affectedCharState
,
MOB
,
MOB.baseState()
,
MOB.curState()
,
MOB.recoverMaxState()
public java.lang.String classParms()
CharClass
classParms
in interface CharClass
classParms
in class StdCharClass
CharClass.setClassParms(String)
,
CharClass.isGeneric()
protected void fixMaxStatAdj()
public void setClassParms(java.lang.String parms)
CharClass
setClassParms
in interface CharClass
setClassParms
in class StdCharClass
parms
- any parameters used to define this classCharClass.classParms()
,
CharClass.isGeneric()
protected java.util.Vector<AbilityMapper.AbilityMapping> getAbleSet()
public java.lang.String getStat(java.lang.String code)
Modifiable
getStat
in interface Modifiable
getStat
in class StdCharClass
code
- the name of the field to read.Modifiable.getStatCodes()
public void setStat(java.lang.String code, java.lang.String val)
Modifiable
setStat
in interface Modifiable
setStat
in class StdCharClass
code
- the name of the field to setval
- the value to set the field toModifiable.getStatCodes()
public void startCharacter(MOB mob, boolean isBorrowedClass, boolean verifyOnly)
CharClass
startCharacter
in interface CharClass
startCharacter
in class StdCharClass
mob
- the mob being outfitted with this classisBorrowedClass
- whether the charclasses skills are borrowed(true) or permanentverifyOnly
- send true if no skills or changes are to be madepublic int getSaveStatIndex()
Modifiable
getSaveStatIndex
in interface Modifiable
getSaveStatIndex
in class StdCharClass
Modifiable.getStatCodes()
,
Modifiable.getStat(String)
,
Modifiable.setStat(String, String)
public java.lang.String[] getStatCodes()
Modifiable
getStatCodes
in interface Modifiable
getStatCodes
in class StdCharClass
Modifiable.getStat(String)
,
Modifiable.setStat(String, String)
protected int getCodeNum(java.lang.String code)
getCodeNum
in class StdCharClass
public boolean sameAs(CharClass E)
sameAs
in class StdCharClass