///
///
/**
* This atom should be used in place of the default atom when handling Fucking.
*/
class ContentAtomFucking extends ContentAtom {
/**
* Only one of the following markers appears at once. They mean the style of what is going on.
*/
public static GENTLE = new ContentNounSimple("GENTLE");
public static ROUGH = new ContentNounSimple("ROUGH");
/**
* These signify a state. If Pentrating and Removing appear together he probably insta-cummed and is already retreating in shame.
*/
public static PENETRATING = new ContentNounSimple("PENETRATING");
public static REMOVING = new ContentNounSimple("REMOVING");
/**
* These signify a state. They'll usually appear all at once, but on rare cases some NPCs will have prolonged CUM_START before CUMMING, or last multiple turns on CUMMING, etc.
*/
public static CUM_START = new ContentNounSimple("CUM_START");
public static CUMMING = new ContentNounSimple("CUMMING");
public static CUM_END = new ContentNounSimple("CUM_END");
/**
* These signify the style if any of the above CUMMING is happening. Probably never going to show both at once, since atoms deal with a single stick/hole combo, but I guess it's technically possible for some rare enemies?
*/
public static CUM_INSIDE = new ContentNounSimple("CUM_INSIDE");
public static CUM_OUTSIDE = new ContentNounSimple("CUM_OUTSIDE");
/**
* These signify the current stance of the Fucked. In general you can assume that if standing, Vagina/Mouth = Fucker is in front, otherwise is behind, etc. We don't handle the fucker position separatedly. Maybe we should? No idea.
*/
public static STANDING = new ContentNounSimple("STANDING");
public static ALLFOURS = new ContentNounSimple("ALLFOURS");
public fucked : any;
public fucker : any;
public hole : any;
public stick : any;
public markers : ContentAtom = new ContentAtom();
constructor () {
super();
}
public setFucked (fucked : any) {
this.fucked = fucked;
return this;
}
public setFucker (fucker : any) {
this.fucker = fucker;
return this;
}
public setHole (hole : any) {
this.hole = hole;
return this;
}
public setStick (stick : any) {
this.stick = stick;
return this;
}
public addMarker (...markers : Array) {
this.markers.addNoun(...markers);
return this;
}
public compareAgainst (other : ContentAtom) {
if (other instanceof ContentAtomFucking) {
return (
ContentAtom.compareNoun(this.fucked, other.fucked) &&
ContentAtom.compareNoun(this.fucker, other.fucker) &&
ContentAtom.compareNoun(this.hole, other.hole) &&
ContentAtom.compareNoun(this.stick, other.stick) &&
this.markers.compareAgainst(other.markers)
);
}
return false;
}
public getAtomPriority () {
return (
ContentAtom.weightNoun(this.fucked) +
ContentAtom.weightNoun(this.fucker) +
ContentAtom.weightNoun(this.hole) +
ContentAtom.weightNoun(this.stick) +
this.markers.getAtomPriority()
);
}
}