Código PHP:
$this->nivel = $nivel;
$this->armas = $armas;
$this->ropas = $vestimenta;
Esa parte en tu metodo habilidadPersonaje no la necesitas (al inicio de tu clase), ya que al momento de llamar al metodo habilidadPersonaje, $nivel, $armas, $vestimenta, son nulas o no existen, y se las estas asignando a tus variables de tu clase $nivel, $armas y $vestimenta.
Recuerda cuando usamos la sintaxis $this->nivel, nos estamos refiriendo a la variable de la clase y no a la variable dentro de la funcion (esa es local), asi que solo usa tu clase de la forma que la ocupas.
Otro tip es asignar variables por defecto en el constructor, lo que podrias hacerlo asi:
Código PHP:
class Personaje
{
public $tipo;
public $habilidad;
public $velocidad;
public $vida;
public $golpe;
public $dinero;
public $nivel;
public $armas;
public $vestimenta;
public function __construct() {
$this->habilidad = "15";
$this->velocidad = "30";
$this->vida = "200";
$this->golpe = "10";
$this->dinero = "0.00";
$this->nivel = "2";
$this->armas = array();
$this->vestimenta = array();
}
public function habilidadPersonaje($tipo)
{
$this->tipo = $tipo;
switch($this->tipo) {
case 'Knight':
if(($this->nivel>1) && ($this->nivel<=5)) {
//$this->habilidad = $this->habilidad; // No lo modificamos
// Armas
$this->armas['Principal'] = "Navaja";
$this->armas['Secundaria'] = "Piedra";
// Vestimenta
$this->ropas['Cabeza'] = "Gorro de papel";
$this->ropas['Pecho'] = "Polera";
$this->ropas['Piernas'] = "Pantalon de papel";
$this->ropas['Pies'] = "Sandalias";
}
break;
}
}
}
$personaje = new Personaje();
$personaje->habilidadPersonaje('Knight');