public boolean performIntercourse(Human target, boolean protection){
		Random rand = new Random(System.currentTimeMillis());
		boolean willing = rand.nextBoolean();
		if (willing){
			human.getLife().setIsExcited(rand.nextBoolean());
			if (protection){
				if (!human.getIsSterile() || !target.getIsSterile()){
					// Means that they will have a baby.
					Human woman = null;
					Human man = null;
					Human baby = target.bornBaby(this.family, target, "Axel", "Jeppsson");
					if (target.getIdentity().getGender() == Gender.FEMALE){
						man = this.getHuman();
						woman = target;
						target.getEvents().onBorn(target);
						baby.getHumanFamily().setMother(target);
						baby.getHumanFamily().setFather(this.human);
					} else if (target.getIdentity().getGender() == Gender.MALE){
						woman = this.getHuman();
						man = target;
						this.human.getEvents().onBorn(this.human);
						baby.getHumanFamily().setMother(this.human);
						baby.getHumanFamily().setFather(target);
					}
					System.out.println(this.getHuman().getIdentity().getFirstName() + " performed intercourse to " + target.getIdentity().getFirstName() + "\n" + 
									   man.getIdentity().getFirstName() + " now made " + woman.getIdentity().getFirstName() + " pregnant.");
					target.getLife().setIsExcited(true);
					human.getLife().setIsExcited(true);
					woman.bornBaby(this.getFamily(), man, "The first name", "The last name");
				} else {
					// Means one of them are sterile so that they can't have a child.
					target.getLife().setIsDesperate(true);
					target.getLife().setIsDepressed(true);
				}
			}
			return true;
		} else {
			human.getLife().setIsDepressed(true);
			return false;
		}
	}