code:
/**
 * Coded by OtherCoCAnon on 15.02.2018.
 */
package classes.StatusEffects.Combat {
import classes.StatusEffectType;

public class WitheringDebuff extends TimedStatusEffect {
	public static const TYPE:StatusEffectType = register("WitheringDebuff", WitheringDebuff);
	public function WitheringDebuff(duration:int = 1) {
		super(TYPE, "");
		setDuration(duration);
	}

	override public function onAttach():void{
        setUpdateString(host.capitalA + host.short + " is still withered, and will take damage from healing.");
        setRemoveString(host.capitalA + host.short + " is not longer withered, and can be healed normally!");
		super.onAttach();
	}

}
}


code:
/**
 * Created by aimozg on 31.01.14.
 */
package classes.StatusEffects
{
import classes.StatusEffect;
import classes.StatusEffectType;

public class CombatStatusEffect extends StatusEffect
{

	public function CombatStatusEffect(stype:StatusEffectType)
	{
		super(stype);
	}

	override public function onCombatEnd():void {
		remove();
	}
}
}

license: unknown


code:
package classes.StatusEffects {
import classes.StatusEffectType;
import classes.StatusEffects.TemporaryBuff;
import classes.TimeAwareInterface;
import classes.CoC;

public class Exhaustion extends TimedStatusEffectReal{
	//Works for what's needed with Liddellium, hopefully not to difficult to make these general (say an adrenalin rush to temporarily reduce fatigue cost with duration=0 and magnitude -50)
	public static const TYPE:StatusEffectType = register("Exhaustion", Exhaustion);
	/**
	 * Global Fatigue/Exhaustion, as I wanted do to it.
	 * Doesn't seem like it's possible to pass arguments to the function though.
	 * @param	duration	time in hours
	 * @param	magnitude	% increase(or reduction, if negative) in fatigue costs
	 */
	public function Exhaustion(duration:int = 720, magnitude:int = 40) {
		super(TYPE, "Exh");
		this.setDuration(duration);
		this.value1 = magnitude;
		this.updateValueForMe(2);
	}

	override public function onRemove():void {
		if (playerHost) {
			game.outputText("<b>You have finally recovered from your ordeals.</b>\n\n");
			restore();
		}
	}
}
}


code:
package classes.StatusEffects {
import classes.StatusEffectType;
import classes.StatusEffects.TemporaryBuff;
import classes.TimeAwareInterface;
import classes.CoC;

public class IzumiPipeSmoke extends TimedStatusEffectReal{
	public static const TYPE:StatusEffectType = register("IzumiPipeSmoke", IzumiPipeSmoke);
	public function IzumiPipeSmoke(duration:int = 24) {
		super(TYPE,'spe','sen','lib');
		this.setDuration(duration);
		this.setRemoveString("<b>You groan softly as your thoughts begin to clear somewhat.  It looks like the effects of Izumi's pipe smoke have worn off.</b>");
	}

    override protected function apply(firstTime:Boolean):void {
		var mod:int = 1 + value4;
		var spe:int = host.spe*0.1*mod;
		var sen:int = host.sens*0.1*mod;
		var lib:int = host.lib*0.1*mod;
        buffHost("spe", -spe, "sen", sen, "lib", lib, "res", false);
	}

}
}


code:
package classes.StatusEffects {
import classes.StatusEffectType;
import classes.StatusEffects.TemporaryBuff;
import classes.TimeAwareInterface;
import classes.CoC;

public class KitsuneVision extends TimedStatusEffectReal{
	public static const TYPE:StatusEffectType = register("KitsuneVision", KitsuneVision);
	public function KitsuneVision(duration:int = 24) {
		super(TYPE,'spe');
		this.setDuration(duration);
	}

	override public function onRemove():void {
		if (playerHost) {
			game.outputText("<b>Your vision clears, and the world looks decidedly less fluffy. It seems the kitsune's illusion has worn off.</b>\n\n");
			restore();
		}
	}
}
}


code:
# Status Effects API

## Migration guide

### Creating new effects

1. Subclass `StatusEffectClass` or its subclass
    1) Add a `public static TYPE:StatusEffectType` field initialized with `register("unique id", ThisClassName)`.
    2) Link to the `TYPE` through superclass constructor.
    3) In the `StatusEffects` library, add a static constant that refers `TYPE` (even if you don't use the constant, this is required for `TYPE` to be properly initialized on application start).
2. Override the `onXXXX` methods.
    * **onAttach** - after added to `host.statusEffects` as part of the game. Events related to first application of the effect should go here; text output can stay in the scene code if it's unique.
    * **onRemove** - after removed from `host.statusEffects`. Reversing the changes should go here.
    * **onCombatEnd**
    * **onCombatRound**
    * TODO global time-aware listeners.

    `onAttach` and `onRemove` are not called when loading save or creating new character.

Try to keep the actual effects in this class, _especially_ **value1-4** semantics. In the scenes, interactions with class-specific methods are preferred over manipulating game state directly.

`game` is a shortcut for `kGAMECLASS`. `host` is the creature (monster or player) the effect is attached to. `playerHost` is `host as Player`, so you can use it for code completion, and also in conditions like
```
if (playerHost) game.outputText(...)
```

## Helper classes & methods

#### StatusEffectClass.remove()

Removes this instance from host. Fires a `onRemove` event.

#### StatusEffectClass.attach(host:Creature) and Creature.addStatusEffect(StatusEffectClass)

Attaches the existing instance of StatusEffectClass to host.

#### Creature.createOrFindStatusEffect(StatusEffectType)

Finds a status effect by type; if not found, creates new one with value1-4 of 0.
Returns the existing or new effect instance.

#### class CombatStatusEffect

Removes itself when the combat ends.

### TemporaryBuff

Common superclass for temporary stat \[de\]buffs with complete recovery after time. **CombatBuff** removes itself when combat ends.

#### Guide

1. Subclass. Pass affected stat names - up to 4`dynStat` keys like `'str'`, `'spe'`, `'tou'`, `'int'`, `'lib'`, `'sen'` - as superclass constructor args.
2. To apply recoverable \[de\]buff with properly memorized effect values, call `buffHost` instead of `host.dynStats`. Using `host.dynStats` will make effects permanent.
2. If no external parameters required to the effect itself, just override `apply()` with a call to buffHost to buff host and remember effect.
3. To apply buff, add it to host. Call `increase()` on already existing buff to increase it effect
5. Stats are restored when effect is removed. Call `restore()` to reset stats but keep the effect attached to host.
4. If you need to pass external parameter like "effect strength" to application code:
    - add a custom `applyEffect(...)` method
    - acquire the effect instance (`findStatusEffectByType`, `createOrFindStatusEffect`, `createStatusEffect`, or just create `new MyEffect()`)
    - cast to your type if needed
    - call new method

#### Implementation details

value1-value4 store `(newStatValue - oldStatValue)`.

Application is done through `host.dynStats`.

Recovery uses `host.dynStats` with additional `'scale', false` arguments to apply the exact values.

## Creature & Player changes

The following methods are pulled from `Player` up to `Creature` so that the `host` of effect could be manipulated in a uniform way.

* `getAllMaxStats`
* `minLib`
* `minSens`
* `minLust`
* `takeDamage`
* `takeLustDamage`
* `spellMod`

### dynStats

1. Moved to `Creature` from `kGAMECLASS`.

1. Returns an Object of `(newStat-oldStat)` values with keys **str**, **tou**, **spe**, **int**, **lib**, **sen**, **lus**, **cor **.

2. **noBimbo**/**bim** and **resisted**/**res** are replaced with **scaled**/**sca**: if true, apply resistances perks and other; if false - apply values as-is, just respect the mins and maxes.

3. Actual stat change is done in method `modStats` that accepts separate args (old `stats`-like)

4. `modStr`, `modTou`, `modSpe`, `modInt` methods change one stat and return the actual increase.


code:
package classes.StatusEffects {
import classes.StatusEffectType;
import classes.StatusEffects.TemporaryBuff;
import classes.TimeAwareInterface;
import classes.CoC;

public class TellyVisedStatus extends TimedStatusEffectReal{
	public static const TYPE:StatusEffectType = register("TellyVisedStatus", TellyVisedStatus);
	public function TellyVisedStatus(duration:int = 12) {
		super(TYPE,'');
		this.setDuration(duration);
	}

	override public function onRemove():void {
		if (playerHost) {
			game.outputText("\n[b: Your face paint seems to have disappeared.]\n");
			restore();
		}
	}
}
}


code:
package classes.StatusEffects {
import classes.StatusEffect;
import classes.StatusEffectType;
import classes.internals.LoggerFactory;

import mx.logging.ILogger;

/**
 * Common superclass for temporary stat [de]buffs with complete recovery after time.
 *
 * Implementation details:
 * 1. Subclass. Pass affected stat names (dynStat keys like 'str','spe','tou','int','lib','sen') as superclass
 *    constructor args.
 * 2. Override apply() with a call to buffHost to buff host and remember effect
 * 3. To apply buff, add it to host; call increase() on already existing buff to increase it effect
 *
 * Using host.dynStats instead of buffHost makes the effect permanent
 */
public class TemporaryBuff extends StatusEffect{
	private static var LOGGER:ILogger = LoggerFactory.getLogger(TemporaryBuff);
	private var stat1:String;
	private var stat2:String;
	private var stat3:String;
	private var stat4:String;
	public function TemporaryBuff(stype:StatusEffectType, stat1:String, stat2:String ='', stat3:String ='', stat4:String ='') {
		super(stype);
		this.stat1 = stat1;
		this.stat2 = stat2;
		this.stat3 = stat3;
		this.stat4 = stat4;
	}
	/**
	 * This function does a host.dynStats(...args) and stores the buff in status effect values
	 */
	protected function buffHost(...args):* {
		var buff:* = host.dynStats.apply(host,args);
		if (stat1) value1 += buff[stat1];
		if (stat2) value2 += buff[stat2];
		if (stat3) value3 += buff[stat3];
		if (stat4) value4 += buff[stat4];
		LOGGER.debug("buffHost("+args.join(",")+"): " +
					 stat1+" "+(stat1?buff[stat1]:"")+" "+
					 stat2+" "+(stat2?buff[stat2]:"")+" "+
					 stat3+" "+(stat3?buff[stat3]:"")+" "+
					 stat4+" "+(stat4?buff[stat4]:"")+" "+
					 "->("+value1+", "+value2+", "+value3+", "+value4+")");
		return buff;
	}

	protected function restore():void {
		var dsargs:Array = ['scale',false];
		if (stat1) dsargs.push(stat1,-value1);
		if (stat2) dsargs.push(stat2,-value2);
		if (stat3) dsargs.push(stat3,-value3);
		if (stat4) dsargs.push(stat4,-value4);
		var debuff:* = host.dynStats.apply(host,dsargs);
		if (stat1) value1 += debuff[stat1];
		if (stat2) value2 += debuff[stat2];
		if (stat3) value3 += debuff[stat3];
		if (stat4) value4 += debuff[stat4];
		LOGGER.debug("restore("+dsargs.join(",")+"): " +
					 stat1+" "+(stat1?debuff[stat1]:"")+" "+
					 stat2+" "+(stat2?debuff[stat2]:"")+" "+
					 stat3+" "+(stat3?debuff[stat3]:"")+" "+
					 stat4+" "+(stat4?debuff[stat4]:"")+" "+
					 "->("+value1+", "+value2+", "+value3+", "+value4+")");
	}

	public function buffValue(stat:String):Number {
		switch (stat) {
			case stat1:return value1;
			case stat2:return value2;
			case stat3:return value3;
			case stat4:return value4;
			default: return 0;
		}
	}
	protected function apply(firstTime:Boolean):void {
	}
	override public function onAttach():void {
		super.onAttach();
		apply(true);
	}
	public function increase():void {
		if (host == null) return;
		apply(false);
	}

	override public function remove():void{
		super.remove();
	}

	override public function onRemove():void {
		super.onRemove();
		restore();
	}
}
}


code:
package classes.StatusEffects {
import classes.StatusEffectType;
import classes.StatusEffects.TemporaryBuff;
import classes.TimeAwareInterface;
import classes.CoC;

public class TestTimedStatus extends TimedStatusEffectReal{
	public static const TYPE:StatusEffectType = register("TestTimedStatus", TestTimedStatus);
	public function TestTimedStatus(duration:int = 24) {
		super(TYPE,'spe');
		this.setDuration(duration);
		this.setUpdateString("Ayy");
		this.setRemoveString("Lmao");
	}

	override protected function apply(firstTime:Boolean):void {
		buffHost('spe', -20 - rand(5));
	}

	override public function onRemove():void {
		if (playerHost) {
			game.outputText("<b>You feel quicker and stronger as the paralyzation venom in your veins wears off.</b>\n\n");
			restore();
		}
	}
}
}


code:
package classes.StatusEffects {
import classes.StatusEffectType;
import classes.StatusEffects.TemporaryBuff;
import classes.TimeAwareInterface;
import classes.CoC;
import classes.Creature;

public class TimedStatusEffectReal extends TemporaryBuff implements TimeAwareInterface{
	public function TimedStatusEffectReal(stype:StatusEffectType, stat1:String, stat2:String ='', stat3:String ='', stat4:String ='') {
		super(stype, stat1, stat2, stat3, stat4);
		CoC.timeAwareClassAdd(this);
	}
	///Duration in hours.
	private var duration:int = 1;
	private var updateString:String = "";
	private var removeString:String = "";
	private var updateValue:Boolean = false;
	private var updateValueNr:int = 0;
	public function timeChangeLarge():Boolean{
		return false;
	}

	public function timeChange():Boolean{
		if (host is Creature && !host.hasStatusEffect(stype)) {
			CoC.timeAwareClassRemove(this);
			return false;
		}
		this.duration -= 1;
		if (this.duration <= 0){
			game.outputText(removeString + "\n");
			remove();
			CoC.timeAwareClassRemove(this);
			return true;
		}
		if (removeString != ""){
			game.outputText(updateString + "\n");
			return true;
		}
		if (updateValue) {
			switch (updateValueNr)
			{
				case 1:
					this.value1 = duration;
				break;
				case 2:
					this.value2 = duration;
				break;
				case 3:
					this.value3 = duration;
				break;
				case 4:
					this.value4 = duration;
				break;
				default:
			}
		}
		return false;

	}

	public function setDuration(hours:int):void{
		duration = hours;
	}

	public function setUpdateString(newString:String = ""):void{
		updateString = newString;
	}

	public function setRemoveString(newString:String = ""):void{
		removeString = newString;
	}

	public function updateValueForMe(nr:int):void{
		if (nr < 5 && nr > 0){
			updateValue = true;
			updateValueNr = nr;
		}
	}
}
}


code:
package classes
{
	public class Time
	{
		private var _days:Number;
		private var _hours:Number;
		private var _minutes:Number;

		public function get days():Number { return _days; }
		public function set days(value:Number):void { _days = value; }

		public function get hours():Number { return _hours; }
		public function set hours(value:Number):void { _hours = value; }

		public function get minutes():Number { return _minutes; }
		public function set minutes(value:Number):void { _minutes = value; }

		public function get totalTime():Number { return (this._days * 24 + this._hours); }
	}
}


code:
package classes
{
	//Call CoC.timeAwareClassAdd if you want a class that implements this interface to receive time changes
	public interface TimeAwareInterface
	{
		/*	Called for every Class in the _timeAwareClassList each time the game time advances.
			Should be used for code with no screen output and short text output which can be bundled with
			other game text. Larger scenes which require an immediate pause should go in timeChangeLarge instead.
			Returning true indicates that you want the game to pause and display a set of screen output.
			Returning false indicates the function has produced no screen output.

			Note that all timeChanges are called first. All their text (if any) is displayed on one screen.
			Then, afterward, each timeChangeLarge is called and stops immediately if there is any screen output.
			Once the player presses [Next] the code will continue and display the next screen of text or
			(once all time changes are complete) finally get to the next screen of the game */
		function timeChange():Boolean;

		/*	Called for every Class in the _timeAwareClassList each time the game time advances.
			Should be used only for large scenes that need their own next button before proceeding with
			other time based events. This function is always called after the timeChange function and
			may be called multiple times on a single tick of the hour, so updates should go in timeChange()
			and any scene that triggers on timeChangeLarge must make sure it cannot be triggered twice.
			Returning true indicates that you want the game to pause and display your screen output.
			When this function returns true it is responsible for calling doNext, menu, choices, etc.
			Returning false indicates the function has produced no screen output. */
		function timeChangeLarge():Boolean;

	}
}


code:
package classes
{
	import classes.internals.Serializable;
	import classes.internals.Utils;
	import mx.logging.ILogger;
	import classes.internals.LoggerFactory;

	public class Vagina implements Serializable
	{
		private static const SERIALIZATION_VERSION:int = 1;

		public static const HUMAN:int                     =   0;
		public static const EQUINE:int                    =   1;
		public static const BLACK_SAND_TRAP:int           =   5;

		public static const WETNESS_DRY:int               =   0;
		public static const WETNESS_NORMAL:int            =   1;
		public static const WETNESS_WET:int               =   2;
		public static const WETNESS_SLICK:int             =   3;
		public static const WETNESS_DROOLING:int          =   4;
		public static const WETNESS_SLAVERING:int         =   5;

		public static const LOOSENESS_TIGHT:int           =   0;
		public static const LOOSENESS_NORMAL:int          =   1;
		public static const LOOSENESS_LOOSE:int           =   2;
		public static const LOOSENESS_GAPING:int          =   3;
		public static const LOOSENESS_GAPING_WIDE:int     =   4;
		public static const LOOSENESS_LEVEL_CLOWN_CAR:int =   5;

		public static const DEFAULT_CLIT_LENGTH:Number = 0.5;
		private static const LOGGER:ILogger = LoggerFactory.getLogger(Vagina);

		//constructor
		public function Vagina(vaginalWetness:Number = 1, vaginalLooseness:Number = 0, virgin:Boolean = false, clitLength:Number = DEFAULT_CLIT_LENGTH)
		{
			this.virgin=virgin;
			this.vaginalWetness=vaginalWetness;
			this.vaginalLooseness=vaginalLooseness;
			this.clitLength = clitLength;
			this.recoveryProgress = 0;
		}
		//data
		//Vag wetness
		public var vaginalWetness:Number = 1;
		/*Vag looseness
		0 - virgin
		1 - normal
		2 - loose
		3 - very loose
		4 - gaping
		5 - monstrous*/
		public var vaginalLooseness:Number = 0;
		//Type
		//0 - Normal
		//5 - Black bugvag
		public var type:int = 0;
		public var virgin:Boolean = true;
		//Used during sex to determine how full it currently is.  For multi-dick sex.
		public var fullness:Number = 0;
		public var labiaPierced:Number = 0;
		public var labiaPShort:String = "";
		public var labiaPLong:String = "";
		public var clitPierced:Number = 0;
		public var clitPShort:String = "";
		public var clitPLong:String = "";
		public var clitLength:Number;
		public var recoveryProgress:int;

		public function validate():String
		{
			var error:String = "";
			error += Utils.validateNonNegativeNumberFields(this, "Vagina.validate", [
				"vaginalWetness", "vaginalLooseness", "type",
				"fullness", "labiaPierced", "clitPierced", "clitLength", "recoveryProgress"
			]);
			if (labiaPierced) {
				if (labiaPShort == "") error += "Labia pierced but labiaPShort = ''. ";
				if (labiaPLong == "") error += "Labia pierced but labiaPLong = ''. ";
			} else {
				if (labiaPShort != "") error += "Labia not pierced but labiaPShort = '" + labiaPShort + "'. ";
				if (labiaPLong != "") error += "Labia not pierced but labiaPLong = '" + labiaPShort + "'. ";
			}
			if (clitPierced) {
				if (clitPShort == "") error += "Clit pierced but labiaPShort = ''. ";
				if (clitPLong == "") error += "Clit pierced but labiaPLong = ''. ";
			} else {
				if (clitPShort != "") error += "Clit not pierced but labiaPShort = '" + labiaPShort + "'. ";
				if (clitPLong != "") error += "Clit not pierced but labiaPLong = '" + labiaPShort + "'. ";
			}
			return error;
		}

		/**
		 * Wetness factor used for calculating capacity.
		 *
		 * @return wetness factor based on wetness
		 */
		public function wetnessFactor():Number {
			return 1 + vaginalWetness / 10 ;
		}

		private function baseCapacity(bonusCapacity:Number):Number {
			return bonusCapacity + 8 * vaginalLooseness * vaginalLooseness;
		}

		/**
		 * The capacity of the vagina, calculated using looseness and wetness.
		 *
		 * @param bonusCapacity extra space to add
		 * @return the total capacity, with all factors considered.
		 */
		public function capacity(bonusCapacity:Number = 0):Number {
			return baseCapacity(bonusCapacity) * wetnessFactor();
		}

		//TODO call this in the setter? With new value > old value check?
		/**
		 * Resets the recovery counter.
		 * The counter is used for looseness recovery over time, a reset usualy occurs when the looseness increases.
		 */
		public function resetRecoveryProgress():void {
			this.recoveryProgress = 0;
		}

		/**
		 * Try to stretch the vagina with the given cock area.
		 *
		 * @param cArea the area of the cock doing the stretching
		 * @param hasFeraMilkingTwat true if the player has the given Perk
		 * @return true if the vagina was stretched
		 */
		public function stretch(cArea:Number, hasFeraMilkingTwat:Boolean = false, bonus:Number = 0):Boolean {
			var stretched:Boolean = false;
			if (!hasFeraMilkingTwat || vaginalLooseness <= Vagina.LOOSENESS_NORMAL) {
				//cArea > capacity = autostreeeeetch.
			if (cArea >= capacity(bonus)) {
					vaginalLooseness++;
					stretched = true;
				}
				//If within top 10% of capacity, 50% stretch
			else if (cArea >= .9 * capacity(bonus) && Utils.rand(2) == 0) {
					vaginalLooseness++;
					stretched = true;
				}
				//if within 75th to 90th percentile, 25% stretch
			else if (cArea >= .75 * capacity(bonus) && Utils.rand(4) == 0) {
					vaginalLooseness++;
					stretched = true;
				}
			}
			if (vaginalLooseness > Vagina.LOOSENESS_LEVEL_CLOWN_CAR) vaginalLooseness = Vagina.LOOSENESS_LEVEL_CLOWN_CAR;
			if (hasFeraMilkingTwat && vaginalLooseness > Vagina.LOOSENESS_LOOSE) vaginalLooseness = Vagina.LOOSENESS_LOOSE;

			if (virgin) {
				virgin = false;
			}

			return stretched;
		}

		public function serialize(relativeRootObject:*):void
		{
			LOGGER.debug("Serializing vagina...");
			relativeRootObject.type = this.type;
			relativeRootObject.vaginalWetness = this.vaginalWetness;
			relativeRootObject.vaginalLooseness = this.vaginalLooseness;
			relativeRootObject.fullness = this.fullness;
			relativeRootObject.virgin = this.virgin;
			relativeRootObject.labiaPierced = this.labiaPierced;
			relativeRootObject.labiaPShort = this.labiaPShort;
			relativeRootObject.labiaPLong = this.labiaPLong;
			relativeRootObject.clitPierced = this.clitPierced;
			relativeRootObject.clitPShort = this.clitPShort;
			relativeRootObject.clitPLong = this.clitPLong;
			relativeRootObject.clitLength = this.clitLength;
			relativeRootObject.recoveryProgress = this.recoveryProgress;
		}

		public function deserialize(relativeRootObject:*):void
		{
			this.vaginalWetness = relativeRootObject.vaginalWetness;
			this.vaginalLooseness = relativeRootObject.vaginalLooseness;
			this.fullness = relativeRootObject.fullness;
			this.virgin = relativeRootObject.virgin;
			this.type = relativeRootObject.type;

			this.labiaPierced = relativeRootObject.labiaPierced;
			this.labiaPShort = relativeRootObject.labiaPShort;
			this.labiaPLong = relativeRootObject.labiaPLong;
			this.clitPierced = relativeRootObject.clitPierced;
			this.clitPShort = relativeRootObject.clitPShort;
			this.clitPLong = relativeRootObject.clitPLong;
			this.clitLength = relativeRootObject.clitLength;

			this.recoveryProgress = relativeRootObject.recoveryProgress;
		}

		public function upgradeSerializationVersion(relativeRootObject:*, serializedDataVersion:int):void
		{
			switch(serializedDataVersion) {
				case 0:
					LOGGER.info("Loaded legacy save format for {0}, upgrading...", this);

					if (relativeRootObject.type === undefined) {
						relativeRootObject.type = 0;
						LOGGER.warn("Vagina type not set, setting to {0}", relativeRootObject.type);
					}

					if (relativeRootObject.labiaPierced === undefined) {
						LOGGER.warn("Labia pierced not set, resetting labia and clit data");
						relativeRootObject.labiaPierced = 0;
						relativeRootObject.labiaPShort = "";
						relativeRootObject.labiaPLong = "";
						relativeRootObject.clitPierced = 0;
						relativeRootObject.clitPShort = "";
						relativeRootObject.clitPLong = "";
					}

					if(relativeRootObject.clitLength === undefined) {
						relativeRootObject.clitLength = Vagina.DEFAULT_CLIT_LENGTH;
						LOGGER.warn("Clit length was not loaded, setting to default({0})", relativeRootObject.clitLength);
					}

					if(relativeRootObject.recoveryProgress === undefined) {
						relativeRootObject.recoveryProgress = 0;
						LOGGER.warn("Stretch counter was not loaded, setting to {0}", relativeRootObject.recoveryProgress);
					}
			}
		}

		public function currentSerializationVerison():int
		{
			return SERIALIZATION_VERSION;
		}
	}
}


code:
package classes.content
{
	import classes.BaseContent;
	/**
	 * ...
	 * @author Gedan
	 */
	public class TestContent extends BaseContent
	{

		public function TestContent()
		{

		}

		public function cheatSheet():void
		{
			clearOutput();

			outputText("<b>Parser Cheet Sheet:</b>\n\n");
			outputText("Descriptor (descriptor.as) Functions:\n");

			outputText("\nsackDescript " + player.sackDescript());
			outputText("\ncockClit " + player.cockClit());
			outputText("\nballs " + player.ballsDescript());
			outputText("\nsheathDesc " + player.sheathDesc());
			outputText("\nchestDesc " + player.chestDesc());
			outputText("\nallChestDesc " + player.allChestDesc());
			outputText("\nsMultiCockDesc " + player.sMultiCockDesc());
			outputText("\nSMultiCockDesc " + player.SMultiCockDesc());
			outputText("\noMultiCockDesc " + player.oMultiCockDesc());
			outputText("\nOMultiCockDesc " + player.OMultiCockDesc());
			outputText("\ntongueDescript " + player.tongueDescript());
			outputText("\nballsDescriptLight false " + player.ballsDescriptLight(false));
			outputText("\nballsDescriptLight true " + player.ballsDescriptLight(true));
			outputText("\nballDescript " + player.ballDescript());
			outputText("\nballsDescript " + player.ballsDescript());
			outputText("\nsimpleBallsDescript " + player.simpleBallsDescript());
			outputText("\nassholeDescript " + player.assholeDescript());
			outputText("\nhipDescript " + player.hipDescript());
			outputText("\nassDescript " + player.assDescript());
			outputText("\nbuttDescript " + player.buttDescript());
			outputText("\nnippleDescript " + player.nippleDescript(0));
			outputText("\nhairDescript " + player.hairDescript());
			outputText("\nhairOrFur " + player.hairOrFur());
			outputText("\nclitDescript " + player.clitDescript());
			outputText("\nvaginaDescript " + player.vaginaDescript());
			outputText("\nallVaginaDescript " + player.allVaginaDescript());
			outputText("\nmultiCockDescriptLight " + player.multiCockDescriptLight());
			outputText("\ncockAdjective " + player.cockAdjective());
			outputText("\ncockDescript " + player.cockDescript(0));
			outputText("\nbiggestBreastSizeDescript " + biggestBreastSizeDescript());
			outputText("\nbreaseSize 5" + breastSize(5));
			outputText("\nbreastDescript " + player.breastDescript(0));
			outputText("\ncockHead " + player.cockHead());
			outputText("\nbreastCup 5 " + breastCup(5));

			outputText("\n\nParser Tags (Single)L\n");
			outputText("\naagility [agility]");
			outputText("\narmor [armor]");
			outputText("\narmorname [armorname]");
			outputText("\nass [ass]");
			outputText("\nasshole [asshole]");
			outputText("\nballs [balls]");
			outputText("\nboyfriend [boyfriend]");
			outputText("\nbutt [butt]");
			outputText("\nbutthole [butthole]");
			outputText("\nchest [chest]");
			outputText("\nclit [clit]");
			outputText("\ncock [cock]");
			outputText("\ncockhead [cockhead]");
			outputText("\ncocks [cocks]");
			outputText("\ncunt [cunt]");
			outputText("\neachcock [eachCock]");
			outputText("\nevade [evade]");
			outputText("\nface [face]");
			outputText("\nfeet [feet]");
			outputText("\nfoot [foot]");
			outputText("\nfullchest [fullchest]");
			outputText("\nhair [hair]");
			outputText("\nhairorfur [hairorfur]");
			outputText("\nhe [he]");
			outputText("\nhim [him]");
			outputText("\nhips [hips]");
			outputText("\nhis [his]");
			outputText("\nleg [leg]");
			outputText("\nlegs [legs]");
			outputText("\nman [man]");
			outputText("\nmaster [master]");
			outputText("\nmisdirection [misdirection]");
			outputText("\nmulticockdescriptlight [multicockdescriptlight]");
			outputText("\nname [name]");
			outputText("\nnipple [nipple]");
			outputText("\nnipples [nipples]");
			outputText("\nonecock [onecock]");
			outputText("\npg [pg]");
			outputText("\npussy [pussy]");
			outputText("\nsack [sack]");
			outputText("\nsheath [sheath]");
			outputText("\nskin [skin]");
			outputText("\nskinfurscales [skinfurscales]");
			outputText("\ntongue [tongue]");
			outputText("\nvag [vag]");
			outputText("\nvagina [vagina]");
			outputText("\nvagorass [vagorass]");
			outputText("\nweapon [weapon]");
			outputText("\nweaponname [weaponname]");

			doNext(camp.returnToCampUseOneHour);
		}

	}

}


code:
package classes.display
{
	import coc.view.Block;
	import coc.view.CoCButton;
	import coc.view.MainView;
	import flash.text.TextField;

	/**
	 * Defines a composite display object of all the seperate components required to display a
	 * single BoundControlMethod, its associated primary and secondary bindings with the buttons
	 * used to bind methods to new keys.
	 * @author Gedan
	 */
	public class BindDisplay extends Block
	{
		// Object components and settings
		private var _nameLabel:TextField;
		private var _buttons:Array = [];

		/**
		 * Create a new composite object, initilizing the label to be used for display, as well as the two
		 * buttons used for user interface.
		 *
		 * @param	maxWidth	Defines the maximum available width that the control can consume for positining math
		 * @param	buttons		Defines the number of buttons to be generated
		 */
		public function BindDisplay(maxWidth:int, maxHeight:int = 40, buttons:int = 2)
		{
			layoutConfig = {
				type: Block.LAYOUT_FLOW,
				cols: 1 + buttons,
				gap: 4,
				setWidth: true
			};
			width = maxWidth;
			height = maxHeight;
			_nameLabel = addTextField( {
				text:"THIS IS SOME KINDA CRAZY LABEL",
				width: 440,
				defaultTextFormat: {
					font: 'Times New Roman',
					size: 20,
					align: 'left'
				}
			});
			for (var i:int = 0; i < buttons; i++) {
				var button:CoCButton = new CoCButton({
					width: (buttons <= 2 ? MainView.BTN_W : MainView.BTN_W * (2 / buttons) - (4 * (buttons-2) / buttons)),
					labelText: 'Unbound',
					bitmapClass: MainView.ButtonBackground0,
					callback: null
				})
				_buttons.push(button);
				addElement(button);
			}
		}

		public function addButton(label:String, cb:Function):CoCButton {
			var button:CoCButton = new CoCButton({
				labelText: label,
				bitmapClass: MainView.ButtonBackground0,
				callback: cb
			})
			_buttons.push(button);
			addElement(button);
			return button;
		}

		public function get htmlText():String { return _nameLabel.htmlText; }
		public function set htmlText(value:String):void { _nameLabel.htmlText = value; }

		public function get buttons():Array { return _buttons; }
		public function get label():TextField { return _nameLabel; }
	}

}


code:
package classes.display
{
	import classes.GlobalFlags.kGAMECLASS;
	import classes.InputManager;
	import classes.display.BindDisplay;
	import coc.view.Block;
	import com.bit101.components.ScrollPane;
	import flash.display.MovieClip;
	import flash.display.Stage;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
	import flash.ui.Keyboard;
	import flash.utils.Dictionary;
	import flash.utils.describeType;

	/**
	 * Defines a new UI element, providing a scrollable container to be used for display of bound
	 * keyboard controls.
	 * @author Gedan
	 */
	public class BindingPane extends ScrollPane
	{
		private var _inputManager:InputManager;
		private var _stage:Stage;

		// A lookup for integer keyCodes -> string representations
		private var _keyDict:Dictionary;

		private var _functions:Array;
		private var _newFuncs:Array;

		private var _content:Block;
		private var _contentChildren:int;

		/**
		 * Initiate the BindingPane, setting the stage positioning and reference back to the input manager
		 * so we can generate function callbacks later.
		 *
		 * @param	inputManager	Reference to the game input manager for method access
		 * @param	xPos			X position on the stage for the top-left corner of the ScrollPane
		 * @param	yPos			Y position on the stage for the top-left corner of the ScrollPane
		 * @param	width			Fixed width of the containing ScrollPane
		 * @param	height			Fixed height of the containing ScrollPane
		 */
		public function BindingPane(inputManager:InputManager, xPos:int, yPos:int, width:int, height:int)
		{
			_inputManager = inputManager;
			_background.alpha = 0;
			move(xPos,yPos);
			setSize(width,height);

			// Cheap hack to remove the stupid styling elements of the stock ScrollPane

			// Build the keyCode->string lookup object
			this.PopulateKeyboardDict();

			// Initiate a new container for content that will be placed in the scroll pane
			_content = new Block({layoutConfig:{
				type: Block.LAYOUT_FLOW,
				direction: 'column',
				gap: 4
			}});
			_content.name = "controlContent";
			_content.addEventListener(Block.ON_LAYOUT,function(e:Event):void{
				if (content) {
					update();
				}
			});
			_contentChildren = 0;

			// Hook into some stuff so that we can fix some bugs that ScrollPane has
			this.addEventListener(Event.ADDED_TO_STAGE, AddedToStage);
		}

		/**
		 * Cleanly get us a reference to the stage to add/remove other event listeners
		 * @param	e
		 */
		private function AddedToStage(e:Event):void
		{
			this.removeEventListener(Event.ADDED_TO_STAGE, AddedToStage);
			this.addEventListener(Event.REMOVED_FROM_STAGE, RemovedFromStage);

			_stage = this.stage;

			_stage.addEventListener(MouseEvent.MOUSE_WHEEL, MouseScrollEvent);
		}

		private function RemovedFromStage(e:Event):void
		{
			this.removeEventListener(Event.REMOVED_FROM_STAGE, RemovedFromStage);
			this.addEventListener(Event.ADDED_TO_STAGE, AddedToStage);

			_stage.removeEventListener(MouseEvent.MOUSE_WHEEL, MouseScrollEvent);
		}

		private function MouseScrollEvent(e:MouseEvent):void
		{
            this._vScrollbar.value += -( e.delta * 8 );
            update();
		}

		public function ListBindingOptions():void
		{
			if (_contentChildren == 0)
			{
				InitContentObjects();
			}
			else
			{
				UpdateContentObjects();
			}

			this.content.addChild(_content);
			update();
		}

		/**
		 * Initiate the container used to display all of the available functions that can be bound,
		 * along with a pair of buttons representing primary and secondary keys.
		 * The buttons call back into the input manager to trigger the key binding mode, display object
		 * switches, and set state so the input manager knows what function to bind an incoming keyCode
		 * to.
		 * TODO: Shoot self in face.
		 */
		private function InitContentObjects():void
		{
			// Add a nice little instructional field at the top of the display.
			var _textFormatLabel:TextFormat = new TextFormat();
			_textFormatLabel.size = 20;
			_textFormatLabel.color = kGAMECLASS.mainViewManager.isDarkText() ? 0xc0c0c0 : 0;

			var helpLabel:TextField = new TextField();
			helpLabel.name = "helpLabel";
			helpLabel.x = 10;
			helpLabel.width = this.width - 40;
			helpLabel.defaultTextFormat = _textFormatLabel;
			helpLabel.multiline = true;
			helpLabel.wordWrap = true;
			helpLabel.autoSize = TextFieldAutoSize.LEFT; // With multiline enabled, this SHOULD force the textfield to resize itself vertically dependent on content.
			helpLabel.htmlText = kGAMECLASS.formatHeader("Keyboard Control Bindings");
			helpLabel.htmlText += "Click a button next to the action you wish to bind to a new key, then hit the key you want to bind the selected action to.\n\n"
			helpLabel.htmlText += "Custom bindings are stored inside your save game files.\n";
			helpLabel.htmlText += "Duplicate keys are automatically unbound from their old control action.\n";
			helpLabel.htmlText += "Reset Ctrls will reset all of the control bindings to their defaults.\n";
			helpLabel.htmlText += "Clear Ctrls will remove all of the current control bindings, leaving everything unbound.\n\n";

			//helpLabel.height *= 2;

			_contentChildren++;
			_content.addElement(helpLabel);

			for (var i:int = 0; i < _functions.length; i++)
			{
				_contentChildren++;

				var textFormat:TextFormat = new TextFormat();
				textFormat.color = kGAMECLASS.mainViewManager.isDarkText() ? 0xc0c0c0 : 0;
				textFormat.size = 20;
				var newLabel:BindDisplay = new BindDisplay(this.width-20);
				newLabel.name = _functions[i].Name;
				newLabel.label.defaultTextFormat = textFormat;
				newLabel.htmlText = "" + _functions[i].Name + ":";
				newLabel.buttons[0].labelText = _keyDict[_functions[i].PrimaryKey];
				newLabel.buttons[1].labelText = _keyDict[_functions[i].SecondaryKey];

				// This is going to look crazy...
				var genPrimaryCallback:Function = function(funcName:String, inMan:InputManager):Function
				{
					return function():void
					{
						inMan.ListenForNewBind(funcName, InputManager.PRIMARYKEY);
						_stage.focus = _stage;
					}
				};

				var genSecondaryCallback:Function = function(funcName:String, inMan:InputManager):Function
				{
					return function():void
					{
						inMan.ListenForNewBind(funcName, InputManager.SECONDARYKEY);
						_stage.focus = _stage;
					}
				};
				// ... Warned you.

				newLabel.buttons[0].callback = genPrimaryCallback(_functions[i].Name, _inputManager);
				newLabel.buttons[1].callback = genSecondaryCallback(_functions[i].Name, _inputManager);

				_content.addElement(newLabel);
			}
		}

		/**
		 * Operating under the assumption that new control cannot be added once the game is running,
		 * ie we will never see new controls in the incoming function list versus what it contained
		 * when we initially created the display objects in the _content container.
		 */
		private function UpdateContentObjects():void
		{
			for (var i:int = 0; i < _functions.length; i++)
			{
				var currLabel:BindDisplay = _content.getElementByName(_functions[i].Name) as BindDisplay;
				currLabel.label.textColor = kGAMECLASS.mainViewManager.isDarkText() ? 0xc0c0c0 : 0;
				currLabel.buttons[0].labelText = _keyDict[_functions[i].PrimaryKey];
				currLabel.buttons[1].labelText = _keyDict[_functions[i].SecondaryKey];
			}
		}

		/**
		 * Builds a dictionary to lookup keyCode values -> string representations of key names.
		 * Handles things like turning keyCode = 8 into "BACKSPACE" rather than an undisplayable
		 * character.
		 * TODO: Probably work out a good way of shortening some possibly long key names.
		 */
		private function PopulateKeyboardDict():void
		{

			var keyDescriptions:XML = describeType(Keyboard);
			var keyNames:XMLList = keyDescriptions..constant.@name;

			_keyDict = new Dictionary();

			for (var i:int = 0; i < keyNames.length(); i++)
			{
				_keyDict[Keyboard[keyNames[i]]] = keyNames[i];
			}

			_keyDict[ -1] = "Unbound";
		}

		public function set functions(funcs:Array):void
		{
			_functions = funcs;
		}

		public function get functions():Array
		{
			return _functions;
		}
	}
}


code:
package classes.display {
	import classes.GlobalFlags.kFLAGS;
	import classes.GlobalFlags.kGAMECLASS;
	import flash.display.Bitmap;
	import flash.display.BitmapData;

	public class ImageDb {
		[Embed(source="../../../res/images/benoitShekels.png")]
		public static const i_benoitShekels_16bit:Class;
		public static function get i_benoitShekels(): Class {
			return i_benoitShekels_16bit;
		}
		[Embed(source="../../../res/images/Telly.png")]
		public static const i_telly_16bit:Class;
		public static function get i_telly(): Class {
			return i_telly_16bit;
		}

		public static function bitmapData(clazz:Class):BitmapData {
		if (!clazz) return null;
		var e:Object = new clazz();
		if (!(e is Bitmap)) return null;
		return (e as Bitmap).bitmapData;
		}

		public function ImageDb() {
		}

	}

}


code:
package classes.display
{
	import classes.display.BindDisplay;
	import coc.view.Block;
	import coc.view.CoCButton;
	import classes.CoC;
	import coc.view.MainView;
	import com.bit101.components.ScrollPane;
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.Stage;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
	import classes.GlobalFlags.*;
	import flash.display.Bitmap;

	/**
	 * Provides a scrollable container for game settings.
	 * @author Kitteh6660
	 */
	public class SettingPane extends ScrollPane
	{
		private var _stage:Stage;
		private var _settingHeight:int = 55;
		private var _content:Block;
		private var _contentChildren:int;

		private var _initialized:Boolean = false;

		/**
		 * Initiate the BindingPane, setting the stage positioning and reference back to the input manager
		 * so we can generate function callbacks later.
		 *
		 * @param	xPos			X position on the stage for the top-left corner of the ScrollPane
		 * @param	yPos			Y position on the stage for the top-left corner of the ScrollPane
		 * @param	width			Fixed width of the containing ScrollPane
		 * @param	height			Fixed height of the containing ScrollPane
		 */
		public function SettingPane(xPos:int, yPos:int, width:int, height:int, settingHeight:int = 55)
		{
			move(xPos,yPos);
			setSize(width, height);
			_settingHeight = settingHeight;
			_background.alpha = 0;
			// Initiate a new container for content that will be placed in the scroll pane
			_content = new Block({layoutConfig:{
				type: Block.LAYOUT_FLOW,
				direction: 'column',
				gap: 4
			}});
			_content.name = "controlContent";
			_content.addEventListener(Block.ON_LAYOUT,function(e:Event):void{
				if (content) {
					update();
				}
			});
			_contentChildren = 0;

			// Hook into some stuff so that we can fix some bugs that ScrollPane has
			this.addEventListener(Event.ADDED_TO_STAGE, addedToStage);
			this.content.addChild(_content);
		}

		/**
		 * Cleanly get us a reference to the stage to add/remove other event listeners
		 * @param	e
		 */
		private function addedToStage(e:Event):void
		{
			this.removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
			this.addEventListener(Event.REMOVED_FROM_STAGE, removedFromStage);

			_stage = this.stage;

			_stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseScrollEvent);
		}

		private function removedFromStage(e:Event):void
		{
			this.removeEventListener(Event.REMOVED_FROM_STAGE, removedFromStage);
			this.addEventListener(Event.ADDED_TO_STAGE, addedToStage);

			_stage.removeEventListener(MouseEvent.MOUSE_WHEEL, mouseScrollEvent);
		}

		private function mouseScrollEvent(e:MouseEvent):void
		{
			this._vScrollbar.value += -( e.delta * 8 );
			update();
		}

		public function get initialized():Boolean { return _initialized; }
		public function set initialized(bool:Boolean):void { _initialized = bool; }

		public function addHelpLabel():TextField {
			// Add a nice little instructional field at the top of the display.
			var _textFormatLabel:TextFormat = new TextFormat();
			_textFormatLabel.size = 20;
			_textFormatLabel.color = kGAMECLASS.mainViewManager.isDarkText() ? 0xc0c0c0 : 0;
			// Make the help label.
			var helpLabel:TextField = new TextField();
			helpLabel.name = "helpLabel";
			helpLabel.x = 10;
			helpLabel.width = this.width - 40;
			helpLabel.defaultTextFormat = _textFormatLabel;
			helpLabel.multiline = true;
			helpLabel.wordWrap = true;
			helpLabel.autoSize = TextFieldAutoSize.LEFT; // With multiline enabled, this SHOULD force the textfield to resize itself vertically dependent on content.
			_content.addElement(helpLabel);
			return helpLabel;
		}

		public function addOrUpdateToggleSettings(label:String, args:Array):BindDisplay {
			var i:int;
			if (_content.getElementByName(label) != null) {
				var existingSetting:BindDisplay = _content.getElementByName(label) as BindDisplay;
				existingSetting.label.textColor = kGAMECLASS.mainViewManager.isDarkText() ? 0xc0c0c0 : 0;
				for (i = 0; i < args.length; i++) {
					if (args[i] is String) {
						if (args[i] == "overridesLabel") {
							existingSetting.htmlText = args[i-1][2];
							existingSetting.buttons[i].hide();
						}
						continue;
					}
					existingSetting.buttons[i].disableEnable(args[i][3]);
					if (args[i][3]) existingSetting.htmlText = "" + label + ": " + colourifyText(args[i][0]) + "\n" + args[i][2] + "";
				}
				return existingSetting;
			}
			else {
				_contentChildren++;
				var textFormat:TextFormat = new TextFormat();
				textFormat.color = kGAMECLASS.mainViewManager.isDarkText() ? 0xc0c0c0 : 0;
				textFormat.size = 20;
				var newSetting:BindDisplay = new BindDisplay(this.width - 20, _settingHeight,args.length);
				newSetting.name = label;
				newSetting.label.multiline = true;
				newSetting.label.wordWrap = true;
				newSetting.label.defaultTextFormat = textFormat;
				newSetting.htmlText = "" + label + ":\n";
				for (i = 0; i < args.length; i++) {
					if (args[i] is String) {
						if (args[i] == "overridesLabel") {
							newSetting.htmlText = args[i-1][2];
							newSetting.buttons[i].hide();
						}
					}
					else {
						newSetting.buttons[i].labelText = args[i][0];
						newSetting.buttons[i].callback = generateCallback(args[i][1]);
						newSetting.buttons[i].disableEnable(args[i][3]);
						kGAMECLASS.mainView.hookButton(newSetting.buttons[i]);
						if (args[i][3]) newSetting.htmlText = "" + label + ": " + colourifyText(args[i][0]) + "\n" + args[i][2] + "";
					}
				}
				_content.addElement(newSetting);
				return newSetting;
			}
		}

		private function generateCallback(func:Function):Function {
			return func;
		}

		private function colourifyText(text:String):String {
			if (text.toLowerCase() == "on" || text.toLowerCase() == "enabled") {
				text = "" + text + "";
			}
			else if (text.toLowerCase() == "off" || text.toLowerCase() == "disabled") {
				text = "" + text + "";
			}
			else if (text.toLowerCase() == "choose" || text.toLowerCase() == "enable") {
				text = "";
			}
			return text;
		}
	}
}


code:
/**
 * Coded by aimozg on 28.05.2017.
 */
package classes.display {
import classes.GlobalFlags.kFLAGS;
import classes.GlobalFlags.kGAMECLASS;
import flash.display.Bitmap;
import flash.display.BitmapData;

public class SpriteDb {
	private static function get is8bit():Boolean {
		return kGAMECLASS.flags && kGAMECLASS.flags[kFLAGS.SHOW_SPRITES_FLAG] === 1;
	}
    [Embed(source="../../../res/sprites/akky.png")]
    public static const s_akky16:Class;
    public static function get s_akky(): Class {
        return s_akky16;
    }

	[Embed(source="../../../res/sprites/akbal.png")]
	public static const s_akbal_16bit:Class;
	[Embed(source="../../../res/sprites8bit/akbal-old.png")]
	public static const s_akbal_8bit:Class;
	public static function get s_akbal(): Class {
		return is8bit ? s_akbal_8bit : s_akbal_16bit;
	}
	[Embed(source="../../../res/sprites/alraune.png")]
	public static const s_alraune_16bit:Class;
	public static function get s_alraune(): Class {
		return is8bit ? null : s_alraune_16bit;
	}
	[Embed(source="../../../res/sprites/amarok.png")]
	public static const s_amarok_16bit:Class;
	[Embed(source="../../../res/sprites8bit/amarok-old.png")]
	public static const s_amarok_8bit:Class;
	public static function get s_amarok(): Class {
		return is8bit ? s_amarok_8bit : s_amarok_16bit;
	}
	[Embed(source="../../../res/sprites/amily.png")]
	public static const s_amily_16bit:Class;
	[Embed(source="../../../res/sprites8bit/amily-old.png")]
	public static const s_amily_8bit:Class;
	public static function get s_amily(): Class {
		return is8bit ? s_amily_8bit : s_amily_16bit;
	}
	[Embed(source="../../../res/sprites/amily_defurr.png")]
	public static const s_amily_defurr_16bit:Class;
	[Embed(source="../../../res/sprites8bit/amily-human-old.png")]
	public static const s_amily_defurr_8bit:Class;
	public static function get s_amily_defurr(): Class {
		return is8bit ? s_amily_defurr_8bit : s_amily_defurr_16bit;
	}
	[Embed(source="../../../res/sprites/anemone.png")]
	public static const s_anemone_16bit:Class;
	[Embed(source="../../../res/sprites8bit/anemone-old.png")]
	public static const s_anemone_8bit:Class;
	public static function get s_anemone(): Class {
		return is8bit ? s_anemone_8bit : s_anemone_16bit;
	}
	[Embed(source="../../../res/sprites/antguards.png")]
	public static const s_antguards_16bit:Class;
	public static function get s_antguards(): Class {
		return is8bit ? null : s_antguards_16bit;
	}
	[Embed(source="../../../res/sprites/arian.png")]
	public static const s_arian_16bit:Class;
	[Embed(source="../../../res/sprites8bit/arian-old.png")]
	public static const s_arian_8bit:Class;
	public static function get s_arian(): Class {
		return is8bit ? s_arian_8bit : s_arian_16bit;
	}
	[Embed(source="../../../res/sprites8bit/assmole-old.png")]
	public static const s_assmole_8bit:Class;
	public static function get s_assmole(): Class {
		return s_assmole_8bit;
	}
	[Embed(source="../../../res/sprites/basilisk.png")]
	public static const s_basilisk_16bit:Class;
	[Embed(source="../../../res/sprites8bit/basilisk-old.png")]
	public static const s_basilisk_8bit:Class;
	public static function get s_basilisk(): Class {
		return is8bit ? s_basilisk_8bit : s_basilisk_16bit;
	}
	[Embed(source="../../../res/sprites/bee girl.png")]
	public static const s_bee_girl_16bit:Class;
	[Embed(source="../../../res/sprites8bit/beegirl-old.png")]
	public static const s_bee_girl_8bit:Class;
	public static function get s_bee_girl(): Class {
		return is8bit ? s_bee_girl_8bit : s_bee_girl_16bit;
	}
	[Embed(source="../../../res/sprites/benoit.png")]
	public static const s_benoit_16bit:Class;
	public static function get s_benoit(): Class {
		return is8bit ? null : s_benoit_16bit;
	}
	[Embed(source="../../../res/sprites/benoitSilly.png")]
	public static const s_benoitSilly_16bit:Class;
	public static function get s_benoitSilly(): Class {
		return is8bit ? null : s_benoitSilly_16bit;
	}
	[Embed(source="../../../res/sprites/brooke.png")]
	public static const s_brooke_16bit:Class;
	public static function get s_brooke(): Class {
		return is8bit ? null : s_brooke_16bit;
	}

    [Embed(source="../../../res/sprites/BrigidNEW.png")]
    public static const s_brigid_16:Class;
    public static function get s_brigid(): Class {
        return is8bit ? null : s_brigid_16;
    }

	[Embed(source="../../../res/sprites/brooke_nude.png")]
	public static const s_brooke_nude_16bit:Class;
	public static function get s_brooke_nude(): Class {
		return is8bit ? null : s_brooke_nude_16bit;
	}
	[Embed(source="../../../res/sprites/carpenter.png")]
	public static const s_carpenter_16bit:Class;
	public static function get s_carpenter(): Class {
		return is8bit ? null : s_carpenter_16bit;
	}
	[Embed(source="../../../res/sprites/ceraph.png")]
	public static const s_ceraph_16bit:Class;
	[Embed(source="../../../res/sprites8bit/ceraph-old.png")]
	public static const s_ceraph_8bit:Class;
	public static function get s_ceraph(): Class {
		return is8bit ? s_ceraph_8bit : s_ceraph_16bit;
	}
	[Embed(source="../../../res/sprites/ceraphClothed.png")]
	public static const s_ceraphClothed_16bit:Class;
	public static function get s_ceraphClothed(): Class {
		return is8bit ? s_ceraph_8bit : s_ceraphClothed_16bit;
	}
	[Embed(source="../../../res/sprites/ceraphGoblin.png")]
	public static const s_ceraphGoblin_16bit:Class;
	public static function get s_ceraphGoblin(): Class {
		return is8bit ? s_goblin_8bit : s_ceraphGoblin_16bit;
	}
	[Embed(source="../../../res/sprites/cerulean succubus.png")]
	public static const s_cerulean_succubus_16bit:Class;
	[Embed(source="../../../res/sprites8bit/cerulean-succubus-old.png")]
	public static const s_cerulean_succubus_8bit:Class;
	public static function get s_cerulean_succubus(): Class {
		return is8bit ? s_cerulean_succubus_8bit : s_cerulean_succubus_16bit;
	}
	[Embed(source="../../../res/sprites/chameleon.png")]
	public static const s_chameleon_16bit:Class;
	public static function get s_chameleon(): Class {
		return is8bit ? null : s_chameleon_16bit;
	}
	[Embed(source="../../../res/sprites/chickenHarpy.png")]
	public static const s_chickenHarpy_16bit:Class;
	public static function get s_chickenHarpy(): Class {
		return is8bit ? null : s_chickenHarpy_16bit;
	}
	[Embed(source="../../../res/sprites/chillySmith.png")]
	public static const s_chillySmith_16bit:Class;
	[Embed(source="../../../res/sprites8bit/chillySmith-old.png")]
	public static const s_chillySmith_8bit:Class;
	public static function get s_chillySmith(): Class {
		return is8bit ? s_chillySmith_8bit : s_chillySmith_16bit;
	}
	[Embed(source="../../../res/sprites/christmas elf.png")]
	public static const s_christmas_elf_16bit:Class;
	[Embed(source="../../../res/sprites8bit/xmas-elf-old.png")]
	public static const s_christmas_elf_8bit:Class;
	public static function get s_christmas_elf(): Class {
		return is8bit ? s_christmas_elf_8bit : s_christmas_elf_16bit;
	}
	[Embed(source="../../../res/sprites/cinnabar.png")]
	public static const s_cinnabar_16bit:Class;
	public static function get s_cinnabar(): Class {
		return is8bit ? null : s_cinnabar_16bit;
	}
	[Embed(source="../../../res/sprites/clara.png")]
	public static const s_clara_16bit:Class;
	public static function get s_clara(): Class {
		return is8bit ? null : s_clara_16bit;
	}

    [Embed(source="../../../res/sprites/circe6.png")]
    public static const s_circe_16:Class;
    public static function get s_circe(): Class {
        return is8bit ? null : s_circe_16;
    }

    [Embed(source="../../../res/sprites/goblinSharpshooter.png")]
    public static const goblinSharp:Class;
    public static function get goblinSharpshooter(): Class {
        return is8bit ? null : goblinSharp;
    }

    [Embed(source="../../../res/sprites/cloaked dominika.png")]
	public static const s_cloaked_dominika_16bit:Class;
	[Embed(source="../../../res/sprites8bit/dominika-old.png")]
	public static const s_cloaked_dominika_8bit:Class;
	public static function get s_cloaked_dominika(): Class {
		return is8bit ? s_cloaked_dominika_8bit : s_cloaked_dominika_16bit;
	}
	[Embed(source="../../../res/sprites/club gnoll.png")]
	public static const s_club_gnoll_16bit:Class;
	[Embed(source="../../../res/sprites8bit/gnoll-old.png")]
	public static const s_club_gnoll_8bit:Class;
	public static function get s_club_gnoll(): Class {
		return is8bit ? s_club_gnoll_8bit : s_club_gnoll_16bit;
	}
	[Embed(source="../../../res/sprites/corruptedGlade.png")]
	public static const s_corruptedGlade_16bit:Class;
	public static function get s_corruptedGlade(): Class {
		return is8bit ? null : s_corruptedGlade_16bit;
	}
	[Embed(source = "../../../res/sprites/corrwitch.png")]
	public static var corrwitchsprite16:Class;
	public static function get corrwitchsprite(): Class{
		return is8bit ? null : corrwitchsprite16;
	}
	[Embed(source="../../../res/sprites/cotton.png")]
	public static const s_cotton_16bit:Class;
	[Embed(source="../../../res/sprites8bit/cotton-old.png")]
	public static const s_cotton_8bit:Class;
	public static function get s_cotton(): Class {
		return is8bit ? s_cotton_8bit : s_cotton_16bit;
	}
	[Embed(source="../../../res/sprites/cumwitch.png")]
	public static const s_cumwitch_16bit:Class;
	[Embed(source="../../../res/sprites8bit/cumwitch-old.png")]
	public static const s_cumwitch_8bit:Class;
	public static function get s_cumWitch(): Class {
		return is8bit ? s_cumwitch_8bit : s_cumwitch_16bit;
	}
	[Embed(source="../../../res/sprites/dickworms.png")]
	public static const s_dickworms_16bit:Class;
	[Embed(source="../../../res/sprites8bit/worms-old.png")]
	public static const s_dickworms_8bit:Class;
	public static function get s_dickworms(): Class {
		return is8bit ? s_dickworms_8bit : s_dickworms_16bit;
	}
	[Embed(source="../../../res/sprites/drider.png")]
	public static const s_drider_16bit:Class;
	[Embed(source="../../../res/sprites8bit/drider-old.png")]
	public static const s_drider_8bit:Class;
	public static function get s_drider(): Class {
		return is8bit ? s_drider_8bit : s_drider_16bit;
	}
	[Embed(source = "../../../res/sprites/dullahan.png")]
	public static var dullsprite16:Class;
	public static function get dullsprite(): Class{
		return is8bit ? null : dullsprite16;
	}
	[Embed(source="../../../res/sprites/easter bunneh.png")]
	public static const s_easter_bunneh_16bit:Class;
	[Embed(source="../../../res/sprites8bit/bunnygirl-old.png")]
	public static const s_easter_bunneh_8bit:Class;
	public static function get s_easter_bunneh(): Class {
		return is8bit ? s_easter_bunneh_8bit : s_easter_bunneh_16bit;
	}
	[Embed(source="../../../res/sprites/edryn.png")]
	public static const s_edryn_16bit:Class;
	[Embed(source="../../../res/sprites8bit/edryn-old.png")]
	public static const s_edryn_8bit:Class;
	public static function get s_edryn(): Class {
		return is8bit ? s_edryn_8bit : s_edryn_16bit;
	}
	[Embed(source="../../../res/sprites/edryn_preg.png")]
	public static const s_edryn_preg_16bit:Class;
	public static function get s_edryn_preg(): Class {
		return is8bit ? s_edryn_8bit : s_edryn_preg_16bit;
	}
	[Embed(source="../../../res/sprites/ember.png")]
	public static const s_ember_16bit:Class;
	[Embed(source="../../../res/sprites8bit/ember-old.png")]
    public static const s_ember_8bit:Class;
    public static function get s_ember(): Class {
        return is8bit ? s_ember_8bit : s_ember_16bit;
    }

    [Embed(source="../../../res/sprites/Essrayle.png")]
    public static const s_essrayle_16:Class;
    public static function get s_essrayle(): Class {
        return is8bit ? null : s_essrayle_16;
    }

    [Embed(source="../../../res/sprites/evelyn.png")]
    public static const s_evelyn_16:Class;
    public static function get s_evelyn(): Class {
        return is8bit ? null : s_evelyn_16;
    }

	[Embed(source="../../../res/sprites/exgartuan.png")]
	public static const s_exgartuan_16bit:Class;
	[Embed(source="../../../res/sprites8bit/exgartuan-old.png")]
	public static const s_exgartuan_8bit:Class;
	public static function get s_exgartuan(): Class {
		return is8bit ? s_exgartuan_8bit : s_exgartuan_16bit;
	}
	[Embed(source="../../../res/sprites/factory omnibus.png")]
	public static const s_factory_omnibus_16bit:Class;
	[Embed(source="../../../res/sprites8bit/omnibus-overseer-old.png")]
	public static const s_factory_omnibus_8bit:Class;
	public static function get s_factory_omnibus(): Class {
		return is8bit ? s_factory_omnibus_8bit : s_factory_omnibus_16bit;
	}
	[Embed(source="../../../res/sprites/faerie.png")]
	public static const s_faerie_16bit:Class;
	[Embed(source="../../../res/sprites8bit/faerie-old.png")]
	public static const s_faerie_8bit:Class;
	public static function get s_faerie(): Class {
		return is8bit ? s_faerie_8bit : s_faerie_16bit;
	}
	[Embed(source="../../../res/sprites/fenimp.png")]
	public static const s_fenimp_16bit:Class;
	[Embed(source="../../../res/sprites8bit/fenimp-old.png")]
	public static const s_fenimp_8bit:Class;
	public static function get s_fenimp(): Class {
		return is8bit ? s_fenimp_8bit : s_fenimp_16bit;
	}
	[Embed(source="../../../res/sprites/fetish cultist.png")]
	public static const s_fetish_cultist_16bit:Class;
	[Embed(source="../../../res/sprites8bit/fetish-cultist-old.png")]
	public static const s_fetish_cultist_8bit:Class;
	public static function get s_fetish_cultist(): Class {
		return is8bit ? s_fetish_cultist_8bit : s_fetish_cultist_16bit;
	}
	[Embed(source="../../../res/sprites/fetish zealot.png")]
	public static const s_fetish_zealot_16bit:Class;
	[Embed(source="../../../res/sprites8bit/fetish-zealot-old.png")]
	public static const s_fetish_zealot_8bit:Class;
	public static function get s_fetish_zealot(): Class {
		return is8bit ? s_fetish_zealot_8bit : s_fetish_zealot_16bit;
	}
	[Embed(source="../../../res/sprites8bit/shouldra-normal-old.png")]
	public static const s_ghostGirl_8bit:Class;
	public static function get s_ghostGirl(): Class {
		return s_ghostGirl_8bit;
	}
	[Embed(source="../../../res/sprites8bit/shouldra-ghost-old.png")]
	public static const s_ghostGirl2_8bit:Class;
	public static function get s_ghostGirl2(): Class {
		return s_ghostGirl2_8bit;
	}
	[Embed(source="../../../res/sprites/gargoyle.png")]
	public static const s_gargoyle_16bit:Class;
	public static function get s_gargoyle(): Class {
		return is8bit ? null : s_gargoyle_16bit;
	}
	[Embed(source="../../../res/sprites/ghoul.png")]
	public static const s_ghoul_16bit:Class;
	public static function get s_ghoul(): Class {
		return is8bit ? null : s_ghoul_16bit;
	}
	[Embed(source="../../../res/sprites/giacomo.png")]
	public static const s_giacomo_16bit:Class;
	[Embed(source="../../../res/sprites8bit/giacomo-old.png")]
	public static const s_giacomo_8bit:Class;
	public static function get s_giacomo(): Class {
		return is8bit ? s_giacomo_8bit : s_giacomo_16bit;
	}
	[Embed(source="../../../res/sprites/goblin.png")]
	public static const s_goblin_16bit:Class;
	[Embed(source="../../../res/sprites8bit/goblin-old.png")]
	public static const s_goblin_8bit:Class;
	public static function get s_goblin(): Class {
		return is8bit ? s_goblin_8bit : s_goblin_16bit;
	}

    [Embed(source="../../../res/sprites/greta.png")]
    public static const s_greta_16:Class;
    public static function get s_greta(): Class {
        return is8bit ? null : s_greta_16;
    }

	[Embed(source="../../../res/sprites/priscilla.png")]
	public static const s_priscilla_16bit:Class;
	[Embed(source="../../../res/sprites8bit/priscilla-old.png")]
	public static const s_priscilla_8bit:Class;
	public static function get s_priscilla(): Class {
		return is8bit ? s_priscilla_8bit : s_priscilla_16bit;
	}
	[Embed(source="../../../res/sprites/goblinShaman.png")]
	public static const s_goblinShaman_16bit:Class;
	[Embed(source="../../../res/sprites8bit/goblinShaman-old.png")]
	public static const s_goblinShaman_8bit:Class;
	public static function get s_goblinShaman(): Class {
		return is8bit ? s_goblinShaman_8bit : s_goblinShaman_16bit;
	}
	[Embed(source="../../../res/sprites/goblinWarrior.png")]
	public static const s_goblinWarrior_16bit:Class;
	[Embed(source="../../../res/sprites8bit/goblinWarrior-old.png")]
	public static const s_goblinWarrior_8bit:Class;
	public static function get s_goblinWarrior(): Class {
		return is8bit ? s_goblinWarrior_8bit : s_goblinWarrior_16bit;
	}
	[Embed(source="../../../res/sprites/googirlsprite.png")]
	public static const s_googirlsprite_16bit:Class;
	[Embed(source="../../../res/sprites8bit/googirl-old.png")]
	public static const s_googirlsprite_8bit:Class;
	public static function get s_googirlsprite(): Class {
		return is8bit ? s_googirlsprite_8bit : s_googirlsprite_16bit;
	}
	[Embed(source="../../../res/sprites/green slime.png")]
	public static const s_green_slime_16bit:Class;
	[Embed(source="../../../res/sprites8bit/slime-old.png")]
	public static const s_green_slime_8bit:Class;
	public static function get s_green_slime(): Class {
		return is8bit ? s_green_slime_8bit : s_green_slime_16bit;
	}
	[Embed(source="../../../res/sprites/harpy.png")]
	public static const s_harpy_16bit:Class;
	[Embed(source="../../../res/sprites8bit/harpy-old.png")]
	public static const s_harpy_8bit:Class;
	public static function get s_harpy(): Class {
		return is8bit ? s_harpy_8bit : s_harpy_16bit;
	}

    [Embed(source="../../../res/sprites/harpyhorde.png")]
    public static const s_harpy_horde:Class;
    public static function get s_harpyhorde(): Class {
        return is8bit ? null : s_harpy_horde;
    }

	[Embed(source="../../../res/sprites/heckel.png")]
	public static const s_heckel_16bit:Class;
	public static function get s_heckel(): Class {
		return is8bit ? s_club_gnoll_8bit : s_heckel_16bit;
	}
	[Embed(source="../../../res/sprites/heckel_nude.png")]
	public static const s_heckel_nude_16bit:Class;
	public static function get s_heckel_nude(): Class {
		return is8bit ? s_club_gnoll_8bit : s_heckel_nude_16bit;
	}
	[Embed(source="../../../res/sprites/hel-sprite.png")]
	public static const s_hel_sprite_16bit:Class;
	[Embed(source="../../../res/sprites8bit/hel-sprite-old.png")]
	public static const s_hel_sprite_8bit:Class;
	public static function get s_hel_sprite(): Class {
		return is8bit ? s_hel_sprite_8bit : s_hel_sprite_16bit;
	}
	[Embed(source="../../../res/sprites/hel-sprite_BB.png")]
	public static const s_hel_sprite_BB_16bit:Class;
	[Embed(source="../../../res/sprites8bit/hel-sprite_BB-old.png")]
	public static const s_hel_sprite_BB_8bit:Class;
	public static function get s_hel_sprite_BB(): Class {
		return is8bit ? s_hel_sprite_BB_8bit : s_hel_sprite_BB_16bit;
	}
	[Embed(source="../../../res/sprites/hel-sprite_PF.png")]
	public static const s_hel_sprite_PF_16bit:Class;
	[Embed(source="../../../res/sprites8bit/hel-sprite_PF-old.png")]
	public static const s_hel_sprite_PF_8bit:Class;
	public static function get s_hel_sprite_PF(): Class {
		return is8bit ? s_hel_sprite_PF_8bit : s_hel_sprite_PF_16bit;
	}
	[Embed(source="../../../res/sprites/hel-sprite_BB_PF.png")]
	public static const s_hel_sprite_BB_PF_16bit:Class;
	[Embed(source="../../../res/sprites8bit/hel-sprite_BB_PF-old.png")]
	public static const s_hel_sprite_BB_PF_8bit:Class;
	public static function get s_hel_sprite_BB_PF(): Class {
		return is8bit ? s_hel_sprite_BB_PF_8bit : s_hel_sprite_BB_PF_16bit;
	}
	[Embed(source="../../../res/sprites/hellhound.png")]
	public static const s_hellhound_16bit:Class;
	[Embed(source="../../../res/sprites8bit/hellhound-old.png")]
	public static const s_hellhound_8bit:Class;
	public static function get s_hellhound(): Class {
		return is8bit ? s_hellhound_8bit : s_hellhound_16bit;
	}
	[Embed(source="../../../res/sprites/hellmouth.png")]
	public static const s_hellmouth_16bit:Class;
	[Embed(source="../../../res/sprites8bit/hellmouth-old.png")]
	public static const s_hellmouth_8bit:Class;
	public static function get s_hellmouth(): Class {
		return is8bit ? s_hellmouth_8bit : s_hellmouth_16bit;
	}
	[Embed(source="../../../res/sprites/ifris.png")]
	public static const s_ifris_16bit:Class;
	[Embed(source="../../../res/sprites8bit/ifris-old.png")]
	public static const s_ifris_8bit:Class;
	public static function get s_ifris(): Class {
		return is8bit ? s_ifris_8bit : s_ifris_16bit;
	}
	[Embed(source="../../../res/sprites/imp.png")]
	public static const s_imp_16bit:Class;
	[Embed(source="../../../res/sprites8bit/imp-old.png")]
	public static const s_imp_8bit:Class;
	public static function get s_imp(): Class {
		return is8bit ? s_imp_8bit : s_imp_16bit;
	}
	[Embed(source="../../../res/sprites/impMob.png")]
	public static const s_impMob_16bit:Class;
	public static function get s_impMob(): Class {
		return is8bit ? s_imp_8bit : s_impMob_16bit;
	}
	[Embed(source="../../../res/sprites/impOverlord.png")]
	public static const s_impOverlord_16bit:Class;
	[Embed(source="../../../res/sprites8bit/impOverlord-old.png")]
	public static const s_impOverlord_8bit:Class;
	public static function get s_impOverlord(): Class {
		return is8bit ? s_impOverlord_8bit : s_impOverlord_16bit;
	}
	[Embed(source="../../../res/sprites/impWarlord.png")]
	public static const s_impWarlord_16bit:Class;
	[Embed(source="../../../res/sprites8bit/impWarlord-old.png")]
	public static const s_impWarlord_8bit:Class;
	public static function get s_impWarlord(): Class {
		return is8bit ? s_impWarlord_8bit : s_impWarlord_16bit;
	}
	[Embed(source="../../../res/sprites/incubus mechanic.png")]
	public static const s_incubus_mechanic_16bit:Class;
	[Embed(source="../../../res/sprites8bit/incubus-mechanic-old.png")]
	public static const s_incubus_mechanic_8bit:Class;
	public static function get s_incubus_mechanic(): Class {
		return is8bit ? s_incubus_mechanic_8bit : s_incubus_mechanic_16bit;
	}
	[Embed(source="../../../res/sprites/isabella.png")]
	public static const s_isabella_16bit:Class;
	[Embed(source="../../../res/sprites8bit/isabella-old.png")]
	public static const s_isabella_8bit:Class;
	public static function get s_isabella(): Class {
		return is8bit ? s_isabella_8bit : s_isabella_16bit;
	}
	[Embed(source="../../../res/sprites/ivory_succubus.png")]
	public static const s_ivory_succubus_16bit:Class;
	public static function get s_ivory_succubus(): Class {
		return is8bit ? null : s_ivory_succubus_16bit;
	}
	[Embed(source="../../../res/sprites/izma.png")]
	public static const s_izma_16bit:Class;
	[Embed(source="../../../res/sprites8bit/izma-old.png")]
	public static const s_izma_8bit:Class;
	public static function get s_izma(): Class {
		return is8bit ? s_izma_8bit : s_izma_16bit;
	}

	[Embed(source="../../../res/sprites/jasun.png")]
	public static const s_jasun_16bit:Class;
	[Embed(source="../../../res/sprites8bit/jasun-old.png")]
	public static const s_jasun_8bit:Class;
	public static function get s_jasun(): Class {
		return is8bit ? s_jasun_8bit : s_jasun_16bit;
	}
	[Embed(source="../../../res/sprites/jojo.png")]
	public static const s_jojo_16bit:Class;
	[Embed(source="../../../res/sprites8bit/jojo-old.png")]
	public static const s_jojo_8bit:Class;
	public static function get s_jojo(): Class {
		return is8bit ? s_jojo_8bit : s_jojo_16bit;
	}
	[Embed(source="../../../res/sprites/jojoTentacle.png")]
	public static const s_jojoTentacle_16bit:Class;
	public static function get s_jojoTentacle(): Class {
		return is8bit ? s_jojo_8bit : s_jojoTentacle_16bit;
	}
	[Embed(source="../../../res/sprites/joy.png")]
	public static const s_joy_16bit:Class;
	public static function get s_joy(): Class {
		return is8bit ? s_jojo_8bit : s_joy_16bit;
	}
	[Embed(source="../../../res/sprites/katherine-vagrant.png")]
	public static const s_katherine_vagrant_16bit:Class;
	public static function get s_katherine_vagrant(): Class {
		return is8bit ? null : s_katherine_vagrant_16bit;
	}
	[Embed(source="../../../res/sprites/kelly.png")]
	public static const s_kelly_16bit:Class;
	public static function get s_kelly(): Class {
		return is8bit ? s_edryn_8bit : s_kelly_16bit;
	}
	[Embed(source="../../../res/sprites/kelly_brst.png")]
	public static const s_kelly_brst_16bit:Class;
	public static function get s_kelly_brst(): Class {
		return is8bit ? s_edryn_8bit : s_kelly_brst_16bit;
	}
	[Embed(source="../../../res/sprites/kelly_brst_preg.png")]
	public static const s_kelly_brst_preg_16bit:Class;
	public static function get s_kelly_brst_preg(): Class {
		return is8bit ? s_edryn_8bit : s_kelly_brst_preg_16bit;
	}
	[Embed(source="../../../res/sprites/kelly_preg.png")]
	public static const s_kelly_preg_16bit:Class;
	public static function get s_kelly_preg(): Class {
		return is8bit ? s_edryn_8bit : s_kelly_preg_16bit;
	}
	[Embed(source="../../../res/sprites/kelt.png")]
	public static const s_kelt_16bit:Class;
	[Embed(source="../../../res/sprites8bit/kelt-old.png")]
	public static const s_kelt_8bit:Class;
	public static function get s_kelt(): Class {
		return is8bit ? s_kelt_8bit : s_kelt_16bit;
	}
	[Embed(source="../../../res/sprites/kida.png")]
	public static const s_kida_16bit:Class;
	[Embed(source="../../../res/sprites8bit/kida-old.png")]
	public static const s_kida_8bit:Class;
	public static function get s_kida(): Class {
		return is8bit ? s_kida_8bit : s_kida_16bit;
	}
	[Embed(source="../../../res/sprites/kiha.png")]
	public static const s_kiha_16bit:Class;
	[Embed(source="../../../res/sprites8bit/kiha-old.png")]
	public static const s_kiha_8bit:Class;
	public static function get s_kiha(): Class {
		return is8bit ? s_kiha_8bit : s_kiha_16bit;
	}
	[Embed(source="../../../res/sprites/kiha_nude.png")]
	public static const s_kiha_nude_16bit:Class;
	public static function get s_kiha_nude(): Class {
		return is8bit ? s_kiha_8bit : s_kiha_nude_16bit;
	}
	[Embed(source="../../../res/sprites/kiha_nude_preg.png")]
	public static const s_kiha_nude_preg_16bit:Class;
	public static function get s_kiha_nude_preg(): Class {
		return is8bit ? s_kiha_8bit : s_kiha_nude_preg_16bit;
	}
	[Embed(source="../../../res/sprites/kiha_preg.png")]
	public static const s_kiha_preg_16bit:Class;
	public static function get s_kiha_preg(): Class {
		return is8bit ? s_kiha_8bit : s_kiha_preg_16bit;
	}
	[Embed(source="../../../res/sprites/kitsune_black.png")]
	public static const s_kitsune_black_16bit:Class;
	[Embed(source="../../../res/sprites8bit/kitsune_black-old.png")]
	public static const s_kitsune_black_8bit:Class;
	public static function get s_kitsune_black(): Class {
		return is8bit ? s_kitsune_black_8bit : s_kitsune_black_16bit;
	}
	[Embed(source="../../../res/sprites/kitsune_blonde.png")]
	public static const s_kitsune_blonde_16bit:Class;
	[Embed(source="../../../res/sprites8bit/kitsune_blonde-old.png")]
	public static const s_kitsune_blonde_8bit:Class;
	public static function get s_kitsune_blonde(): Class {
		return is8bit ? s_kitsune_blonde_8bit : s_kitsune_blonde_16bit;
	}
	[Embed(source="../../../res/sprites/kitsune_red.png")]
	public static const s_kitsune_red_16bit:Class;
	[Embed(source="../../../res/sprites8bit/kitsune_red-old.png")]
	public static const s_kitsune_red_8bit:Class;
	public static function get s_kitsune_red(): Class {
		return is8bit ? s_kitsune_red_8bit : s_kitsune_red_16bit;
	}
	[Embed(source="../../../res/sprites/latexgoogirl.png")]
	public static const s_latexgoogirl_16bit:Class;
	public static function get s_latexgoogirl(): Class {
		return is8bit ? null : s_latexgoogirl_16bit;
	}
	[Embed(source="../../../res/sprites/lilium.png")]
	public static const s_lilium_16bit:Class;
	public static function get s_lilium(): Class {
		return is8bit ? null : s_lilium_16bit;
	}
	[Embed(source="../../../res/sprites/lottie.png")]
	public static const s_lottie_16bit:Class;
	[Embed(source="../../../res/sprites8bit/lottie-old.png")]
	public static const s_lottie_8bit:Class;
	public static function get s_lottie(): Class {
		return is8bit ? s_lottie_8bit : s_lottie_16bit;
	}

    [Embed(source="../../../res/sprites/Loppe.png")]
    public static const s_loppe_16:Class;
    public static function get s_loppe(): Class {
        return is8bit ? null : s_loppe_16;
    }

	[Embed(source="../../../res/sprites/lumi.png")]
	public static const s_lumi_16bit:Class;
	[Embed(source="../../../res/sprites8bit/lumi-old.png")]
	public static const s_lumi_8bit:Class;
	public static function get s_lumi(): Class {
		return is8bit ? s_lumi_8bit : s_lumi_16bit;
	}
	[Embed(source="../../../res/sprites/lynette.png")]
	public static const s_lynette_16bit:Class;
	[Embed(source="../../../res/sprites8bit/lynnette-old.png")]
	public static const s_lynette_8bit:Class;
	public static function get s_lynette(): Class {
		return is8bit ? s_lynette_8bit : s_lynette_16bit;
	}
	[Embed(source="../../../res/sprites/maddie.png")]
	public static const s_maddie_16bit:Class;
	[Embed(source="../../../res/sprites8bit/maddie-old.png")]
	public static const s_maddie_8bit:Class;
	public static function get s_maddie(): Class {
		return is8bit ? s_maddie_8bit : s_maddie_16bit;
	}
	[Embed(source="../../../res/sprites/marae.png")]
	public static const s_marae_16bit:Class;
	[Embed(source="../../../res/sprites8bit/marae-old.png")]
	public static const s_marae_8bit:Class;
	public static function get s_marae(): Class {
		return is8bit ? s_marae_8bit : s_marae_16bit;
	}
	[Embed(source="../../../res/sprites/marble.png")]
	public static const s_marble_16bit:Class;
	[Embed(source="../../../res/sprites8bit/marble-old.png")]
	public static const s_marble_8bit:Class;
	public static function get s_marble(): Class {
		return is8bit ? s_marble_8bit : s_marble_16bit;
	}
	[Embed(source="../../../res/sprites/marble_cow.png")]
	public static const s_marble_cow_16bit:Class;
	public static function get s_marble_cow(): Class {
		return is8bit ? s_marble_8bit : s_marble_cow_16bit;
	}
	[Embed(source="../../../res/sprites/markus and lucia.png")]
	public static const s_markus_and_lucia_16bit:Class;
	[Embed(source="../../../res/sprites8bit/marcus-and-lucia-old.png")]
	public static const s_markus_and_lucia_8bit:Class;
	public static function get s_markus_and_lucia(): Class {
		return is8bit ? s_markus_and_lucia_8bit : s_markus_and_lucia_16bit;
	}
	[Embed(source="../../../res/sprites8bit/melinda-old.png")]
	public static const s_melinda_8bit:Class;
	public static function get s_melinda(): Class {
		return s_melinda_8bit;
	}
	[Embed(source="../../../res/sprites/milkgirl.png")]
	public static const s_milkgirl_16bit:Class;
	public static function get s_milkgirl(): Class {
		return is8bit ? null : s_milkgirl_16bit;
	}
	[Embed(source="../../../res/sprites/minerva.png")]
	public static const s_minerva_16bit:Class;
	[Embed(source="../../../res/sprites8bit/minerva-old.png")]
	public static const s_minerva_8bit:Class;
	public static function get s_minerva(): Class {
		return is8bit ? s_minerva_8bit : s_minerva_16bit;
	}
	[Embed(source="../../../res/sprites/minervaCorrupt.png")]
	public static const s_minerva_corrupt_16bit:Class;
	[Embed(source="../../../res/sprites8bit/minerva-corrupt-old.png")]
	public static const s_minerva_corrupt_8bit:Class;
	public static function get s_minerva_corrupt(): Class {
		return is8bit ? s_minerva_corrupt_8bit : s_minerva_corrupt_16bit;
	}
	[Embed(source="../../../res/sprites/minervaPure.png")]
	public static const s_minerva_pure_16bit:Class;
	[Embed(source="../../../res/sprites8bit/minerva-pure-old.png")]
	public static const s_minerva_pure_8bit:Class;
	public static function get s_minerva_pure(): Class {
		return is8bit ? s_minerva_pure_8bit : s_minerva_pure_16bit;
	}
	[Embed(source="../../../res/sprites/minotaur.png")]
	public static const s_minotaur_16bit:Class;
	[Embed(source="../../../res/sprites8bit/minotaur-old.png")]
	public static const s_minotaur_8bit:Class;
	public static function get s_minotaur(): Class {
		return is8bit ? s_minotaur_8bit : s_minotaur_16bit;
	}
	[Embed(source="../../../res/sprites/minotaurSons.png")]
	public static const s_minotaurSons_16bit:Class;
	public static function get s_minotaurSons(): Class {
		return is8bit ? s_minotaur_8bit : s_minotaurSons_16bit;
	}
	[Embed(source="../../../res/sprites/mrsCoffee.png")]
	public static const s_mrsCoffee_16bit:Class;
	public static function get s_mrsCoffee(): Class {
		return is8bit ? null : s_mrsCoffee_16bit;
	}
	[Embed(source="../../../res/sprites/naga.png")]
	public static const s_naga_16bit:Class;
	[Embed(source="../../../res/sprites8bit/naga-old.png")]
	public static const s_naga_8bit:Class;
	public static function get s_naga(): Class {
		return is8bit ? s_naga_8bit : s_naga_16bit;
	}
	[Embed(source="../../../res/sprites/nephilaCoven.png")]
	public static const s_nephilaCoven_16bit:Class;
	public static function get s_nephilaCoven(): Class {
		return is8bit ? s_googirlsprite_8bit : s_nephilaCoven_16bit;
	}
	[Embed(source="../../../res/sprites/nephilaThrone.png")]
	public static const s_nephilaThrone_16bit:Class;
	public static function get s_nephilaThrone(): Class {
		return is8bit ? s_googirlsprite_8bit : s_nephilaThrone_16bit;
	}
	[Embed(source="../../../res/sprites/nephilaThroneEnd.png")]
	public static const s_nephilaThroneEnd_16bit:Class;
	public static function get s_nephilaThroneEnd(): Class {
		return is8bit ? s_googirlsprite_8bit : s_nephilaThroneEnd_16bit;
	}
	[Embed(source="../../../res/sprites/nephilaMouse.png")]
	public static const s_nephilaMouse_16bit:Class;
	public static function get s_nephilaMouse(): Class {
		return is8bit ? s_amily_8bit : s_nephilaMouse_16bit;
	}
	[Embed(source="../../../res/sprites/nephilaMouse2.png")]
	public static const s_nephilaMouse2_16bit:Class;
	public static function get s_nephilaMouse2(): Class {
		return is8bit ? s_amily_8bit : s_nephilaMouse2_16bit;
	}
	[Embed(source="../../../res/sprites/nephilaMouse3.png")]
	public static const s_nephilaMouse3_16bit:Class;
	public static function get s_nephilaMouse3(): Class {
		return is8bit ? s_amily_8bit : s_nephilaMouse3_16bit;
	}
	[Embed(source="../../../res/sprites/oasis demons.png")]
	public static const s_oasis_demons_16bit:Class;
	[Embed(source="../../../res/sprites8bit/oasis-demons-old.png")]
	public static const s_oasis_demons_8bit:Class;
	public static function get s_oasis_demons(): Class {
		return is8bit ? s_oasis_demons_8bit : s_oasis_demons_16bit;
	}
	[Embed(source="../../../res/sprites/oswald.png")]
	public static const s_oswald_16bit:Class;
	[Embed(source="../../../res/sprites8bit/oswald-old.png")]
	public static const s_oswald_8bit:Class;
	public static function get s_oswald(): Class {
		return is8bit ? s_oswald_8bit : s_oswald_16bit;
	}
	[Embed(source="../../../res/sprites/pablo.png")]
	public static const s_pablo_16bit:Class;
	public static function get s_pablo(): Class {
		return is8bit ? s_imp_8bit : s_pablo_16bit;
	}
	[Embed(source="../../../res/sprites/pablo_nude.png")]
	public static const s_pablo_nude_16bit:Class;
	public static function get s_pablo_nude(): Class {
		return is8bit ? s_imp_8bit : s_pablo_nude_16bit;
	}
	[Embed(source="../../../res/sprites/phoenix.png")]
	public static const s_phoenix_16bit:Class;
	public static function get s_phoenix(): Class {
		return is8bit ? null : s_phoenix_16bit;
	}

    [Embed(source="../../../res/sprites/PhoenixHordeNEW.png")]
    public static const s_phoenixHorde_16bit:Class;
    public static function get s_phoenix_horde(): Class {
        return is8bit ? null : s_phoenixHorde_16bit;
    }

	[Embed(source="../../../res/sprites/phoenix_nude.png")]
	public static const s_phoenix_nude_16bit:Class;
	public static function get s_phoenix_nude(): Class {
		return is8bit ? null : s_phoenix_nude_16bit;
	}
	[Embed(source="../../../res/sprites/phylla.png")]
	public static const s_phylla_16bit:Class;
	[Embed(source="../../../res/sprites8bit/phylla-old.png")]
	public static const s_phylla_8bit:Class;
	public static function get s_phylla(): Class {
		return is8bit ? s_phylla_8bit : s_phylla_16bit;
	}
	[Embed(source="../../../res/sprites/phylla_nude.png")]
	public static const s_phylla_nude_16bit:Class;
	public static function get s_phylla_nude(): Class {
		return is8bit ? s_phylla_8bit : s_phylla_nude_16bit;
	}
	[Embed(source="../../../res/sprites/phylla_preg.png")]
    public static const s_phylla_preg_16bit:Class;
    public static function get s_phylla_preg(): Class {
        return is8bit ? s_phylla_8bit : s_phylla_preg_16bit;
    }

    [Embed(source="../../../res/sprites/QueenCalais.png")]
    public static const s_queenCalais16:Class;
    public static function get s_queenCalais(): Class {
        return is8bit ? null : s_queenCalais16;
    }

	[Embed(source="../../../res/sprites/poisontail.png")]
	public static const s_poisontail_16bit:Class;
	[Embed(source="../../../res/sprites8bit/roxanne-old.png")]
	public static const s_poisontail_8bit:Class;
	public static function get s_poisontail(): Class {
		return is8bit ? s_poisontail_8bit : s_poisontail_16bit;
	}
	[Embed(source="../../../res/sprites/raphael.png")]
	public static const s_raphael_16bit:Class;
	[Embed(source="../../../res/sprites8bit/raphael-old.png")]
	public static const s_raphael_8bit:Class;
	public static function get s_raphael(): Class {
		return is8bit ? s_raphael_8bit : s_raphael_16bit;
	}
	[Embed(source="../../../res/sprites/rathazul.png")]
	public static const s_rathazul_16bit:Class;
	[Embed(source="../../../res/sprites8bit/rathazul-old.png")]
	public static const s_rathazul_8bit:Class;
	public static function get s_rathazul(): Class {
		return is8bit ? s_rathazul_8bit : s_rathazul_16bit;
	}
	[Embed(source="../../../res/sprites/rogar.png")]
	public static const s_rogar_16bit:Class;
	public static function get s_rogar(): Class {
		return is8bit ? null : s_rogar_16bit;
	}
	[Embed(source="../../../res/sprites/rubi_hornless.png")]
	public static const s_rubi_hornless_16bit:Class;
	public static function get s_rubi_hornless(): Class {
		return is8bit ? null : s_rubi_hornless_16bit;
	}
	[Embed(source="../../../res/sprites/rubi_horns.png")]
	public static const s_rubi_horns_16bit:Class;
	public static function get s_rubi_horns(): Class {
		return is8bit ? null : s_rubi_horns_16bit;
	}
	[Embed(source="../../../res/sprites/sandtrap.png")]
	public static const s_sandtrap_16bit:Class;
	public static function get s_sandtrap(): Class {
		return is8bit ? null : s_sandtrap_16bit;
	}
	[Embed(source="../../../res/sprites/sandwich.png")]
	public static const s_sandwich_16bit:Class;
	[Embed(source="../../../res/sprites8bit/sand-witch-old.png")]
	public static const s_sandwich_8bit:Class;
	public static function get s_sandwich(): Class {
		return is8bit ? s_sandwich_8bit : s_sandwich_16bit;
	}

    [Embed(source="../../../res/sprites/sandwitchmob.png")]
    public static const s_witchmob_16:Class;
    public static function get s_witchmob(): Class {
        return is8bit ? null : s_witchmob_16;
    }

	[Embed(source="../../../res/sprites/satyr.png")]
	public static const s_satyr_16bit:Class;
	public static function get s_satyr(): Class {
		return is8bit ? null : s_satyr_16bit;
	}
	[Embed(source="../../../res/sprites/scylla.png")]
	public static const s_scylla_16bit:Class;
	[Embed(source="../../../res/sprites8bit/scylla-old.png")]
	public static const s_scylla_8bit:Class;
	public static function get s_scylla(): Class {
		return is8bit ? s_scylla_8bit : s_scylla_16bit;
	}
	[Embed(source="../../../res/sprites/scyllaAndBear.png")]
	public static const s_scyllaAndBear_16bit:Class;
	public static function get s_scyllaAndBear(): Class {
		return is8bit ? null : s_scyllaAndBear_16bit;
	}
	[Embed(source="../../../res/sprites/sean.png")]
	public static const s_sean_16bit:Class;
	[Embed(source="../../../res/sprites8bit/sean-old.png")]
	public static const s_sean_8bit:Class;
	public static function get s_sean(): Class {
		return is8bit ? s_sean_8bit : s_sean_16bit;
	}
	[Embed(source="../../../res/sprites/sharkgirl.png")]
	public static const s_sharkgirl_16bit:Class;
	[Embed(source="../../../res/sprites8bit/sharkgirl-old.png")]
	public static const s_sharkgirl_8bit:Class;
	public static function get s_sharkgirl(): Class {
		return is8bit ? s_sharkgirl_8bit : s_sharkgirl_16bit;
	}
	[Embed(source="../../../res/sprites/sophie.png")]
	public static const s_sophie_16bit:Class;
	[Embed(source="../../../res/sprites8bit/sophie-old.png")]
	public static const s_sophie_8bit:Class;
	public static function get s_sophie(): Class {
		return is8bit ? s_sophie_8bit : s_sophie_16bit;
	}
	[Embed(source="../../../res/sprites/sophieBimbo.png")]
	public static const s_sophieBimbo_16bit:Class;
	[Embed(source="../../../res/sprites8bit/sophieBimbo-old.png")]
	public static const s_sophieBimbo_8bit:Class;
	public static function get s_sophieBimbo(): Class {
		return is8bit ? s_sophieBimbo_8bit : s_sophieBimbo_16bit;
	}
	[Embed(source="../../../res/sprites/spear gnoll.png")]
	public static const s_spear_gnoll_16bit:Class;
	[Embed(source="../../../res/sprites8bit/gnoll-spearthrower-old.png")]
	public static const s_spear_gnoll_8bit:Class;
	public static function get s_spear_gnoll(): Class {
		return is8bit ? s_spear_gnoll_8bit : s_spear_gnoll_16bit;
	}
	[Embed(source="../../../res/sprites/spidergirl.png")]
	public static const s_spidergirl_16bit:Class;
	[Embed(source="../../../res/sprites8bit/spider-morph-f-old.png")]
	public static const s_spidergirl_8bit:Class;
	public static function get s_spidergirl(): Class {
		return is8bit ? s_spidergirl_8bit : s_spidergirl_16bit;
	}
	[Embed(source="../../../res/sprites/spiderguy.png")]
	public static const s_spiderguy_16bit:Class;
	[Embed(source="../../../res/sprites8bit/spider-morph-m-old.png")]
	public static const s_spiderguy_8bit:Class;
	public static function get s_spiderguy(): Class {
		return is8bit ? s_spiderguy_8bit : s_spiderguy_16bit;
	}
	[Embed(source="../../../res/sprites/stuckSatyr.png")]
	public static const s_stuckSatyr_16bit:Class;
	public static function get s_stuckSatyr(): Class {
		return is8bit ? null : s_stuckSatyr_16bit;
	}
	[Embed(source="../../../res/sprites/succubus secretary.png")]
	public static const s_succubus_secretary_16bit:Class;
	[Embed(source="../../../res/sprites8bit/secretarial-succubus-old.png")]
	public static const s_succubus_secretary_8bit:Class;
	public static function get s_succubus_secretary(): Class {
		return is8bit ? s_succubus_secretary_8bit : s_succubus_secretary_16bit;
	}
	[Embed(source="../../../res/sprites/tamani's daughters.png")]
	public static const s_tamani_s_daughters_16bit:Class;
	[Embed(source="../../../res/sprites8bit/tamanis-daughters-old.png")]
	public static const s_tamani_s_daughters_8bit:Class;
	public static function get s_tamani_s_daughters(): Class {
		return is8bit ? s_tamani_s_daughters_8bit : s_tamani_s_daughters_16bit;
	}
	[Embed(source="../../../res/sprites/tamani.png")]
	public static const s_tamani_16bit:Class;
	[Embed(source="../../../res/sprites8bit/tamani-old.png")]
	public static const s_tamani_8bit:Class;
	public static function get s_tamani(): Class {
		return is8bit ? s_tamani_8bit : s_tamani_16bit;
	}
	[Embed(source="../../../res/sprites/tentacleMonster.png")]
	public static const s_tentacleMonster_16bit:Class;
	public static function get s_tentacleMonster(): Class {
		return is8bit ? null : s_tentacleMonster_16bit;
	}
	[Embed(source="../../../res/sprites/uncloaked dominika.png")]
	public static const s_uncloaked_dominika_16bit:Class;
	[Embed(source="../../../res/sprites8bit/dominika-old.png")]
	public static const s_uncloaked_dominika_8bit:Class;
	public static function get s_uncloaked_dominika(): Class {
		return is8bit ? s_uncloaked_dominika_8bit : s_uncloaked_dominika_16bit;
	}
	[Embed(source="../../../res/sprites/urta.png")]
	public static const s_urta_16bit:Class;
	[Embed(source="../../../res/sprites8bit/urta-old.png")]
	public static const s_urta_8bit:Class;
	public static function get s_urta(): Class {
		return is8bit ? s_urta_8bit : s_urta_16bit;
	}
	[Embed(source="../../../res/sprites/urtaDrunk.png")]
	public static const s_urtaDrunk_16bit:Class;
	[Embed(source="../../../res/sprites8bit/urta-old.png")] //	[Embed(source="../../../res/sprites8bit/urtaDrunk-old.png")] PLACEHOLDER
	public static const s_urtaDrunk_8bit:Class;
	public static function get s_urtaDrunk(): Class {
		return is8bit ? s_urtaDrunk_8bit : s_urtaDrunk_16bit;
	}
	[Embed(source="../../../res/sprites/vagrant cats.png")]
	public static const s_vagrant_cats_16bit:Class;
	[Embed(source="../../../res/sprites8bit/vagrant-cats-old.png")]
	public static const s_vagrant_cats_8bit:Class;
	public static function get s_vagrant_cats(): Class {
		return is8bit ? s_vagrant_cats_8bit : s_vagrant_cats_16bit;
	}
	[Embed(source="../../../res/sprites/vala.png")]
	public static const s_vala_16bit:Class;
	[Embed(source="../../../res/sprites8bit/vala-old.png")]
	public static const s_vala_8bit:Class;
	public static function get s_vala(): Class {
		return is8bit ? s_vala_8bit : s_vala_16bit;
	}
	[Embed(source="../../../res/sprites/valaSlave.png")]
	public static const s_valaSlave_16bit:Class;
	[Embed(source="../../../res/sprites8bit/vala-old.png")] //	[Embed(source="../../../res/sprites8bit/valaSlave-old.png")] PLACEHOLDER
	public static const s_valaSlave_8bit:Class;
	public static function get s_valaSlave(): Class {
		return is8bit ? s_valaSlave_8bit : s_valaSlave_16bit;
	}
	[Embed(source="../../../res/sprites/valeria.png")]
	public static const s_valeria_16bit:Class;
	[Embed(source="../../../res/sprites8bit/valeria-old.png")]
	public static const s_valeria_8bit:Class;
	public static function get s_valeria(): Class {
		return is8bit ? s_valeria_8bit : s_valeria_16bit;
	}
	[Embed(source="../../../res/sprites/vapula.png")]
	public static const s_vapula_16bit:Class;
	public static function get s_vapula(): Class {
		return is8bit ? null : s_vapula_16bit;
	}
	[Embed(source="../../../res/sprites/venus.png")]
	public static const s_venus_16bit:Class;
	public static function get s_venus(): Class {
		return is8bit ? null : s_venus_16bit;
	}
	[Embed(source="../../../res/sprites/venus_herm.png")]
	public static const s_venus_herm_16bit:Class;
	public static function get s_venus_herm(): Class {
		return is8bit ? null : s_venus_herm_16bit;
	}
	[Embed(source="../../../res/sprites/victoria.png")]
	public static const s_victoria_16bit:Class;
	[Embed(source="../../../res/sprites8bit/victoria-old.png")]
	public static const s_victoria_8bit:Class;
	public static function get s_victoria(): Class {
		return is8bit ? s_victoria_8bit : s_victoria_16bit;
	}
    [Embed(source="../../../res/sprites/Vilkus1.png")]
    public static const s_vilkusSprt:Class;
    public static function get s_vilkus(): Class {
        return s_vilkusSprt;
    }
    [Embed(source="../../../res/sprites/vilkussleepy.png")]
    public static const s_vilkussleepSptr:Class;
    public static function get s_vilkus_sleep(): Class {
        return s_vilkussleepSptr;
    }
    [Embed(source="../../../res/sprites/Vilkustf.png")]
    public static const s_vilkustfsptr:Class;
    public static function get s_vilkus_tf(): Class {
        return s_vilkustfsptr;
    }
	[Embed(source="../../../res/sprites/whitney.png")]
	public static const s_whitney_16bit:Class;
	[Embed(source="../../../res/sprites8bit/whitney-old.png")]
	public static const s_whitney_8bit:Class;
	public static function get s_whitney(): Class {
		return is8bit ? s_whitney_8bit : s_whitney_16bit;
	}
	[Embed(source="../../../res/sprites/weaponsmith.png")]
	public static const s_weaponsmith_16bit:Class;
	[Embed(source="../../../res/sprites8bit/weaponsmith-old.png")]
	public static const s_weaponsmith_8bit:Class;
	public static function get s_weaponsmith(): Class {
		return is8bit ? s_weaponsmith_8bit : s_weaponsmith_16bit;
	}
	[Embed(source="../../../res/sprites/yara.png")]
	public static const s_yara_16bit:Class;
	[Embed(source="../../../res/sprites8bit/yara-old.png")]
	public static const s_yara_8bit:Class;
	public static function get s_yara(): Class {
		return is8bit ? s_yara_8bit : s_yara_16bit;
	}
	[Embed(source="../../../res/sprites/yvonne.png")]
	public static const s_yvonne_16bit:Class;
	[Embed(source="../../../res/sprites8bit/yvonne-old.png")]
	public static const s_yvonne_8bit:Class;
	public static function get s_yvonne(): Class {
		return is8bit ? s_yvonne_8bit : s_yvonne_16bit;
	}
	[Embed(source="../../../res/sprites/zetaz_imp.png")]
	public static const s_zetaz_imp_16bit:Class;
	public static function get s_zetaz_imp(): Class {
		return is8bit ? s_imp_8bit : s_zetaz_imp_16bit;
	}
	[Embed(source="../../../res/sprites/zetaz.png")]
	public static const s_zetaz_16bit:Class;
	public static function get s_zetaz(): Class {
		return is8bit ? s_impOverlord_8bit : s_zetaz_16bit;
	}
	[Embed(source="../../../res/sprites/aiko.png")]
	public static const s_aiko_16bit:Class;
	public static function get s_aiko():Class {
		return is8bit ? s_kitsune_blonde_8bit : s_aiko_16bit;
	}
	[Embed(source="../../../res/sprites/yamata.png")]
	public static const s_yamata_16bit:Class;
	public static function get s_yamata():Class {
		return is8bit ? s_kitsune_black_8bit : s_yamata_16bit;
	}

	public static function bitmapData(clazz:Class):BitmapData {
		if (!clazz) return null;
		var e:Object = new clazz();
		if (!(e is Bitmap)) return null;
		return (e as Bitmap).bitmapData;
	}

	public function SpriteDb() {
	}
}
}


code:
package classes.helper {
	import flash.display.Stage;

/**
 * Helper class to deal with the CoC class GUI dependency.
 *
 * Source:
 * https://forums.adobe.com/message/4235833#4235833
 */
	public class StageLocator {
		//public static var instance:StageLocator;
		private static var _stage:Stage;

		public function StageLocator ($stage:Stage) {
			//instance = this;
			_stage = $stage;
		}
		public static function get stage():Stage { return _stage; }
	}
}


code:
package classes.internals
{
	/**
	 * Class that provides random numbers.
	 */
	public class ActionScriptRNG implements RandomNumberGenerator
	{
		/**
		 * Returns a number that is between 0 and max exclusive.
		 * @param	max the upper limit for the random number
		 * @return a value between 0 and max - 1
		 */
		public function random(max:int):int
		{
			return Utils.rand(max);
		}

		/**
		 * Returns a number that is between 0 and max inclusive.
		 * @param	max the upper limit for the random number
		 * @return a value between 0 and max inclusive
		 */
		public function randomCorrected(max:int):int
		{
			return Utils.rand(max + 1);
		}
	}
}


code:
/**
 * Created by aimozg on 02.04.2017.
 */
package classes.internals {
import flash.utils.Proxy;
import flash.utils.flash_proxy;

use namespace flash_proxy;

public dynamic class ArrayWithDefault extends Proxy {
	protected const array:Array    = [];
	protected const _debug:Boolean = false;
	public function ArrayWithDefault(array:Array=null) {
		if (array!=null) this.array.push.apply(this.array,array);
	}
	override flash_proxy function hasProperty(name:*):Boolean {
		if (_debug) trace("hasProperty", name);
		return isFinite(+name);
	}
	override flash_proxy function getProperty(name:*):* {
		const s:Number = +name;
		const i:int = new int(s);
		if (_debug) trace("getProperty ",typeof(name), name);
		if (s >= 0) {
			stretch(i + 1);
			if (_debug) trace("Counter " + i + " being accessed. Value = " + array[i]);
			return array[i];
		} else return array[name];
	}
	public function get length():int {
		return array.length;
	}
	override flash_proxy function setProperty(name:*, value:*):void {
		if (name == "length"){
			if (_debug) trace("setProperty ", name, value);
			stretch(value);
		} else {
			const s:Number = +name;
			const i:int = new int(s);
			value = cast(value);
			if (_debug) trace("setProperty ", name, value);
			if (isFinite(s)) {
				stretch(i);
				array[i] = value;
			}
		}
	}
	protected function cast(o:*):* {
		return o;
	}
	protected function stretch(length:int):void {
		if (length > array.length){
			if (_debug) trace("stretch(" + length + ").");
			for (var j:int=array.length; j < length; j++) array[j] = defaultValue();
		}
	}
	protected function defaultValue():* {
		return undefined;
	}
	override flash_proxy function deleteProperty(name:*):Boolean {
		if (_debug) trace("deleteProperty", name);
		const s:Number = +name;
		const i:int = new int(s);
		if (isFinite(s) && i < array.length) {
			if (i == array.length -1) {
				array.length = i;
				return true;
			} else {
				array[i] = defaultValue();
			}
		}
		return false;
	}

	override flash_proxy function nextName(index:int):String {
		if (_debug) trace("nextName", index);
		return index.toString();
	}

	override flash_proxy function nextValue(index:int):* {
		if (_debug) trace("nextValue", index);
		return array[index];
	}

	override flash_proxy function nextNameIndex(index:int):int {
		if (_debug) trace("nextNameIndex ", index);
		if (index < array.length) return index+1;
		return 0;
	}

	override flash_proxy function callProperty(name:*, ...rest):* {
		if (name == "valueOf") return toString();
		const v:Function = this[name];
		return v.apply(this,rest);
	}

	public function toString():String {
		return "["+array.toString()+"]";
	}
}
}