/// <summary>
		/// Clone-like copys all values
		/// </summary>
		/// <param name="status"></param>
		public void LoadFromStatus(WorldObjectStatus status, bool includeHP) {
			// TODO: confirm this.. i think this is the way how status_cpy() works
			if (includeHP == true) {
				HP = status.HP;
				SP = status.SP;
			}
			HPMax = status.HPMax;
			SPMax = status.SPMax;
			Str = status.Str;
			Agi = status.Agi;
			Vit = status.Vit;
			Int = status.Int;
			Dex = status.Dex;
			Luk = status.Luk;
			AtkBase = status.AtkBase;
			MagicAtkMin = status.MagicAtkMin;
			MagicAtkMax = status.MagicAtkMax;
			Speed = status.Speed;
			AMotion = status.AMotion;
			ADelay = status.ADelay;
			DMotion = status.DMotion;
			Mode = status.Mode;
			Hit = status.Hit;
			Flee = status.Flee;
			Flee2 = status.Flee2;
			Crit = status.Crit;
			Def2 = status.Def2;
			MDef2 = status.MDef2;
			AspdRate = status.AspdRate;
			DefEle = status.DefEle;
			EleLv = status.EleLv;
			Size = status.Size;
			Race = status.Race;
			Def = status.Def;
			MDef = status.MDef;
			Rhw = status.Rhw;
			Lhw = status.Lhw;
		}
		public object Clone() {
			WorldObjectStatus status = new WorldObjectStatus(Object);
			status.LoadFromStatus(this);

			return status;
		}
		/// <summary>
		/// Clone-like copys all values
		/// </summary>
		/// <param name="status"></param>
		public void LoadFromStatus(WorldObjectStatus status) {
			LoadFromStatus(status, true);
		}
		private void CalculateRegenData(WorldObjectStatus status, WorldObjectRegenerationData data) {

		}
		private ushort CalculateBaseAtk(WorldObjectStatus status) {
			return status.AtkBase;
		}
		private ushort CalculateBaseAmotion(WorldObjectStatus status) {
			return 0;
		}
		private ushort CalculateBaseMatkMax(WorldObjectStatus status) {
			return 0;
		}
		private uint CalculateBasePcMaxSP(Character character, WorldObjectStatus status) {
			return 0;
		}