id(); $table->foreignId('user_id')->nullable()->unique()->constrained('users')->nullOnDelete(); $table->foreignId('city_id')->constrained('cities')->cascadeOnDelete(); $table->string('name', 120); $table->unsignedTinyInteger('skin')->default(1); $table->unsignedTinyInteger('hair')->default(1); $table->unsignedTinyInteger('shirt')->default(1); $table->decimal('pos_x', 10, 2)->default(0); $table->decimal('pos_y', 10, 2)->default(0); $table->decimal('pos_z', 10, 2)->default(0); $table->decimal('money', 12, 2)->default(100); $table->unsignedTinyInteger('energy')->default(100); $table->unsignedTinyInteger('hunger')->default(100); $table->unsignedTinyInteger('thirst')->default(100); $table->string('state', 20)->default('awake')->index(); $table->foreignId('job_id')->nullable()->constrained('job_positions')->nullOnDelete(); $table->foreignId('house_id')->nullable(); $table->unsignedTinyInteger('education')->default(0); $table->boolean('is_online')->default(false); $table->timestamp('last_tick_at')->nullable(); $table->timestamps(); $table->index(['city_id', 'state']); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('characters'); } };