public void meleeAttack(CanMeleeAttack from, Attackable to) {
		int damage = 0, counterdamage = 0;
		
		// Compute damage according to specifics
		damage = (int)(from.getStrength() * 0.5) +from.getMeleeDamageBonus();
		damage = genericAttack(from, to, damage);
		
		CombatEvent evt = new CombatEvent(from, to, AttackType.Melee, damage, true);
		
		Object[] listeners = eventListeners.getListenerList();
        
        for (int i = 0; i < listeners.length; i += 2) {
            if (listeners[i] == CombatListener.class) {
                ((CombatListener)listeners[i+1]).CombatEventOccurred(evt);
            }
        }
		
		
		// Can we counter?
		if (to.getStrength() > 70 && to.getHp() > 0 && from instanceof Attackable && to instanceof CanMeleeAttack) {
			System.out.println("Condition");
			
			Attackable tmpto = (Attackable)from;
			from = (CanMeleeAttack)to;
			to = tmpto;
			
			counterdamage = (int)(from.getStrength() * 0.3) + from.getMeleeDamageBonus();
			counterdamage = genericAttack(from, to, counterdamage);
			
			evt = new CombatEvent(from, to, AttackType.Melee, counterdamage, true);
			
	        for (int i = 0; i < listeners.length; i += 2) {
	            if (listeners[i] == CombatListener.class) {
	                ((CombatListener)listeners[i+1]).CombatEventOccurred(evt);
	            }
	        }
		}		
	}