diff --git a/app/Filament/Resources/System/MedalResource.php b/app/Filament/Resources/System/MedalResource.php
index 1c500cec..73a316e4 100644
--- a/app/Filament/Resources/System/MedalResource.php
+++ b/app/Filament/Resources/System/MedalResource.php
@@ -70,6 +70,12 @@ class MedalResource extends Resource
->label(__('medal.fields.sale_end_time'))
->helperText(__('medal.fields.sale_end_time_help'))
,
+ Forms\Components\TextInput::make('bonus_addition_factor')
+ ->label(__('medal.fields.bonus_addition_factor'))
+ ->helperText(__('medal.fields.bonus_addition_factor_help'))
+ ->numeric()
+ ->default(0)
+ ,
Forms\Components\Textarea::make('description')
->label(__('label.description'))
,
@@ -89,6 +95,7 @@ class MedalResource extends Resource
->label(__('medal.fields.sale_begin_end_time'))
->formatStateUsing(fn ($record) => new HtmlString(sprintf('%s ~
%s', $record->sale_begin_time ?? '--', $record->sale_end_time ?? '--')))
,
+ Tables\Columns\TextColumn::make('bonus_addition_factor')->label(__('medal.fields.bonus_addition_factor')),
Tables\Columns\TextColumn::make('price')->label(__('label.price')),
Tables\Columns\TextColumn::make('duration')->label(__('label.medal.duration')),
diff --git a/app/Jobs/CalculateUserSeedBonus.php b/app/Jobs/CalculateUserSeedBonus.php
index 7e3b5c69..4b06682b 100644
--- a/app/Jobs/CalculateUserSeedBonus.php
+++ b/app/Jobs/CalculateUserSeedBonus.php
@@ -91,6 +91,11 @@ class CalculateUserSeedBonus implements ShouldQueue
$all_bonus += $haremAddition;
$bonusLog .= ", haremAdditionFactor: $haremAdditionFactor, haremBonus: $haremBonus, haremAddition: $haremAddition, all_bonus: $all_bonus";
}
+ if ($seedBonusResult['medal_additional_factor'] > 0) {
+ $medalAddition = $seedBonusResult['medal_bonus'] * $seedBonusResult['medal_additional_factor'];
+ $all_bonus += $medalAddition;
+ $bonusLog .= ", medalAdditionFactor: {$seedBonusResult['medal_additional_factor']}, medalBonus: {$seedBonusResult['medal_bonus']}, medalAddition: $medalAddition, all_bonus: $all_bonus";
+ }
$dividend = 3600 / $autoclean_interval_one;
$all_bonus = $all_bonus / $dividend;
$seed_points = $seedBonusResult['seed_points'] / $dividend;
diff --git a/app/Models/Medal.php b/app/Models/Medal.php
index 271c8651..a76dfca7 100644
--- a/app/Models/Medal.php
+++ b/app/Models/Medal.php
@@ -17,7 +17,7 @@ class Medal extends NexusModel
protected $fillable = [
'name', 'description', 'image_large', 'image_small', 'price', 'duration', 'get_type',
- 'display_on_medal_page', 'sale_begin_time', 'sale_end_time', 'inventory',
+ 'display_on_medal_page', 'sale_begin_time', 'sale_end_time', 'inventory', 'bonus_addition_factor',
];
public $timestamps = true;
diff --git a/database/migrations/2023_01_26_210814_add_bonus_addition_factor_to_medals_table.php b/database/migrations/2023_01_26_210814_add_bonus_addition_factor_to_medals_table.php
new file mode 100644
index 00000000..17eb44f7
--- /dev/null
+++ b/database/migrations/2023_01_26_210814_add_bonus_addition_factor_to_medals_table.php
@@ -0,0 +1,32 @@
+float('bonus_addition_factor')->default(0);
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('medals', function (Blueprint $table) {
+ $table->dropColumn(['bonus_addition_factor']);
+ });
+ }
+};
diff --git a/include/constants.php b/include/constants.php
index c89c35dd..261c281c 100644
--- a/include/constants.php
+++ b/include/constants.php
@@ -1,6 +1,6 @@
0) {
$rowSpan++;
$hasHaremAddition = true;
@@ -6260,6 +6270,10 @@ function build_bonus_table(array $user, array $bonusResult = [], array $options
$rowSpan++;
$hasOfficialAddition = true;
}
+ if ($bonusResult['medal_additional_factor'] > 0) {
+ $rowSpan++;
+ $hasMedalAddition = true;
+ }
$table = sprintf('
| %s | %s | %s | %s | %s | %s | %s |