@SuppressWarnings("unchecked")
	public Action clone() {
		Action a2 = null;
		try {
			a2 = (Action) super.clone();
		} catch(CloneNotSupportedException e) {
			e.printStackTrace();
			System.exit(1);
		}
		if (this.targetBuff != null) {
			a2.targetBuff = this.targetBuff.clone();
		}
		if (this.originBuff != null) {
			a2.originBuff = this.originBuff.clone();
		}
		// targets contents shallow-copied
		a2.targets = (ArrayList<Character>) this.targets.clone();
		// origin shallow-copied
		// name shallow-copied
		a2.actualEffects = new int[this.actualEffects.length];
		for (int i = 0; i < this.actualEffects.length; i++) {
			a2.actualEffects[i] = this.actualEffects[i];
		}
		return a2;
	}