From a96c2312d023a87b4d90033625f08371c2cb3944 Mon Sep 17 00:00:00 2001 From: Hide_D Date: Sat, 24 Feb 2024 11:21:04 +0000 Subject: [PATCH] =?UTF-8?q?game,=20feat:=20=ED=84=B4=20=EC=8B=9C=EA=B0=84?= =?UTF-8?q?=20=EC=A7=80=EC=A0=95=20=EB=B0=A9=EC=8B=9D=EC=9D=84=2030?= =?UTF-8?q?=EB=8B=A8=EA=B3=84=20=EC=A4=91=20=EC=84=A0=ED=83=9D=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD=20-=201=EB=B6=84?= =?UTF-8?q?=EC=84=9C=EB=B2=84=EC=9D=B8=20=EA=B2=BD=EC=9A=B0=20120=EC=B4=88?= =?UTF-8?q?=20=EB=8B=A8=EC=9C=84=EB=A1=9C=20-=20=EC=9C=A0=EC=82=B0?= =?UTF-8?q?=ED=8F=AC=EC=9D=B8=ED=8A=B8=203000=20->=202500?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/sammo/API/General/Join.php | 17 +++-- hwe/sammo/GameConstBase.php | 2 +- hwe/ts/PageJoin.vue | 116 ++++++++++++++------------------- hwe/ts/defs/API/General.ts | 2 +- 4 files changed, 62 insertions(+), 75 deletions(-) diff --git a/hwe/sammo/API/General/Join.php b/hwe/sammo/API/General/Join.php index 9251cc47..d9b14f87 100644 --- a/hwe/sammo/API/General/Join.php +++ b/hwe/sammo/API/General/Join.php @@ -54,7 +54,7 @@ class Join extends \sammo\BaseAPI 'leadership', 'strength', 'intel', - 'inheritTurntime', + 'inheritTurntimeZone', ]) ->rule('boolean', [ 'pic' @@ -72,7 +72,8 @@ class Join extends \sammo\BaseAPI ], GameConst::$defaultStatMax) ->rule('in', 'character', array_merge(GameConst::$availablePersonality, ['Random'])) ->rule('in', 'inheritSpecial', GameConst::$availableSpecialWar) - ->rule('min', 'inheritTurntime', 0) + ->rule('min', 'inheritTurntimeZone', 0) + ->rule('max', 'inheritTurntimeZone', 29) ->rule('in', 'inheritCity', array_keys(CityConst::all())) ->rule('integerArray', 'inheritBonusStat'); @@ -139,11 +140,11 @@ class Join extends \sammo\BaseAPI $intel = $this->args['intel']; $inheritSpecial = $this->args['inheritSpecial'] ?? null; - $inheritTurntime = $this->args['inheritTurntime'] ?? null; + $inheritTurntimeZone = $this->args['inheritTurntimeZone'] ?? null; $inheritCity = $this->args['inheritCity'] ?? null; $inheritBonusStat = $this->args['inheritBonusStat'] ?? null; - if ($inheritTurntime !== null && $inheritCity !== null) { + if ($inheritTurntimeZone !== null && $inheritCity !== null) { return '턴과 도시를 동시에 지정할 수 없습니다.'; } @@ -235,7 +236,7 @@ class Join extends \sammo\BaseAPI if ($inheritSpecial !== null) { $inheritRequiredPoint += GameConst::$inheritBornSpecialPoint; } - if ($inheritTurntime !== null) { + if ($inheritTurntimeZone !== null) { $inheritRequiredPoint += GameConst::$inheritBornTurntimePoint; } @@ -350,12 +351,14 @@ class Join extends \sammo\BaseAPI $experience *= 0.8; } - if ($inheritTurntime !== null) { - $inheritTurntime = $inheritTurntime % ($admin['turnterm'] * 60); + if ($inheritTurntimeZone !== null) { + $inheritTurntime = $inheritTurntimeZone * ($admin['turnterm'] * 2); + $inheritTurntime += $rng->nextRangeInt(0, Util::clamp($admin['turnterm'] * 2 - 1, 0)); $userLogger->push(sprintf("턴 시간 %02d:%02d 로 지정", intdiv($inheritTurntime, 60), $inheritTurntime % 60), "inheritPoint"); $inheritTurntime += $rng->nextRangeInt(0, 999999) / 1000000; + $turntime = new \DateTimeImmutable(cutTurn($admin['turntime'], $admin['turnterm'])); $turntime = $turntime->add(TimeUtil::secondsToDateInterval($inheritTurntime)); $turntime = TimeUtil::format($turntime, true); diff --git a/hwe/sammo/GameConstBase.php b/hwe/sammo/GameConstBase.php index 1efc3341..73d02753 100644 --- a/hwe/sammo/GameConstBase.php +++ b/hwe/sammo/GameConstBase.php @@ -216,7 +216,7 @@ class GameConstBase public static $minMonthToAllowInheritItem = 4; public static $inheritBornSpecialPoint = 6000; - public static $inheritBornTurntimePoint = 3000; + public static $inheritBornTurntimePoint = 2500; public static $inheritBornCityPoint = 1000; public static $inheritBornStatPoint = 1000; public static $inheritItemUniqueMinPoint = 5000; diff --git a/hwe/ts/PageJoin.vue b/hwe/ts/PageJoin.vue index b79a32ee..e6743b75 100644 --- a/hwe/ts/PageJoin.vue +++ b/hwe/ts/PageJoin.vue @@ -186,58 +186,45 @@
-
- -
-
-
- -
-
- +
+
턴 시간 지정
+
+
-
-
추가 능력치 고정
+
+
추가 능력치 고정(통/무/지)
+
+
+
+
@@ -284,7 +271,7 @@ import TopBackBar from "@/components/TopBackBar.vue"; import { getIconPath } from "@util/getIconPath"; import { isBrightColor } from "@util/isBrightColor"; import { abilityLeadint, abilityLeadpow, abilityPowint, abilityRand } from "@util/generalStats"; -import { shuffle, sum } from "lodash-es"; +import { range, shuffle, sum } from "lodash-es"; import NumberInputWithInfo from "@/components/NumberInputWithInfo.vue"; import { SammoAPI } from "./SammoAPI"; import type { JoinArgs } from "./defs/API/General"; @@ -378,7 +365,7 @@ watch(gameConstStore, (gameConst) => { inheritCity: undefined, inheritBonusStat: [0, 0, 0], inheritSpecial: undefined, - inheritTurntime: undefined, + inheritTurntimeZone: undefined, }; }); @@ -462,7 +449,7 @@ const inheritRequiredPoint = computed(() => { if (args.value.inheritSpecial !== undefined) { inheritRequiredPoint += gameConst.inheritBornSpecialPoint; } - if (args.value.inheritTurntime !== undefined) { + if (args.value.inheritTurntimeZone !== undefined) { inheritRequiredPoint += gameConst.inheritBornTurntimePoint; } if (args.value.inheritBonusStat !== undefined && sum(args.value.inheritBonusStat) != 0) { @@ -494,21 +481,41 @@ watch(inheritCity, (newValue: undefined | number) => { args.value.inheritCity = inheritCity.value; }); -const inheritTurnTimeSet = ref(false); -watch(inheritTurnTimeSet, (newValue: boolean) => { - if (!args.value) throw "nyc"; - if (!newValue) { - args.value.inheritTurntime = undefined; - return; +const inheritTurnTimeZone = ref(); +const turnTimeZoneList: string[] = (()=>{ + const result: string[] = []; + const zoneSec = turnterm * (60 / 30); // 1 / 60 + let zoneCur = 0; + for(const idx of range(30)){ + const zoneNext = zoneCur + zoneSec; + + const zoneCurMin = Math.floor(zoneCur / 60); + const zoneCurSec = zoneCur % 60; + const zoneCurText = `${zoneCurMin.toString().padStart(2, "0")}:${zoneCurSec.toString().padStart(2, "0")}.000`; + + const zoneCurEnd = zoneCur + zoneSec - 1; + const zoneCurEndMin = Math.floor(zoneCurEnd / 60); + const zoneCurEndSec = zoneCurEnd % 60; + const zoneCurEndText = `${zoneCurEndMin.toString().padStart(2, "0")}:${zoneCurEndSec.toString().padStart(2, "0")}.999`; + + // aa:bb.000 ~ cc:dd.999 + const zoneStr = `${zoneCurText} ~ ${zoneCurEndText}`; + result.push(zoneStr); + zoneCur = zoneNext; } - args.value.inheritTurntime = inheritTurnTimeMinute.value * 60 + inheritTurnTimeSecond.value; + return result; +})(); + +watch(inheritTurnTimeZone, (newValue: undefined | number) => { + if (!args.value) throw "nyc"; + args.value.inheritTurntimeZone = inheritTurnTimeZone.value; }); watch( - [inheritCity, inheritTurnTimeSet], - ([newInheritCity, newInheritTurnTimeSet], [oldInheritCity, oldInheritTurnTimeSet]) => { - if (newInheritCity === undefined || newInheritTurnTimeSet === false) { + [inheritCity, inheritTurnTimeZone], + ([newInheritCity, newInheritTurnTimeZone], [oldInheritCity, oldInheritTurnTimeZone]) => { + if (newInheritCity === undefined || newInheritTurnTimeZone === undefined) { return; } alert("도시와 턴 시간을 동시에 설정할 수 없습니다."); @@ -516,33 +523,14 @@ watch( if (newInheritCity !== oldInheritCity) { inheritCity.value = undefined; } - if (newInheritTurnTimeSet !== oldInheritTurnTimeSet) { - inheritTurnTimeSet.value = false; + if (newInheritTurnTimeZone !== oldInheritTurnTimeZone) { + inheritTurnTimeZone.value = undefined; } }, { immediate: true } ); -const inheritTurnTimeMinute = ref(0); -watch(inheritTurnTimeMinute, (newValue: number) => { - if (!args.value) throw "nyc"; - if (!inheritTurnTimeSet.value) { - args.value.inheritTurntime = undefined; - return; - } - args.value.inheritTurntime = newValue * 60 + inheritTurnTimeSecond.value; -}); -const inheritTurnTimeSecond = ref(0); -watch(inheritTurnTimeSecond, (newValue: number) => { - if (!args.value) throw "nyc"; - - if (!inheritTurnTimeSet.value) { - args.value.inheritTurntime = undefined; - return; - } - args.value.inheritTurntime = inheritTurnTimeMinute.value * 60 + newValue; -});