From 4467b156362b9d227799f93e5626c85ceb0e404a Mon Sep 17 00:00:00 2001 From: Jaehoon-So Date: Sat, 20 Jan 2024 00:45:39 +0900 Subject: [PATCH 01/14] =?UTF-8?q?fix:=20html,=20controller=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mangmae/gongnomok/ItemController.java | 244 ------------------ .../accessory/AccessoryController.java | 38 +++ .../armor/CommonArmorController.java | 72 ++++++ .../armor/MagicianArmorController.java | 24 ++ .../weapon/BowmanWeaponController.java | 58 +++++ .../weapon/CommonWeaponController.java | 4 + .../weapon/MagicianWeaponController.java | 29 +++ .../weapon/ThiefWeaponController.java | 65 +++++ .../weapon/WarriorWeaponController.java | 51 ++++ .../img/item/weapon/thief/dragon-tail-raw.png | Bin 0 -> 569 bytes .../img/item/weapon/thief/dragon-tail.png | Bin 0 -> 620 bytes .../static/img/item/weapon/thief/geta-raw.png | Bin 0 -> 398 bytes .../static/img/item/weapon/thief/geta.png | Bin 0 -> 453 bytes src/main/resources/static/index.html | 33 +++ .../item/weapon/{ => bowman}/battle-bow.html | 0 .../item/weapon/{ => bowman}/golden-crow.html | 0 .../weapon/{ => bowman}/golden-hinkel.html | 0 .../item/weapon/{ => bowman}/heckler.html | 0 .../item/weapon/{ => bowman}/olympus.html | 0 .../item/weapon/{ => bowman}/rower.html | 0 .../item/weapon/{ => bowman}/ryden.html | 0 .../item/weapon/{ => bowman}/vaulter.html | 0 .../item/weapon/{ => magician}/arc-staff.html | 0 .../weapon/{ => magician}/evil-wings.html | 0 .../weapon/{ => magician}/wooden-wand.html | 0 .../templates/item/weapon/thief/bazlud.html | 10 + .../weapon/{ => thief}/blood-gigantic.html | 0 .../item/weapon/{ => thief}/brown-scarab.html | 0 .../item/weapon/{ => thief}/dark-avarice.html | 0 .../item/weapon/thief/dragon-tail.html | 10 + .../templates/item/weapon/thief/geta.html | 10 + .../item/weapon/thief/korean-pan.html | 10 + .../item/weapon/{ => thief}/meba.html | 0 .../templates/item/weapon/thief/shinkita.html | 10 + .../item/weapon/{ => warrior}/lion-fang.html | 0 .../item/weapon/{ => warrior}/lion-heart.html | 0 .../item/weapon/{ => warrior}/nakamaki.html | 0 .../weapon/{ => warrior}/nine-dragon.html | 0 .../{ => warrior}/zeco/zeco-accurate.html | 0 .../{ => warrior}/zeco/zeco-select.html | 0 .../{ => warrior}/zeco/zeco-strong.html | 0 41 files changed, 424 insertions(+), 244 deletions(-) delete mode 100644 src/main/java/mangmae/gongnomok/ItemController.java create mode 100644 src/main/java/mangmae/gongnomok/controller/accessory/AccessoryController.java create mode 100644 src/main/java/mangmae/gongnomok/controller/armor/CommonArmorController.java create mode 100644 src/main/java/mangmae/gongnomok/controller/armor/MagicianArmorController.java create mode 100644 src/main/java/mangmae/gongnomok/controller/weapon/BowmanWeaponController.java create mode 100644 src/main/java/mangmae/gongnomok/controller/weapon/CommonWeaponController.java create mode 100644 src/main/java/mangmae/gongnomok/controller/weapon/MagicianWeaponController.java create mode 100644 src/main/java/mangmae/gongnomok/controller/weapon/ThiefWeaponController.java create mode 100644 src/main/java/mangmae/gongnomok/controller/weapon/WarriorWeaponController.java create mode 100644 src/main/resources/static/img/item/weapon/thief/dragon-tail-raw.png create mode 100644 src/main/resources/static/img/item/weapon/thief/dragon-tail.png create mode 100644 src/main/resources/static/img/item/weapon/thief/geta-raw.png create mode 100644 src/main/resources/static/img/item/weapon/thief/geta.png rename src/main/resources/templates/item/weapon/{ => bowman}/battle-bow.html (100%) rename src/main/resources/templates/item/weapon/{ => bowman}/golden-crow.html (100%) rename src/main/resources/templates/item/weapon/{ => bowman}/golden-hinkel.html (100%) rename src/main/resources/templates/item/weapon/{ => bowman}/heckler.html (100%) rename src/main/resources/templates/item/weapon/{ => bowman}/olympus.html (100%) rename src/main/resources/templates/item/weapon/{ => bowman}/rower.html (100%) rename src/main/resources/templates/item/weapon/{ => bowman}/ryden.html (100%) rename src/main/resources/templates/item/weapon/{ => bowman}/vaulter.html (100%) rename src/main/resources/templates/item/weapon/{ => magician}/arc-staff.html (100%) rename src/main/resources/templates/item/weapon/{ => magician}/evil-wings.html (100%) rename src/main/resources/templates/item/weapon/{ => magician}/wooden-wand.html (100%) create mode 100644 src/main/resources/templates/item/weapon/thief/bazlud.html rename src/main/resources/templates/item/weapon/{ => thief}/blood-gigantic.html (100%) rename src/main/resources/templates/item/weapon/{ => thief}/brown-scarab.html (100%) rename src/main/resources/templates/item/weapon/{ => thief}/dark-avarice.html (100%) create mode 100644 src/main/resources/templates/item/weapon/thief/dragon-tail.html create mode 100644 src/main/resources/templates/item/weapon/thief/geta.html create mode 100644 src/main/resources/templates/item/weapon/thief/korean-pan.html rename src/main/resources/templates/item/weapon/{ => thief}/meba.html (100%) create mode 100644 src/main/resources/templates/item/weapon/thief/shinkita.html rename src/main/resources/templates/item/weapon/{ => warrior}/lion-fang.html (100%) rename src/main/resources/templates/item/weapon/{ => warrior}/lion-heart.html (100%) rename src/main/resources/templates/item/weapon/{ => warrior}/nakamaki.html (100%) rename src/main/resources/templates/item/weapon/{ => warrior}/nine-dragon.html (100%) rename src/main/resources/templates/item/weapon/{ => warrior}/zeco/zeco-accurate.html (100%) rename src/main/resources/templates/item/weapon/{ => warrior}/zeco/zeco-select.html (100%) rename src/main/resources/templates/item/weapon/{ => warrior}/zeco/zeco-strong.html (100%) diff --git a/src/main/java/mangmae/gongnomok/ItemController.java b/src/main/java/mangmae/gongnomok/ItemController.java deleted file mode 100644 index 35a13a88..00000000 --- a/src/main/java/mangmae/gongnomok/ItemController.java +++ /dev/null @@ -1,244 +0,0 @@ -package mangmae.gongnomok; - - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -@RequestMapping -@Controller -public class ItemController { - - // 노가다 목장갑 - @GetMapping("/armor/work-glove") - public String workGlove() { - return "item/armor/work-glove"; - } - - // 파란색 가운 - @GetMapping("/armor/blue-robe-select") - public String blueRobeSelect() { - return "item/armor/blue-robe/blue-robe-select"; - } - - // 파란색 가운(민첩) - @GetMapping("/armor/blue-robe-dex") - public String blueRobeDex() { - return "item/armor/blue-robe/blue-robe-dex"; - } - - // 파란색 가운(행운) - @GetMapping("/armor/blue-robe-luk") - public String blueRobeLuk() { - return "item/armor/blue-robe/blue-robe-luk"; - } - - // 파란색 가운(지능) - @GetMapping("/armor/blue-robe-int") - public String blueRobeInt() { - return "item/armor/blue-robe/blue-robe-int"; - } - - // 허름한 망토 - @GetMapping("/armor/raggedy-cape-select") - public String raggedyCapeSelect() { - return "item/armor/raggedy-cape/raggedy-cape-select"; - } - - // 허름한 망토(힘) - @GetMapping("/armor/raggedy-cape-str") - public String raggedyCapeStr() { - return "item/armor/raggedy-cape/raggedy-cape-str"; - } - - // 허름한 망토(민첩) - @GetMapping("/armor/raggedy-cape-dex") - public String raggedyCapeDex() { - return "item/armor/raggedy-cape/raggedy-cape-dex"; - } - - // 허름한 망토(지력) - @GetMapping("/armor/raggedy-cape-int") - public String raggedyCapeInt() { - return "item/armor/raggedy-cape/raggedy-cape-int"; - } - - // 허름한 망토(행운) - @GetMapping("/armor/raggedy-cape-luk") - public String raggedyCapeLuk() { - return "item/armor/raggedy-cape/raggedy-cape-luk"; - } - - // 다크세라피스 - @GetMapping("/armor/dark-seraphis") - public String darkSeraphis() { - return "item/armor/dark-seraphis/dark-seraphis"; - } - - // 다크 아나카문 - @GetMapping("/armor/dark-anakamoon") - public String darkAnakamoon() { - return "item/armor/dark-anakamoon/dark-anakamoon"; - } - - //메바 - @GetMapping("/weapon/meba") - public String meba() { - return "item/weapon/meba"; - } - - // 다크 보닌 - @GetMapping("/weapon/dark-avarice") - public String darkAvarice() { - return "item/weapon/dark-avarice"; - } - - // 블러드 기간틱 - @GetMapping("/weapon/blood-gigantic") - public String bloodGigantic() { - return "item/weapon/blood-gigantic"; - } - - // 황갑충 - @GetMapping("/weapon/brown-scarab") - public String brownScarab() { - return "item/weapon/brown-scarab"; - } - - /** - * 궁수 - */ - //배틀보우 - @GetMapping("/weapon/battle-bow") - public String battleBow() { - return "item/weapon/battle-bow"; - } - - //라이덴 - @GetMapping("/weapon/ryden") - public String ryden() { - return "item/weapon/ryden"; - } - - //발터2000 - @GetMapping("/weapon/vaulter") - public String vaulter() { - return "item/weapon/vaulter"; - } - - //올림푸스 - @GetMapping("/weapon/olympus") - public String olympus() { - return "item/weapon/olympus"; - } - - //골든 힌켈 - @GetMapping("/weapon/golden-hinkel") - public String goldenHinkel() { - return "item/weapon/golden-hinkel"; - } - - //헤클러 - @GetMapping("/weapon/heckler") - public String heckler() { - return "item/weapon/heckler"; - } - - //로우어 - @GetMapping("/weapon/rower") - public String rower() { - return "item/weapon/rower"; - } - - //골든 크로우 - @GetMapping("/weapon/golden-crow") - public String goldenCrow() { - return "item/weapon/golden-crow"; - } - - //우드완드 - @GetMapping("/weapon/wooden-wand") - public String woodenWand() { - return "item/weapon/wooden-wand"; - } - - // 아크 스태프 - @GetMapping("/weapon/arc-staff") - public String arcStaff() { - return "item/weapon/arc-staff"; - } - - // 이블 윙즈 - @GetMapping("/weapon/evil-wings") - public String evilWings() { - return "item/weapon/evil-wings"; - } - - //하이랜더 - @GetMapping("/weapon/lion-heart") - public String lionHeart() { - return "item/weapon/lion-heart"; - } - - //호검 - @GetMapping("/weapon/lion-fang") - public String lionFang() { - return "item/weapon/lion-fang"; - } - //나카마키 - @GetMapping("/weapon/nakamaki") - public String nakamaki() { - return "item/weapon/nakamaki"; - } - - //zeco - @GetMapping("/weapon/zeco-select") - public String zeco() { - return "item/weapon/zeco/zeco-select"; - } - - @GetMapping("/weapon/zeco-accurate") - public String zecoSwift() { - return "item/weapon/zeco/zeco-accurate"; - } - - @GetMapping("/weapon/zeco-strong") - public String zecoStrong() { - return "item/weapon/zeco/zeco-strong"; - } - - //구룡도 - @GetMapping("/weapon/nine-dragon") - public String nineDragon() { - return "item/weapon/nine-dragon"; - } - - /** - * 장신구 - */ - //홀리 크로스링 - @GetMapping("/accessory/holy-cross-earring") - public String holyCrossRing() { - return "item/accessory/holy-cross-earring-select"; - } - - @GetMapping("/accessory/holy-cross-earring-health") - public String holyCrossRingHealth() { - return "item/accessory/holy-cross-earring-hp"; - } - - @GetMapping("/accessory/holy-cross-earring-swift") - public String holyCrossRingSwift() { - return "item/accessory/holy-cross-earring-dex"; - } - - @GetMapping("/accessory/holy-cross-earring-intel") - public String holyCrossRingIntel() { - return "item/accessory/holy-cross-earring-int"; - } - - @GetMapping("/accessory/holy-cross-earring-lucky") - public String holyCrossRingLucky() { - return "item/accessory/holy-cross-earring-luk"; - } -} diff --git a/src/main/java/mangmae/gongnomok/controller/accessory/AccessoryController.java b/src/main/java/mangmae/gongnomok/controller/accessory/AccessoryController.java new file mode 100644 index 00000000..67550691 --- /dev/null +++ b/src/main/java/mangmae/gongnomok/controller/accessory/AccessoryController.java @@ -0,0 +1,38 @@ +package mangmae.gongnomok.controller.accessory; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + + +@Controller +@RequestMapping("/accessory") +public class AccessoryController { + + //홀리 크로스링 + @GetMapping("/holy-cross-earring") + public String holyCrossRing() { + return "item/accessory/holy-cross-earring-select"; + } + + @GetMapping("/holy-cross-earring-health") + public String holyCrossRingHealth() { + return "item/accessory/holy-cross-earring-hp"; + } + + @GetMapping("/holy-cross-earring-swift") + public String holyCrossRingSwift() { + return "item/accessory/holy-cross-earring-dex"; + } + + @GetMapping("/holy-cross-earring-intel") + public String holyCrossRingIntel() { + return "item/accessory/holy-cross-earring-int"; + } + + @GetMapping("/holy-cross-earring-lucky") + public String holyCrossRingLucky() { + return "item/accessory/holy-cross-earring-luk"; + } + +} diff --git a/src/main/java/mangmae/gongnomok/controller/armor/CommonArmorController.java b/src/main/java/mangmae/gongnomok/controller/armor/CommonArmorController.java new file mode 100644 index 00000000..c8fa300c --- /dev/null +++ b/src/main/java/mangmae/gongnomok/controller/armor/CommonArmorController.java @@ -0,0 +1,72 @@ +package mangmae.gongnomok.controller.armor; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + + +@Controller +@RequestMapping("/armor") +public class CommonArmorController { + + // 노가다 목장갑 + @GetMapping("/work-glove") + public String workGlove() { + return "item/armor/work-glove"; + } + + // 파란색 가운 + @GetMapping("/blue-robe-select") + public String blueRobeSelect() { + return "item/armor/blue-robe/blue-robe-select"; + } + + // 파란색 가운(민첩) + @GetMapping("/blue-robe-dex") + public String blueRobeDex() { + return "item/armor/blue-robe/blue-robe-dex"; + } + + // 파란색 가운(행운) + @GetMapping("/blue-robe-luk") + public String blueRobeLuk() { + return "item/armor/blue-robe/blue-robe-luk"; + } + + // 파란색 가운(지능) + @GetMapping("/blue-robe-int") + public String blueRobeInt() { + return "item/armor/blue-robe/blue-robe-int"; + } + + // 허름한 망토 + @GetMapping("/raggedy-cape-select") + public String raggedyCapeSelect() { + return "item/armor/raggedy-cape/raggedy-cape-select"; + } + + // 허름한 망토(힘) + @GetMapping("/raggedy-cape-str") + public String raggedyCapeStr() { + return "item/armor/raggedy-cape/raggedy-cape-str"; + } + + // 허름한 망토(민첩) + @GetMapping("/raggedy-cape-dex") + public String raggedyCapeDex() { + return "item/armor/raggedy-cape/raggedy-cape-dex"; + } + + // 허름한 망토(지력) + @GetMapping("/raggedy-cape-int") + public String raggedyCapeInt() { + return "item/armor/raggedy-cape/raggedy-cape-int"; + } + + // 허름한 망토(행운) + @GetMapping("/raggedy-cape-luk") + public String raggedyCapeLuk() { + return "item/armor/raggedy-cape/raggedy-cape-luk"; + } + +} diff --git a/src/main/java/mangmae/gongnomok/controller/armor/MagicianArmorController.java b/src/main/java/mangmae/gongnomok/controller/armor/MagicianArmorController.java new file mode 100644 index 00000000..07fdf90b --- /dev/null +++ b/src/main/java/mangmae/gongnomok/controller/armor/MagicianArmorController.java @@ -0,0 +1,24 @@ +package mangmae.gongnomok.controller.armor; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + + +@Controller +@RequestMapping("/armor") +public class MagicianArmorController { + + // 다크세라피스 + @GetMapping("/dark-seraphis") + public String darkSeraphis() { + return "item/armor/dark-seraphis/dark-seraphis"; + } + + // 다크 아나카문 + @GetMapping("/dark-anakamoon") + public String darkAnakamoon() { + return "item/armor/dark-anakamoon/dark-anakamoon"; + } + +} diff --git a/src/main/java/mangmae/gongnomok/controller/weapon/BowmanWeaponController.java b/src/main/java/mangmae/gongnomok/controller/weapon/BowmanWeaponController.java new file mode 100644 index 00000000..0c1d6c40 --- /dev/null +++ b/src/main/java/mangmae/gongnomok/controller/weapon/BowmanWeaponController.java @@ -0,0 +1,58 @@ +package mangmae.gongnomok.controller.weapon; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.context.annotation.RequestScope; + +@RequestMapping("/weapon") +@Controller +public class BowmanWeaponController { + //배틀보우 + @GetMapping("/battle-bow") + public String battleBow() { + return "item/weapon/bowman/battle-bow"; + } + + //라이덴 + @GetMapping("/ryden") + public String vaulter() { + return "item/weapon/bowman/ryden"; + } + + //발터2000 + @GetMapping("/vaulter") + public String vaulter2000() { + return "item/weapon/bowman/vaulter"; + } + + //올림푸스 + @GetMapping("/olympus") + public String olyumpus() { + return "item/weapon/bowman/olympus"; + } + + //골든힌켈 + @GetMapping("/golden-hinkel") + public String goldenHinkel() { + return "item/weapon/bowman/golden-hinkel"; + } + + //헤클러 + @GetMapping("/heckler") + public String heckler() { + return "item/weapon/bowman/heckler"; + } + + //로우어 + @GetMapping("/rower") + public String rower() { + return "item/weapon/bowman/rower"; + } + + //골든 크로우 + @GetMapping("/golden-crow") + public String goldenCrow() { + return "item/weapon/bowman/golden-crow"; + } +} diff --git a/src/main/java/mangmae/gongnomok/controller/weapon/CommonWeaponController.java b/src/main/java/mangmae/gongnomok/controller/weapon/CommonWeaponController.java new file mode 100644 index 00000000..0e287bec --- /dev/null +++ b/src/main/java/mangmae/gongnomok/controller/weapon/CommonWeaponController.java @@ -0,0 +1,4 @@ +package mangmae.gongnomok.controller.weapon; + +public class CommonWeaponController { +} diff --git a/src/main/java/mangmae/gongnomok/controller/weapon/MagicianWeaponController.java b/src/main/java/mangmae/gongnomok/controller/weapon/MagicianWeaponController.java new file mode 100644 index 00000000..82732bdd --- /dev/null +++ b/src/main/java/mangmae/gongnomok/controller/weapon/MagicianWeaponController.java @@ -0,0 +1,29 @@ +package mangmae.gongnomok.controller.weapon; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +@RequestMapping("/weapon") +@Controller +public class MagicianWeaponController { + + //우드완드 + @GetMapping("/wooden-wand") + public String woodenWand() { + return "item/weapon/magician/wooden-wand"; + } + + // 아크 스태프 + @GetMapping("/arc-staff") + public String arcStaff() { + return "item/weapon/magician/arc-staff"; + } + + // 이블 윙즈 + @GetMapping("/evil-wings") + public String evilWings() { + return "item/weapon/magician/evil-wings"; + } + +} diff --git a/src/main/java/mangmae/gongnomok/controller/weapon/ThiefWeaponController.java b/src/main/java/mangmae/gongnomok/controller/weapon/ThiefWeaponController.java new file mode 100644 index 00000000..5b867bb8 --- /dev/null +++ b/src/main/java/mangmae/gongnomok/controller/weapon/ThiefWeaponController.java @@ -0,0 +1,65 @@ +package mangmae.gongnomok.controller.weapon; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +@RequestMapping("/weapon") +public class ThiefWeaponController { + + //메바 + @GetMapping("/meba") + public String meba() { + return "item/weapon/thief/meba"; + } + + //다크 보닌 + @GetMapping("/dark-avarice") + public String darkAvarice() { + return "item/weapon/thief/dark-avarice"; + } + + //블러드 기간틱 + @GetMapping("/blood-gigantic") + public String bloodGigantic() { + return "item/weapon/thief/blood-gigantic"; + } + + //황갑충 + @GetMapping("/brown-scarab") + public String brownScarab() { + return "item/weapon/thief/brown-scarab"; + } + + //태극부채 + @GetMapping("/korean-pan") + public String koreanPan() { + return "item/weapon/thief/korean-pan"; + } + + //베즐러드 + @GetMapping("/bazlud") + public String bezlud() { + return "item/weapon/thief/bazlud"; + } + + //신기타 + @GetMapping("/shinkita") + public String shinkita() { + return "item/weapon/thief/shinkita"; + } + + //게타 + @GetMapping("/geta") + public String geta() { + return "item/weapon/thief/geta"; + } + + //용천권 + @GetMapping("/dragon-tail") + public String dragonTail() { + return "item/weapon/thief/dragon-tail"; + } + +} diff --git a/src/main/java/mangmae/gongnomok/controller/weapon/WarriorWeaponController.java b/src/main/java/mangmae/gongnomok/controller/weapon/WarriorWeaponController.java new file mode 100644 index 00000000..41e76d44 --- /dev/null +++ b/src/main/java/mangmae/gongnomok/controller/weapon/WarriorWeaponController.java @@ -0,0 +1,51 @@ +package mangmae.gongnomok.controller.weapon; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + + +@Controller +@RequestMapping("/weapon") +public class WarriorWeaponController { + + //하이랜더 + @GetMapping("/lion-heart") + public String lionHeart() { + return "item/weapon/warrior/lion-heart"; + } + + //호검 + @GetMapping("/lion-fang") + public String lionFang() { + return "item/weapon/warrior/lion-fang"; + } + //나카마키 + @GetMapping("/nakamaki") + public String nakamaki() { + return "item/weapon/warrior/nakamaki"; + } + + //제코 + @GetMapping("/zeco-select") + public String zeco() { + return "item/weapon/warrior/zeco/zeco-select"; + } + + @GetMapping("/zeco-accurate") + public String zecoSwift() { + return "item/weapon/warrior/zeco/zeco-accurate"; + } + + @GetMapping("/zeco-strong") + public String zecoStrong() { + return "item/weapon/warrior/zeco/zeco-strong"; + } + + //구룡도 + @GetMapping("/nine-dragon") + public String nineDragon() { + return "item/weapon/warrior/nine-dragon"; + } + +} diff --git a/src/main/resources/static/img/item/weapon/thief/dragon-tail-raw.png b/src/main/resources/static/img/item/weapon/thief/dragon-tail-raw.png new file mode 100644 index 0000000000000000000000000000000000000000..5da1616c8d278f43fa65c424925617ee1df47a3e GIT binary patch literal 569 zcmV-90>=G`P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0nSN8K~z{r#gc(_ zgD?z4vqDzr3SEH}vO-s27FNhC%)$zkJNul&F<>VR{qN}o3rTlYxcmdN#i>wqnxga`P|@G;qH77!0)BUImAR2T&LW`o8A|U;z2>x(ppU$XT?2 zZi>T1lK~Veu)6TyHJRWX-5#O80PjLc8TLsSt`R2QU|dr%xVmx(3=CJyvW6BV1_ z3<18mIm~L z2eEgTSh_ZWVR#qbn;?0d-xUXJM1b4`!iDsFbaQ~&L1LR&I;SDPO}G&ciL1uNmB;)b zvrTI7CXpK{g=z$Hpw>hZ$8!w8AwnXhaM0(yHg}WM#M6V-Ew|8n)W;B>^L#ZF&>Az5 zl&f9yE36FQ9MXxS_iuAFJQ=`qNc}A}!#`>O)C_(@{BrpPr%%V|<9pqY00000NkvXX Hu0mjf8UFQK literal 0 HcmV?d00001 diff --git a/src/main/resources/static/img/item/weapon/thief/dragon-tail.png b/src/main/resources/static/img/item/weapon/thief/dragon-tail.png new file mode 100644 index 0000000000000000000000000000000000000000..248fbc65e319c53bb687d5149138c66febe31c0d GIT binary patch literal 620 zcmV-y0+aoTP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0s%=xK~z{r#gYq= z!!Qg)OCc0Wp%g+P6iOi!jzTCDORoA8N z#2i~dwTWY*$pDEWtBc>R$%OUM^iZFGyO>gk)kzrF(1|w~2z2W|Y~VvYG$B4rk9Gsj z#1R9bU^)Hk5ykuaIA8nWr~&JPxYmDk16C#joFT$p*Vz*zDZT|0XL6ZnGT_94-p#~; zO;`^JxBdfGS{U%i;%*Z@*M!B|`T=<{{S%h3VF1{jHsOs7eIM8E_#*>*YYK?}#r2k- zh|7Q`hdMVK*xCaB0-`V+ZNfagTR-s@alsOgmckg)*90D=2X+q*SFPnb_PLA0C?Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0V7F7K~zXfy_10v zgCGn=S-}-t!4*17S8x`GV+B{R{KR0Sw2GR%yPSxScb}8s%(9jn3&4|KZ6Q(8xk*_T z!xCe3k!ImEO)gTBjpLY8&hu<4Wm!szr$@@1Pzx4NDZ8$xl7!Y$N(o`#zo@YYwG{KT`T=r6jCEP1q=b@=rwAE8Dy0T;r0Y8&KNG*P zRKPn=w?P{v-GLC?PDz__2Qk(^4L(+cfcGRY=Be|@*4@R&d{H%c=kM=TvItUr@s;?9 zHldbi8A|RU))jS`e4G%-Q_J){l)7@1LiH$*WE%9~R_EYdDVd~e6g3OMUzrALi@F3_ s?PMibqv|$m+dY^s>QQO}lo26(03_t&Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0a{5!K~zXfy^{fz zgD?<8v490EV4)VyLM>q7EFcaGSl}|dOm0Y%Qraf--aJA`_A?9V8f)9#OdEu&-`16Z z0q5F>kBCpqLP2b*+?^km-EN#PL_5R)8(t z?@j!f{LY~i?tS{2Y$Ma10HKdl+Gd0w{HWrNSEVZ^l!>_u!vkz$17sdlcpq&nGUuNFG`+7Q^YA=ghSP v&}?zGy%Zi`0nKls)^DZOeK2a#qOSV`!ZZO0sQe2Y00000NkvXXu0mjfrm4aY literal 0 HcmV?d00001 diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index 67a72e90..b2403a5a 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -155,6 +155,39 @@

무기

+ + + + - +
+
+ +

망지10%

+

INT+3

+
+
+ +

망지60%

+

INT+2

+
+
+ +

망지100%

+

INT+1

+
+
+ +
+
+
+
+ + + + 1개 + +
+
+
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+
+ + 0 +
+ +
+
+ + + + +
+
+
+ + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-lucky.html b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-lucky.html new file mode 100644 index 00000000..ef90d966 --- /dev/null +++ b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-lucky.html @@ -0,0 +1,184 @@ + + + + + + + + + 빨간색 가이아의 망토(민첩) + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+
+
+
+
+
+
+

+ 빨간색 가이아의 망토

+ + +
+
+
+ + +
+
+
+
+

REQ LEV : 30

+

REQ STR : 0

+

REQ DEX : 0

+

REQ INT : 0

+

REQ LUK : 0

+

REQ POP : -

+
+
+

ITEM LEV: -

+

ITEM EXP: -

+
+ +
+
+ + +
+

초보자 전사 마법사 궁수 도적 해적

+
+

장비 분류 : 망토

+ +

물리 방어력 : +19

+

마법 방어력 : +24

+

업그레이드 가능 횟수 : 5

+
+
+ +
+
+
+ + + + +
+
+
+ +

망행10%

+

LUK+3

+
+
+ +

망행60%

+

LUK+2

+
+
+ +

망행100%

+

LUK+1

+
+
+ +
+
+
+
+ + + + 1개 + +
+
+
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+
+ + 0 +
+ +
+
+
+
+
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-strong.html b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-strong.html new file mode 100644 index 00000000..3a0fd23b --- /dev/null +++ b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-strong.html @@ -0,0 +1,184 @@ + + + + + + + + + 빨간색 가이아의 망토(힘) + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+
+
+
+
+
+
+

+ 빨간색 가이아의 망토

+ + +
+
+
+ + +
+
+
+
+

REQ LEV : 30

+

REQ STR : 0

+

REQ DEX : 0

+

REQ INT : 0

+

REQ LUK : 0

+

REQ POP : -

+
+
+

ITEM LEV: -

+

ITEM EXP: -

+
+ +
+
+ + +
+

초보자 전사 마법사 궁수 도적 해적

+
+

장비 분류 : 망토

+ +

물리 방어력 : +19

+

마법 방어력 : +24

+

업그레이드 가능 횟수 : 5

+
+
+ +
+
+
+ + + + +
+
+
+ +

망힘10%

+

STR+3

+
+
+ +

망힘10%

+

STR+2

+
+
+ +

망힘10%

+

STR+1

+
+
+ +
+
+
+
+ + + + 1개 + +
+
+
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+
+ + 0 +
+ +
+
+
+
+
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-swift.html b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-swift.html new file mode 100644 index 00000000..6f54e04b --- /dev/null +++ b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-swift.html @@ -0,0 +1,184 @@ + + + + + + + + + 빨간색 가이아의 망토(민첩) + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+
+
+
+
+
+
+

+ 빨간색 가이아의 망토

+ + +
+
+
+ + +
+
+
+
+

REQ LEV : 30

+

REQ STR : 0

+

REQ DEX : 0

+

REQ INT : 0

+

REQ LUK : 0

+

REQ POP : -

+
+
+

ITEM LEV: -

+

ITEM EXP: -

+
+ +
+
+ + +
+

초보자 전사 마법사 궁수 도적 해적

+
+

장비 분류 : 망토

+ +

물리 방어력 : +19

+

마법 방어력 : +24

+

업그레이드 가능 횟수 : 5

+
+
+ +
+
+
+ + + + +
+
+
+ +

망민10%

+

DEX+3

+
+
+ +

망민60%

+

DEX+2

+
+
+ +

망민100%

+

DEX+1

+
+
+ +
+
+
+
+ + + + 1개 + +
+
+
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+
+ + 0 +
+ +
+
+
+
+
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape.html b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape.html new file mode 100644 index 00000000..bab953b0 --- /dev/null +++ b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape.html @@ -0,0 +1,69 @@ + + + + + + + + + 빨간색 가이아의 망토 + + + + + + + + + + + + + + + + +
+ +
+
+
+
+
+ + + + +
+
+
+
+
+ + + \ No newline at end of file From 19384a262641b3b7bc3d9ba2a139f117833cef1e Mon Sep 17 00:00:00 2001 From: Jaehoon-So Date: Sat, 20 Jan 2024 04:10:51 +0900 Subject: [PATCH 05/14] =?UTF-8?q?fix:=201200-1500=20=ED=95=B4=EC=83=81?= =?UTF-8?q?=EB=8F=84=EC=97=90=EC=84=9C=20=EB=A9=94=EC=86=8C=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=EA=B0=80=20=EC=BB=A4=EC=A7=80=EB=8A=94=20?= =?UTF-8?q?=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/static/css/mobile/desktop-1200-1500.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/static/css/mobile/desktop-1200-1500.css b/src/main/resources/static/css/mobile/desktop-1200-1500.css index 32af2c9a..d9861a3b 100644 --- a/src/main/resources/static/css/mobile/desktop-1200-1500.css +++ b/src/main/resources/static/css/mobile/desktop-1200-1500.css @@ -582,6 +582,7 @@ .scroll-price-result img { display: inline-block; margin-right: 5px; + width: 3vw; } .scroll-price-result button { From 3ec5bf3fee8f0be4b92fb6eb8dcb6a5a211dd081 Mon Sep 17 00:00:00 2001 From: Jaehoon-So Date: Sun, 21 Jan 2024 06:03:49 +0900 Subject: [PATCH 06/14] delete: image --- src/main/resources/static/common/header.html | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/resources/static/common/header.html b/src/main/resources/static/common/header.html index 2c1a5285..f22246af 100644 --- a/src/main/resources/static/common/header.html +++ b/src/main/resources/static/common/header.html @@ -29,7 +29,6 @@
-
From f1b6b684a64e63ca4d31634c0f5cdd07013d4832 Mon Sep 17 00:00:00 2001 From: Jaehoon-So Date: Sat, 27 Jan 2024 19:21:53 +0900 Subject: [PATCH 07/14] add: actuator --- build.gradle | 7 +++++-- .../resources/{application.properties => application.yml} | 0 2 files changed, 5 insertions(+), 2 deletions(-) rename src/main/resources/{application.properties => application.yml} (100%) diff --git a/build.gradle b/build.gradle index 2bb6ee6f..ff217126 100644 --- a/build.gradle +++ b/build.gradle @@ -22,8 +22,11 @@ repositories { } dependencies { - implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' - implementation 'org.springframework.boot:spring-boot-starter-web' + + implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' //타임리프 + implementation 'org.springframework.boot:spring-boot-starter-web' //스프링 웹 + implementation 'org.springframework.boot:spring-boot-starter-actuator' //액츄에이터 + compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' diff --git a/src/main/resources/application.properties b/src/main/resources/application.yml similarity index 100% rename from src/main/resources/application.properties rename to src/main/resources/application.yml From abe49674e6a781b467f013f9939a57436942efa6 Mon Sep 17 00:00:00 2001 From: Jaehoon-So Date: Sat, 27 Jan 2024 22:28:20 +0900 Subject: [PATCH 08/14] add: prometheus --- build.gradle | 1 + src/main/resources/application.yml | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ff217126..5de51069 100644 --- a/build.gradle +++ b/build.gradle @@ -26,6 +26,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' //타임리프 implementation 'org.springframework.boot:spring-boot-starter-web' //스프링 웹 implementation 'org.springframework.boot:spring-boot-starter-actuator' //액츄에이터 + implementation 'io.micrometer:micrometer-registry-prometheus' //프로메테우스 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8b137891..f646b9fe 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1 +1,18 @@ - +management: + endpoints: + web: + exposure: + include: "*" + exclude: "env,beans" + endpoint: + health: + show-components: always + info: + java: + enabled: true + os: + enabled: true +server: + tomcat: + mbeanregistry: + enabled: true \ No newline at end of file From 05a497a2621194b565b9893232d2adc70a3cb93f Mon Sep 17 00:00:00 2001 From: Jaehoon-So Date: Sun, 28 Jan 2024 01:36:44 +0900 Subject: [PATCH 09/14] add: new two hand sword image --- .../img/item/weapon/warrior/blue-dragon-raw.png | Bin 0 -> 424 bytes .../img/item/weapon/warrior/blue-dragon.png | Bin 0 -> 509 bytes .../img/item/weapon/warrior/devil-sunrise-raw.png | Bin 0 -> 513 bytes .../img/item/weapon/warrior/devil-sunrise.png | Bin 0 -> 600 bytes .../img/item/weapon/warrior/doombringer-raw.png | Bin 0 -> 404 bytes .../img/item/weapon/warrior/doombringer.png | Bin 0 -> 482 bytes .../img/item/weapon/warrior/heaven-gate-raw.png | Bin 0 -> 463 bytes .../img/item/weapon/warrior/heaven-gate.png | Bin 0 -> 547 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/static/img/item/weapon/warrior/blue-dragon-raw.png create mode 100644 src/main/resources/static/img/item/weapon/warrior/blue-dragon.png create mode 100644 src/main/resources/static/img/item/weapon/warrior/devil-sunrise-raw.png create mode 100644 src/main/resources/static/img/item/weapon/warrior/devil-sunrise.png create mode 100644 src/main/resources/static/img/item/weapon/warrior/doombringer-raw.png create mode 100644 src/main/resources/static/img/item/weapon/warrior/doombringer.png create mode 100644 src/main/resources/static/img/item/weapon/warrior/heaven-gate-raw.png create mode 100644 src/main/resources/static/img/item/weapon/warrior/heaven-gate.png diff --git a/src/main/resources/static/img/item/weapon/warrior/blue-dragon-raw.png b/src/main/resources/static/img/item/weapon/warrior/blue-dragon-raw.png new file mode 100644 index 0000000000000000000000000000000000000000..b0458da7c95080a3ee1de6fe22c8e701ddbd0c8c GIT binary patch literal 424 zcmV;Z0ayNsP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0X<1XK~z{r?UdoM zgCG!uY2nq97Scj$c`c*`Yk4i$LRv@*m+Zm9p_tJ;hx3O!vjd#SeuH3el$e%%7fHB3 z6=F!%nv*2lh72Rus~Zf18SVn3fxn~VUD2uojGhq%Ve14VPZ1gZMh51?i-%}?!AwCY zJMIFr1VZf!!v$K4#B=d;`4qzXF8`T$E6U9%X1%^OR<^z)3~vW^0Y;5|x`aj7kY9Z! zz7UNNb6v9ufIfEzWA86+o%oq!Pk#n4zCsfLg(uVJZmh20zjGDAsxF{gpBZAuI@`^Ezm@8x};L zcLITCyD4bJF S88|io0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0g_2XK~z{r?UwCr z!yp)hSs^QQg{83k3rq=wx)g>5az*U9xZU?c*ni3IjJ*}%W(2c8zBN*^|3Vnv4y*!$nQNs}|&T!p(9R9)yKHgzwH% zgEdi#n)z2$X^lg2foN{tw!<1f!c^BnSo`tw_ln z%V3&YRkck7p)dgxX%tE=&w{j^2cs5!AfPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0hUQbK~z{r?Um7S zgD?<8X~8YH7PsIQs3k2>3oW<>TA&5OTUgBnaKeYB=!2cPkq`&_ywc#NGEM7Pm8QNG zSXFR>8oruodes9rwQXA`RM&M=-}gnJY!Yj$1T_r9yPl6p29L)>rlf!|bKj%se!u^K z;+pkbk_j+?VP?R1O`oAkY+r(KLJ=lHuIUJBoo7`_D#BsBg`?M_p3E$5qmwcSVm+KA zjfUr1PiIz2in%m@mngnbhBH)&^A)AE64dRc>gILee6Hvzo*EUwfNJOBFUMepqt<7# zNe1IMYRj0DkfF91I{xm$F&%d^>h-7Ri4li@y7`eYzQ5`~A++W(tO6C!Y(O}$P+R94i7t{&K z{DL|mnO{&RRVNg>piXKB#oAi`sw1c>6cefhs%gFffAgvdHs}YP00000NkvXXu0mjf DhJfB| literal 0 HcmV?d00001 diff --git a/src/main/resources/static/img/item/weapon/warrior/devil-sunrise.png b/src/main/resources/static/img/item/weapon/warrior/devil-sunrise.png new file mode 100644 index 0000000000000000000000000000000000000000..af609e7727797ad23aae9cf4fb05e9e3712446c5 GIT binary patch literal 600 zcmV-e0;m0nP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0qsddK~z{r?U&Jw zgD?<8X(277g=>Kp(gH193u%E`Xdx}o0xfWU1A|tCJCe+Cvpc z%sj0R$pSo|&qIVtpYuYI1Q@_bX2AHFI75|a-vZ$ZMVJUVS4U9uJgb&UMK}_#;fVF9 zotdRJx>5!~tcQD~(eQlM?#x;$#av47CCod@aE2;zzoJyF1?qH?+q4dx?-en{tA-;O zP)#ylIR-Nvp7&&v5)8wjmNBP7hFXKUV!7L?0vU?Lw*%39!ZUV2@2 z5Qae0{o$H?>9MYRcK@q7v^D4zhLiS|87VDJb~iiOLF?@ zF8>B!HyocwvzK!K+y!?B#oBBR^1)7={>OOg2x-3uwgKfwQh?nK9Zn6vDis;WP(B+k=-ju`&{0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0VzpDK~z{r?Ulg| zgD?z5S%Fztp(|vC%#vBU0xPgWR$v8J-^OVgNYz7ZE`5?!VpaCT2{7FNU4$Flu;s|R zaI_=}A(VKoo14U``LZlD&ogcN?jlhH(6|mSiLU}45?uk6aGOF;00+{13OVQQHdqUA zVbBWb888>X-6QJeDuCwZ0zkI_>sFv@ZX-}n0BcDz=64T@fKEWt3`;=**OD4f*@CMH zsDRrc#9GpfkAP0#+ZOyMFj7E^XhHW0P>hj_(I$cG-UKXP#gtOwq5!`TsHRZD{0yiF z0s?h-e2f4WSCLl2LjX{YpCX+w=OjYuox>ljp+}IXWDU|(pBgWTA|T7N$Ps3=0!nFq y@xB-a7w!nOn27Mf`%yp{DxlPl;;q~yFikH}rAtXs`Je*;0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0e4A6K~z{r?Umti zgD?z*S%DS00xM(%ufPgf!7Fryu8d~Pbm^Y$o{%5ZV-p$(=^FAj0FrkHfY<_zO8}F+4}h%z#%WsB{pq0$zzU>kl|lgm z_i5_&$}Ol>fBMZoU_nCp_)`*xUrtzy<&du>l(qBy65{TaZ}swPEZ<9K<|;=)tQ1 zFgb%T$>(OQ!?k7$L_dUp?5l_cwF(gC%v{TaG+T1o4hR4gt3e|`Y1?aSyAMVzx}stD Y25TU1HV2Gs$^ZZW07*qoM6N<$f*Iw!B>(^b literal 0 HcmV?d00001 diff --git a/src/main/resources/static/img/item/weapon/warrior/heaven-gate-raw.png b/src/main/resources/static/img/item/weapon/warrior/heaven-gate-raw.png new file mode 100644 index 0000000000000000000000000000000000000000..edebd15bacb4d8c1ca2d1bd08be4927e570e8bd6 GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^${@_a1|;QfZjJ;}jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc4Jn>3jv*25Zznx0JgmUu7O7~RI&IAb(OpgH zC%NJjwM$r6y%*lZ>bKsI(b~SETqfeg3q|WW9y)HqS$tiWO^+Ne?VMW5L8|3_Rd za7wFn*!aFbe@nDcXgc@qrar@ce^>54l%&Qy(MPRR|7mHf>s$5IM9G;P9)?dotmO+} zYP}#R+|<(Puwc%_!`r17ZFet}+$V7DhtAB71Y?(p$AhINlpZN}-5#!~A8=0dz3vx- znWy_+l(9Yjc5=fr)=QsvJ82pD7S4N~F8h;vesZ?_ZC^blV~3dS{mrfI9hlhOk!6F0 q$~iGc5rYqF9)33H6n1s`!5Tm5nTYV78$W=Nz~JfX=d#Wzp$P!5(Y$s5 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/img/item/weapon/warrior/heaven-gate.png b/src/main/resources/static/img/item/weapon/warrior/heaven-gate.png new file mode 100644 index 0000000000000000000000000000000000000000..f97db0c8ffcfc71b00cbdb9dba5cbde5743150d0 GIT binary patch literal 547 zcmV+;0^I$HP)500001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0k}y-K~z{r?UrkC z!!QtpO(7IYp%g-)6hfgCLcv%{!4yiN6qMUNt$p$%i4{Bj0z+^%9# zT~Zb{7a&lcLkzQa5FtV2JYT#rUB_5svgAQlJ22n5O6OvUVX@vbA7ydFlvyZK&6maJG6mUUE59TOx77zuOt lBs$)O=$Hp%FZqF*<_0sv3#iCUzQF(h002ovPDHLkV1lw4+P44z literal 0 HcmV?d00001 From 29489274783fe31ab64db4a64050cdbd61348d2a Mon Sep 17 00:00:00 2001 From: Jaehoon-So Date: Sun, 28 Jan 2024 01:47:25 +0900 Subject: [PATCH 10/14] add: two hand sword index.html --- ...ombringer-raw.png => doom-bringer-raw.png} | Bin .../{doombringer.png => doom-bringer.png} | Bin src/main/resources/static/index.html | 32 ++++++++++++++---- 3 files changed, 26 insertions(+), 6 deletions(-) rename src/main/resources/static/img/item/weapon/warrior/{doombringer-raw.png => doom-bringer-raw.png} (100%) rename src/main/resources/static/img/item/weapon/warrior/{doombringer.png => doom-bringer.png} (100%) diff --git a/src/main/resources/static/img/item/weapon/warrior/doombringer-raw.png b/src/main/resources/static/img/item/weapon/warrior/doom-bringer-raw.png similarity index 100% rename from src/main/resources/static/img/item/weapon/warrior/doombringer-raw.png rename to src/main/resources/static/img/item/weapon/warrior/doom-bringer-raw.png diff --git a/src/main/resources/static/img/item/weapon/warrior/doombringer.png b/src/main/resources/static/img/item/weapon/warrior/doom-bringer.png similarity index 100% rename from src/main/resources/static/img/item/weapon/warrior/doombringer.png rename to src/main/resources/static/img/item/weapon/warrior/doom-bringer.png diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index 517a5369..d0fe5752 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -58,6 +58,32 @@

무기

호검
+ + + + + + - + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/blue-robe/blue-robe-int.html b/src/main/resources/templates/item/armor/blue-robe/blue-robe-int.html index e81ae6c8..8a67e365 100644 --- a/src/main/resources/templates/item/armor/blue-robe/blue-robe-int.html +++ b/src/main/resources/templates/item/armor/blue-robe/blue-robe-int.html @@ -181,7 +181,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/blue-robe/blue-robe-luk.html b/src/main/resources/templates/item/armor/blue-robe/blue-robe-luk.html index bab68ad5..038147bc 100644 --- a/src/main/resources/templates/item/armor/blue-robe/blue-robe-luk.html +++ b/src/main/resources/templates/item/armor/blue-robe/blue-robe-luk.html @@ -175,7 +175,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/dark-anakamoon/dark-anakamoon.html b/src/main/resources/templates/item/armor/dark-anakamoon/dark-anakamoon.html index 784e02fe..c4c6106c 100644 --- a/src/main/resources/templates/item/armor/dark-anakamoon/dark-anakamoon.html +++ b/src/main/resources/templates/item/armor/dark-anakamoon/dark-anakamoon.html @@ -183,7 +183,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/dark-seraphis/dark-seraphis.html b/src/main/resources/templates/item/armor/dark-seraphis/dark-seraphis.html index 0ef241f6..75607d0c 100644 --- a/src/main/resources/templates/item/armor/dark-seraphis/dark-seraphis.html +++ b/src/main/resources/templates/item/armor/dark-seraphis/dark-seraphis.html @@ -178,7 +178,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-dex.html b/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-dex.html index b6413534..62ee5031 100644 --- a/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-dex.html +++ b/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-dex.html @@ -174,7 +174,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-int.html b/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-int.html index eb6ab403..dbf5246b 100644 --- a/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-int.html +++ b/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-int.html @@ -173,6 +173,6 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-luk.html b/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-luk.html index d5a002dd..4d9e9507 100644 --- a/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-luk.html +++ b/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-luk.html @@ -173,6 +173,6 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-str.html b/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-str.html index ff2d7d0d..23eca913 100644 --- a/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-str.html +++ b/src/main/resources/templates/item/armor/raggedy-cape/raggedy-cape-str.html @@ -174,6 +174,6 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-intel.html b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-intel.html index a26b8dd9..d2a40777 100644 --- a/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-intel.html +++ b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-intel.html @@ -179,6 +179,6 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-lucky.html b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-lucky.html index ef90d966..7b73a61a 100644 --- a/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-lucky.html +++ b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-lucky.html @@ -179,6 +179,6 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-strong.html b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-strong.html index 3a0fd23b..17e62ae7 100644 --- a/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-strong.html +++ b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-strong.html @@ -179,6 +179,6 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-swift.html b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-swift.html index 6f54e04b..8a601273 100644 --- a/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-swift.html +++ b/src/main/resources/templates/item/armor/red-gaia-cape/red-gaia-cape-swift.html @@ -179,6 +179,6 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/armor/work-glove.html b/src/main/resources/templates/item/armor/work-glove.html index dbcedaa4..43c4d39b 100644 --- a/src/main/resources/templates/item/armor/work-glove.html +++ b/src/main/resources/templates/item/armor/work-glove.html @@ -171,6 +171,6 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/bowman/battle-bow.html b/src/main/resources/templates/item/weapon/bowman/battle-bow.html index dabbcbd6..a911b33e 100644 --- a/src/main/resources/templates/item/weapon/bowman/battle-bow.html +++ b/src/main/resources/templates/item/weapon/bowman/battle-bow.html @@ -184,7 +184,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/bowman/golden-crow.html b/src/main/resources/templates/item/weapon/bowman/golden-crow.html index e133c7fa..f6390b2f 100644 --- a/src/main/resources/templates/item/weapon/bowman/golden-crow.html +++ b/src/main/resources/templates/item/weapon/bowman/golden-crow.html @@ -184,7 +184,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/bowman/golden-hinkel.html b/src/main/resources/templates/item/weapon/bowman/golden-hinkel.html index 443052ec..0c3291fe 100644 --- a/src/main/resources/templates/item/weapon/bowman/golden-hinkel.html +++ b/src/main/resources/templates/item/weapon/bowman/golden-hinkel.html @@ -185,7 +185,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/bowman/heckler.html b/src/main/resources/templates/item/weapon/bowman/heckler.html index b5b7de98..620006f8 100644 --- a/src/main/resources/templates/item/weapon/bowman/heckler.html +++ b/src/main/resources/templates/item/weapon/bowman/heckler.html @@ -184,7 +184,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/bowman/olympus.html b/src/main/resources/templates/item/weapon/bowman/olympus.html index 7dcc0dde..ed4448d0 100644 --- a/src/main/resources/templates/item/weapon/bowman/olympus.html +++ b/src/main/resources/templates/item/weapon/bowman/olympus.html @@ -184,7 +184,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/bowman/rower.html b/src/main/resources/templates/item/weapon/bowman/rower.html index ad4fda83..1712f511 100644 --- a/src/main/resources/templates/item/weapon/bowman/rower.html +++ b/src/main/resources/templates/item/weapon/bowman/rower.html @@ -184,7 +184,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/bowman/ryden.html b/src/main/resources/templates/item/weapon/bowman/ryden.html index f18fa490..22244729 100644 --- a/src/main/resources/templates/item/weapon/bowman/ryden.html +++ b/src/main/resources/templates/item/weapon/bowman/ryden.html @@ -184,7 +184,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/bowman/vaulter.html b/src/main/resources/templates/item/weapon/bowman/vaulter.html index a78a7bd6..acb3d170 100644 --- a/src/main/resources/templates/item/weapon/bowman/vaulter.html +++ b/src/main/resources/templates/item/weapon/bowman/vaulter.html @@ -184,7 +184,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/magician/arc-staff.html b/src/main/resources/templates/item/weapon/magician/arc-staff.html index 8a302697..169cc891 100644 --- a/src/main/resources/templates/item/weapon/magician/arc-staff.html +++ b/src/main/resources/templates/item/weapon/magician/arc-staff.html @@ -186,7 +186,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/magician/evil-wings.html b/src/main/resources/templates/item/weapon/magician/evil-wings.html index 99e69f89..ca78185f 100644 --- a/src/main/resources/templates/item/weapon/magician/evil-wings.html +++ b/src/main/resources/templates/item/weapon/magician/evil-wings.html @@ -185,7 +185,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/magician/wooden-wand.html b/src/main/resources/templates/item/weapon/magician/wooden-wand.html index e57502ea..95948142 100644 --- a/src/main/resources/templates/item/weapon/magician/wooden-wand.html +++ b/src/main/resources/templates/item/weapon/magician/wooden-wand.html @@ -178,7 +178,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/thief/bazlud.html b/src/main/resources/templates/item/weapon/thief/bazlud.html index 80b0628c..94e2a781 100644 --- a/src/main/resources/templates/item/weapon/thief/bazlud.html +++ b/src/main/resources/templates/item/weapon/thief/bazlud.html @@ -183,7 +183,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/thief/blood-gigantic.html b/src/main/resources/templates/item/weapon/thief/blood-gigantic.html index db187614..39793be1 100644 --- a/src/main/resources/templates/item/weapon/thief/blood-gigantic.html +++ b/src/main/resources/templates/item/weapon/thief/blood-gigantic.html @@ -187,7 +187,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/thief/brown-scarab.html b/src/main/resources/templates/item/weapon/thief/brown-scarab.html index bbfedd22..ec98314c 100644 --- a/src/main/resources/templates/item/weapon/thief/brown-scarab.html +++ b/src/main/resources/templates/item/weapon/thief/brown-scarab.html @@ -186,7 +186,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/thief/dark-avarice.html b/src/main/resources/templates/item/weapon/thief/dark-avarice.html index e193be51..0e9782e0 100644 --- a/src/main/resources/templates/item/weapon/thief/dark-avarice.html +++ b/src/main/resources/templates/item/weapon/thief/dark-avarice.html @@ -186,6 +186,6 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/thief/dragon-tail.html b/src/main/resources/templates/item/weapon/thief/dragon-tail.html index 27b12592..cd2ca9bf 100644 --- a/src/main/resources/templates/item/weapon/thief/dragon-tail.html +++ b/src/main/resources/templates/item/weapon/thief/dragon-tail.html @@ -183,7 +183,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/thief/geta.html b/src/main/resources/templates/item/weapon/thief/geta.html index fae034a7..dcdc0e59 100644 --- a/src/main/resources/templates/item/weapon/thief/geta.html +++ b/src/main/resources/templates/item/weapon/thief/geta.html @@ -183,7 +183,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/thief/korean-fan.html b/src/main/resources/templates/item/weapon/thief/korean-fan.html index 2fcd90dc..fa7508d5 100644 --- a/src/main/resources/templates/item/weapon/thief/korean-fan.html +++ b/src/main/resources/templates/item/weapon/thief/korean-fan.html @@ -185,7 +185,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/thief/meba.html b/src/main/resources/templates/item/weapon/thief/meba.html index 202c6f8c..27c0545c 100644 --- a/src/main/resources/templates/item/weapon/thief/meba.html +++ b/src/main/resources/templates/item/weapon/thief/meba.html @@ -183,6 +183,6 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/thief/shinkita.html b/src/main/resources/templates/item/weapon/thief/shinkita.html index adba4bc4..dfaa85df 100644 --- a/src/main/resources/templates/item/weapon/thief/shinkita.html +++ b/src/main/resources/templates/item/weapon/thief/shinkita.html @@ -183,7 +183,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/lion-fang.html b/src/main/resources/templates/item/weapon/warrior/lion-fang.html index aa39c153..737c96d7 100644 --- a/src/main/resources/templates/item/weapon/warrior/lion-fang.html +++ b/src/main/resources/templates/item/weapon/warrior/lion-fang.html @@ -184,7 +184,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/lion-heart.html b/src/main/resources/templates/item/weapon/warrior/lion-heart.html index 899e9b3c..a4e4ab66 100644 --- a/src/main/resources/templates/item/weapon/warrior/lion-heart.html +++ b/src/main/resources/templates/item/weapon/warrior/lion-heart.html @@ -185,7 +185,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/nakamaki.html b/src/main/resources/templates/item/weapon/warrior/nakamaki.html index c4a6ea2c..852c28f3 100644 --- a/src/main/resources/templates/item/weapon/warrior/nakamaki.html +++ b/src/main/resources/templates/item/weapon/warrior/nakamaki.html @@ -184,7 +184,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/nine-dragon.html b/src/main/resources/templates/item/weapon/warrior/nine-dragon.html index 4cac30c3..2783f339 100644 --- a/src/main/resources/templates/item/weapon/warrior/nine-dragon.html +++ b/src/main/resources/templates/item/weapon/warrior/nine-dragon.html @@ -186,7 +186,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/zeco/zeco-accurate.html b/src/main/resources/templates/item/weapon/warrior/zeco/zeco-accurate.html index 5ea6e552..824d5a01 100644 --- a/src/main/resources/templates/item/weapon/warrior/zeco/zeco-accurate.html +++ b/src/main/resources/templates/item/weapon/warrior/zeco/zeco-accurate.html @@ -185,7 +185,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/zeco/zeco-strong.html b/src/main/resources/templates/item/weapon/warrior/zeco/zeco-strong.html index 895a02d0..8f653202 100644 --- a/src/main/resources/templates/item/weapon/warrior/zeco/zeco-strong.html +++ b/src/main/resources/templates/item/weapon/warrior/zeco/zeco-strong.html @@ -184,7 +184,7 @@ - + \ No newline at end of file From b939d8c7b0b0b028649687c3115557d03218c673 Mon Sep 17 00:00:00 2001 From: Jaehoon-So Date: Sun, 28 Jan 2024 02:01:35 +0900 Subject: [PATCH 12/14] =?UTF-8?q?add:=20=EA=B8=B0=EB=B3=B8=20JS,=20HTML?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/item/weapon/warrior/blue-dragon/blue-dragon.js | 0 .../item/weapon/warrior/devil-sunrise/devil-sunrise.js | 0 .../item/weapon/warrior/doom-bringer/doom-bringer.js | 0 .../js/item/weapon/warrior/heaven-gate/heaven-gate.js | 0 .../templates/item/weapon/warrior/blue-dragon.html | 10 ++++++++++ .../templates/item/weapon/warrior/devil-sunrise.html | 10 ++++++++++ .../templates/item/weapon/warrior/doom-bringer.html | 10 ++++++++++ .../templates/item/weapon/warrior/heaven-gate.html | 10 ++++++++++ 8 files changed, 40 insertions(+) create mode 100644 src/main/resources/static/js/item/weapon/warrior/blue-dragon/blue-dragon.js create mode 100644 src/main/resources/static/js/item/weapon/warrior/devil-sunrise/devil-sunrise.js create mode 100644 src/main/resources/static/js/item/weapon/warrior/doom-bringer/doom-bringer.js create mode 100644 src/main/resources/static/js/item/weapon/warrior/heaven-gate/heaven-gate.js create mode 100644 src/main/resources/templates/item/weapon/warrior/blue-dragon.html create mode 100644 src/main/resources/templates/item/weapon/warrior/devil-sunrise.html create mode 100644 src/main/resources/templates/item/weapon/warrior/doom-bringer.html create mode 100644 src/main/resources/templates/item/weapon/warrior/heaven-gate.html diff --git a/src/main/resources/static/js/item/weapon/warrior/blue-dragon/blue-dragon.js b/src/main/resources/static/js/item/weapon/warrior/blue-dragon/blue-dragon.js new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/static/js/item/weapon/warrior/devil-sunrise/devil-sunrise.js b/src/main/resources/static/js/item/weapon/warrior/devil-sunrise/devil-sunrise.js new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/static/js/item/weapon/warrior/doom-bringer/doom-bringer.js b/src/main/resources/static/js/item/weapon/warrior/doom-bringer/doom-bringer.js new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/static/js/item/weapon/warrior/heaven-gate/heaven-gate.js b/src/main/resources/static/js/item/weapon/warrior/heaven-gate/heaven-gate.js new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/templates/item/weapon/warrior/blue-dragon.html b/src/main/resources/templates/item/weapon/warrior/blue-dragon.html new file mode 100644 index 00000000..566549bd --- /dev/null +++ b/src/main/resources/templates/item/weapon/warrior/blue-dragon.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/devil-sunrise.html b/src/main/resources/templates/item/weapon/warrior/devil-sunrise.html new file mode 100644 index 00000000..566549bd --- /dev/null +++ b/src/main/resources/templates/item/weapon/warrior/devil-sunrise.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/doom-bringer.html b/src/main/resources/templates/item/weapon/warrior/doom-bringer.html new file mode 100644 index 00000000..566549bd --- /dev/null +++ b/src/main/resources/templates/item/weapon/warrior/doom-bringer.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/heaven-gate.html b/src/main/resources/templates/item/weapon/warrior/heaven-gate.html new file mode 100644 index 00000000..566549bd --- /dev/null +++ b/src/main/resources/templates/item/weapon/warrior/heaven-gate.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + \ No newline at end of file From cc4c76b1208f566b34d719726a43ca31b0b058f7 Mon Sep 17 00:00:00 2001 From: Jaehoon-So Date: Sun, 28 Jan 2024 02:40:42 +0900 Subject: [PATCH 13/14] =?UTF-8?q?add:=20=EB=91=90=EC=86=90=EA=B2=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weapon/WarriorWeaponController.java | 24 ++ ...e-dragon-raw.png => blue-screamer-raw.png} | Bin .../{blue-dragon.png => blue-screamer.png} | Bin src/main/resources/static/index.html | 4 +- .../weapon/warrior/blue-dragon/blue-dragon.js | 0 .../warrior/blue-screamer/blue-screamer.js | 407 ++++++++++++++++++ .../warrior/devil-sunrise/devil-sunrise.js | 407 ++++++++++++++++++ .../warrior/doom-bringer/doom-bringer.js | 407 ++++++++++++++++++ .../weapon/warrior/heaven-gate/heaven-gate.js | 407 ++++++++++++++++++ .../item/weapon/warrior/blue-dragon.html | 10 - .../item/weapon/warrior/blue-screamer.html | 190 ++++++++ .../item/weapon/warrior/devil-sunrise.html | 184 +++++++- .../item/weapon/warrior/doom-bringer.html | 186 +++++++- .../item/weapon/warrior/heaven-gate.html | 186 +++++++- 14 files changed, 2392 insertions(+), 20 deletions(-) rename src/main/resources/static/img/item/weapon/warrior/{blue-dragon-raw.png => blue-screamer-raw.png} (100%) rename src/main/resources/static/img/item/weapon/warrior/{blue-dragon.png => blue-screamer.png} (100%) delete mode 100644 src/main/resources/static/js/item/weapon/warrior/blue-dragon/blue-dragon.js create mode 100644 src/main/resources/static/js/item/weapon/warrior/blue-screamer/blue-screamer.js delete mode 100644 src/main/resources/templates/item/weapon/warrior/blue-dragon.html create mode 100644 src/main/resources/templates/item/weapon/warrior/blue-screamer.html diff --git a/src/main/java/mangmae/gongnomok/controller/weapon/WarriorWeaponController.java b/src/main/java/mangmae/gongnomok/controller/weapon/WarriorWeaponController.java index 41e76d44..8827eb4f 100644 --- a/src/main/java/mangmae/gongnomok/controller/weapon/WarriorWeaponController.java +++ b/src/main/java/mangmae/gongnomok/controller/weapon/WarriorWeaponController.java @@ -48,4 +48,28 @@ public String nineDragon() { return "item/weapon/warrior/nine-dragon"; } + //그륜힐 + @GetMapping("/doom-bringer") + public String doomBringer() { + return "item/weapon/warrior/doom-bringer"; + } + + //그레이트 로헨 + @GetMapping("/heaven-gate") + public String heavenGate() { + return "item/weapon/warrior/heaven-gate"; + } + + //청운검 + @GetMapping("/blue-screamer") + public String blueScreamer() { + return "item/weapon/warrior/blue-screamer"; + } + + //라투헨더 + @GetMapping("/devil-sunrise") + public String devilSunrise() { + return "item/weapon/warrior/devil-sunrise"; + } + } diff --git a/src/main/resources/static/img/item/weapon/warrior/blue-dragon-raw.png b/src/main/resources/static/img/item/weapon/warrior/blue-screamer-raw.png similarity index 100% rename from src/main/resources/static/img/item/weapon/warrior/blue-dragon-raw.png rename to src/main/resources/static/img/item/weapon/warrior/blue-screamer-raw.png diff --git a/src/main/resources/static/img/item/weapon/warrior/blue-dragon.png b/src/main/resources/static/img/item/weapon/warrior/blue-screamer.png similarity index 100% rename from src/main/resources/static/img/item/weapon/warrior/blue-dragon.png rename to src/main/resources/static/img/item/weapon/warrior/blue-screamer.png diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index d0fe5752..a11fdebd 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -70,9 +70,9 @@

무기

그레이트 로헨 - diff --git a/src/main/resources/static/js/item/weapon/warrior/blue-dragon/blue-dragon.js b/src/main/resources/static/js/item/weapon/warrior/blue-dragon/blue-dragon.js deleted file mode 100644 index e69de29b..00000000 diff --git a/src/main/resources/static/js/item/weapon/warrior/blue-screamer/blue-screamer.js b/src/main/resources/static/js/item/weapon/warrior/blue-screamer/blue-screamer.js new file mode 100644 index 00000000..cda08031 --- /dev/null +++ b/src/main/resources/static/js/item/weapon/warrior/blue-screamer/blue-screamer.js @@ -0,0 +1,407 @@ +import * as util from "../../../../global/util.js"; + +// 속성 값들 +let defaultStr = 0; +let defaultPhyAtk = 90; +let defaultPhyDef = 0; +let defaultAvailableCount = 7; + +let blueScreamerImgPath = '../img/item/weapon/blue-screamer.png'; +let successGifPath = '../gif/success.gif'; +let failureGifPath = '../gif/failure.gif'; + +let timer = null; + +// 옵션 버튼 +let normalOptionBtn = document.getElementById('blue-screamer-normal-option-btn'); +let oneUpperOptionBtn = document.getElementById('blue-screamer-one-upper-option-btn'); +let twoUpperOptionBtn = document.getElementById('blue-screamer-two-upper-option-btn'); +let threeUpperOptionBtn = document.getElementById('blue-screamer-three-upper-option-btn'); +let fourUpperOptionBtn = document.getElementById('blue-screamer-four-upper-option-btn'); +let fiveUpperOptionBtn = document.getElementById('blue-screamer-five-upper-option-btn'); + +// 주문서 버튼 +let tenPerBtn = document.getElementById('blue-screamer-10-percent-button'); +let sixtyPerBtn = document.getElementById('blue-screamer-60-percent-button'); +let hundredPerBtn = document.getElementById('blue-screamer-100-percent-button'); +let resetBtn = document.getElementById('blue-screamer-reset-button'); + +// 아이템 구매 횟수 +let blueScreamerCnt = 1; + +// 주문서 시도 횟수 +let blueScreamerTenTrial = 0; +let blueScreamerSixtyTrial = 0; +let blueScreamerHundredTrial = 0; + +// 가격 관련 input, button +let blueScreamerPriceInput = document.getElementById('blue-screamer-price'); // 아이템 가격 +let blueScreamerTenInput = document.getElementById('blue-screamer-10-price'); // 10퍼센트 가격 +let blueScreamerSixtyInput = document.getElementById('blue-screamer-60-price'); // 60퍼센트 가격 +let blueScreamerHundredInput = document.getElementById('blue-screamer-100-price'); // 100퍼센트 가격 +let blueScreamerPriceResetBtn = document.getElementById('blue-screamer-price-reset-btn') // 리셋 버튼 + +/** + * 핫키 이벤트 등록 + * - Q: 10% 주문서 적용 + * - W: 60% 주문서 적용 + * - E: 100% 주문서 적용 + * - R: 아이템 상태 초기화 + */ +window.addEventListener('keydown', (e) => { + let input = e.key; + if (input === 'r' || input === 'R' || input === 'ㄱ' || input === 'ㄲ') { + resetItem(true) + resetBtn.focus(); + } else if (input === 'q' || input === 'Q' || input === 'ㅂ' || input === 'ㅃ') { + tenPerBtnClicked() + tenPerBtn.focus() + } else if (input === 'w' || input === 'W' || input === 'ㅈ' || input === 'ㅉ') { + sixtyPerBtnClicked() + sixtyPerBtn.focus(); + } else if (input === 'e' || input === 'E' || input === 'ㄷ' || input === 'ㄸ') { + hundredPerBtnClicked() + hundredPerBtn.focus() + } else if (input === 'f' || input === 'F' || input === 'ㄹ') { + resetBlueScreamerPrice(); + blueScreamerPriceResetBtn.focus(); + } +}); + +window.addEventListener('keyup', (e) => { + let input = e.key; + if (input === 'r' || input === 'R' || input === 'ㄱ' || input === 'ㄲ') { + resetBtn.blur(); + } else if (input === 'q' || input === 'Q' || input === 'ㅂ' || input === 'ㅃ') { + tenPerBtn.blur() + } else if (input === 'w' || input === 'W' || input === 'ㅈ' || input === 'ㅉ') { + sixtyPerBtn.blur(); + } else if (input === 'e' || input === 'E' || input === 'ㄷ' || input === 'ㄸ') { + hundredPerBtn.blur() + } else if (input === 'f' || input === 'F' || input === 'ㄹ') { + blueScreamerPriceResetBtn.blur(); + } +}); + +tenPerBtn.addEventListener('mouseup', tenPerBtnMouseUp); +sixtyPerBtn.addEventListener('mouseup', sixtyPerBtnMouseUp); +hundredPerBtn.addEventListener('mouseup', hundredPerBtnMouseUp); +resetBtn.addEventListener('mouseup', resetBtnMouseUp); +blueScreamerPriceResetBtn.addEventListener('mouseup', workGlovePriceResetBtnMouseUp); + +function tenPerBtnMouseUp() { tenPerBtn.blur() } +function sixtyPerBtnMouseUp() { sixtyPerBtn.blur() } +function hundredPerBtnMouseUp() { hundredPerBtn.blur() } +function resetBtnMouseUp() { resetBtn.blur() } +function workGlovePriceResetBtnMouseUp() { blueScreamerPriceResetBtn.blur() } + +/** + * 주문서 버튼 이벤트 리스너 + */ +tenPerBtn.addEventListener('click', tenPerBtnClicked); +sixtyPerBtn.addEventListener('click', sixtyPerBtnClicked); +hundredPerBtn.addEventListener('click', hundredPerBtnClicked); +resetBtn.addEventListener('click', function () { + resetItem(true); +}); + +function tenPerBtnClicked() { + if (!checkAvailableCount()) return + if (util.getRandomResult(10)) { + success(5, 3, 1, 10); + } else { + fail() + } + + let usedCnt = document.getElementById('blue-screamer-10-used-cnt'); + blueScreamerTenTrial++; + usedCnt.textContent = blueScreamerTenTrial.toString(); + recalculateBlueScreamerTotalPrice(); +} + +function sixtyPerBtnClicked() { + if (!checkAvailableCount()) return + if (util.getRandomResult(60)) { + success(2, 1, 0, 60); + } else { + fail(); + } + + let usedCnt = document.getElementById('blue-screamer-60-used-cnt'); + blueScreamerSixtyTrial++; + usedCnt.textContent = blueScreamerSixtyTrial.toString(); + recalculateBlueScreamerTotalPrice(); +} + +function hundredPerBtnClicked() { + if (!checkAvailableCount()) return + success(1, 0, 0, 100); + + let usedCnt = document.getElementById('blue-screamer-100-used-cnt'); + blueScreamerHundredTrial++; + usedCnt.textContent = blueScreamerHundredTrial.toString(); + recalculateBlueScreamerTotalPrice(); +} + +/** + * 옵션 버튼 이벤트 리스너 + */ +normalOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('blue-screamer-phy-atk'); + defaultPhyAtk = 90; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +oneUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('blue-screamer-phy-atk'); + defaultPhyAtk = 91; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +twoUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('blue-screamer-phy-atk'); + defaultPhyAtk = 92; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +threeUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('blue-screamer-phy-atk'); + defaultPhyAtk = 93; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +fourUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('blue-screamer-phy-atk'); + defaultPhyAtk = 94; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +fiveUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('blue-screamer-phy-atk'); + defaultPhyAtk = 95; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + + +/** + * 공용 함수 + */ +export function resetItem(isNew) { + let phyAtk = document.getElementById('blue-screamer-phy-atk'); // 물리공격력 + let strV = document.getElementById('blue-screamer-str'); // STR + let strInfo = document.getElementById('blue-screamer-str-info'); // STR 정보 텍스트 + let phyDef = document.getElementById('blue-screamer-phy-def'); // 물리방어력 + let phyDefInfo = document.getElementById('blue-screamer-phy-def-info'); // 물리방어력 정보 텍스트 + let availableCnt = document.getElementById('blue-screamer-upgrade-available-count'); // 강화 가능 횟수 + let upgradeSuccessCnt = document.getElementById('blue-screamer-upgraded-count'); // 강화 성공 횟수 + let additionalTitle = document.getElementById('blue-screamer-additional'); + + phyAtk.textContent = defaultPhyAtk.toString(); + strV.textContent = defaultStr.toString() + phyDef.textContent = defaultPhyDef.toString(); + + strInfo.hidden = true; phyDefInfo.hidden = true; + + availableCnt.textContent = defaultAvailableCount.toString() + upgradeSuccessCnt.textContent = '0'; + additionalTitle.hidden = true + + if (isNew) { + addBlueScreamerBuyCnt() + } + + let title = document.getElementById('blue-screamer-title'); + let alertTxt = document.getElementById('blue-screamer-available-alert-txt'); + util.changeColor(title, parseInt(phyAtk.textContent) - defaultPhyAtk); + alertTxt.hidden = true; + +} + +function success(phyAtk, strV, phyDef, percent) { + console.log(' scroll success'); + + let upgradedCountElem = document.getElementById('blue-screamer-upgraded-count'); + let additionalElem = document.getElementById('blue-screamer-additional'); + let title = document.getElementById('blue-screamer-title'); + let availableCount = document.getElementById('blue-screamer-upgrade-available-count'); + let phyAtkElem = document.getElementById('blue-screamer-phy-atk'); + + let strElem = document.getElementById('blue-screamer-str'); + let strInfoElem = document.getElementById('blue-screamer-str-info'); + + let phyDefElem = document.getElementById('blue-screamer-phy-def'); + let phyDefInfoElem = document.getElementById('blue-screamer-phy-def-info'); + + + phyAtkElem.textContent = (parseInt(phyAtkElem.textContent) + phyAtk).toString(); + strElem.textContent = (parseInt(strElem.textContent) + strV).toString(); + phyDefElem.textContent = (parseInt(phyDefElem.textContent) + phyDef).toString(); + + + upgradedCountElem.textContent = (parseInt(upgradedCountElem.textContent) + 1).toString(); + util.changeColor(title, parseInt(phyAtkElem.textContent) - defaultPhyAtk) + additionalElem.hidden = false; + + if (parseInt(strElem.textContent) !== 0) { + strInfoElem.hidden = false; + } + if (parseInt(phyDefElem.textContent) !== 0) { + phyDefInfoElem.hidden = false; + } + + //sound + util.playSuccessSound(); // 강화성공 소리 재생 + reduceAvailableCount(availableCount); // 강화 가능횟수 감소 + addSuccessCnt(percent) + + playSuccessEffect() +} + +function addSuccessCnt(percent) { + if (percent === 10) { + let successCnt = document.getElementById('blue-screamer-10-success-cnt'); + successCnt.textContent = (parseInt(successCnt.textContent) + 1).toString(); + } else if (percent === 60) { + let successCnt = document.getElementById('blue-screamer-60-success-cnt'); + successCnt.textContent = (parseInt(successCnt.textContent) + 1).toString(); + } else if (percent === 100) { + let successCnt = document.getElementById('blue-screamer-100-success-cnt'); + successCnt.textContent = (parseInt(successCnt.textContent) + 1).toString(); + } +} + + +function fail() { + console.log('scroll fail') + + let availableCount = document.getElementById('blue-screamer-upgrade-available-count'); + reduceAvailableCount(availableCount); + util.playFailureSound() + playFailEffect() +} + +function reduceAvailableCount(availableCount) { + availableCount.textContent = (parseInt(availableCount.textContent) - 1).toString(); +} + +function checkAvailableCount() { + let availableCount = document.getElementById('blue-screamer-upgrade-available-count'); + let count = parseInt(availableCount.textContent); + let alertTxt = document.getElementById('blue-screamer-available-alert-txt'); + if (count <= 0) { + alertTxt.hidden = false; + return false; + } + return true; +} + +function playSuccessEffect() { + clearTimeout(timer); + let gifImg = document.getElementById('blue-screamer-gif-img'); + gifImg.hidden = false; + gifImg.src = successGifPath; + timer = setTimeout(function () { + gifImg.src = blueScreamerImgPath + gifImg.hidden = true; + }, 1000); +} + +function playFailEffect() { + clearTimeout(timer); + let gifImg = document.getElementById('blue-screamer-gif-img'); + gifImg.hidden = false; + gifImg.src = failureGifPath; + timer = setTimeout(function () { + gifImg.src = blueScreamerImgPath + gifImg.hidden = true; + }, 1000); +} + + + +blueScreamerPriceInput.oninput = () => { + recalculateBlueScreamerTotalPrice() +} + +blueScreamerTenInput.oninput = () => { + recalculateBlueScreamerTotalPrice(); +} + +blueScreamerSixtyInput.oninput = () => { + recalculateBlueScreamerTotalPrice(); +} + +blueScreamerHundredInput.oninput = () => { + recalculateBlueScreamerTotalPrice(); +} + +function recalculateBlueScreamerTotalPrice() { + let blueScreamerPriceInputElem = document.getElementById('blue-screamer-price'); + let tenInputElem = document.getElementById('blue-screamer-10-price'); + let sixtyInputElem = document.getElementById('blue-screamer-60-price'); + let hundredInputElem = document.getElementById('blue-screamer-100-price'); + let usedPriceElem = document.getElementById('blue-screamer-total-used-price'); + + let price = parseInt(blueScreamerPriceInputElem.value); + let tenInput = parseInt(tenInputElem.value); + let sixtyInput = parseInt(sixtyInputElem.value); + let hundredInput = parseInt(hundredInputElem.value); + + usedPriceElem.textContent = ( + price * blueScreamerCnt + + ( + tenInput * blueScreamerTenTrial + + sixtyInput * blueScreamerSixtyTrial + + hundredInput * + blueScreamerHundredTrial + ) + ).toLocaleString(); +} + +/** + * 가격 리셋 로직 + */ +blueScreamerPriceResetBtn.addEventListener('click', function () { + resetBlueScreamerPrice() +}); + +function resetBlueScreamerPrice() { + let tenSuccessCnt = document.getElementById('blue-screamer-10-success-cnt'); + let sixtySuccessCnt = document.getElementById('blue-screamer-60-success-cnt'); + let hundredSuccessCnt = document.getElementById('blue-screamer-100-success-cnt'); + let tenUsedCnt = document.getElementById('blue-screamer-10-used-cnt'); + let sixtyUsedCnt = document.getElementById('blue-screamer-60-used-cnt'); + let hundredUsedCnt = document.getElementById('blue-screamer-100-used-cnt'); + let itemCnt = document.getElementById('blue-screamer-cnt'); + + tenSuccessCnt.textContent = '0'; + sixtySuccessCnt.textContent = '0'; + hundredSuccessCnt.textContent = '0'; + tenUsedCnt.textContent = '0'; + sixtyUsedCnt.textContent = '0'; + hundredUsedCnt.textContent = '0'; + itemCnt.textContent = '1'; + + blueScreamerTenTrial = 0; + blueScreamerSixtyTrial = 0; + blueScreamerHundredTrial = 0; + blueScreamerCnt = 1; + + recalculateBlueScreamerTotalPrice(); +} + +/** + * 구매 이블윙즈 개수 증가 + */ +function addBlueScreamerBuyCnt() { + let buyCnt = document.getElementById('blue-screamer-cnt'); + blueScreamerCnt++; // 아이템 소모 갯수를 증가시킨다 + buyCnt.textContent = blueScreamerCnt.toString(); + recalculateBlueScreamerTotalPrice(); +} \ No newline at end of file diff --git a/src/main/resources/static/js/item/weapon/warrior/devil-sunrise/devil-sunrise.js b/src/main/resources/static/js/item/weapon/warrior/devil-sunrise/devil-sunrise.js index e69de29b..da95ae86 100644 --- a/src/main/resources/static/js/item/weapon/warrior/devil-sunrise/devil-sunrise.js +++ b/src/main/resources/static/js/item/weapon/warrior/devil-sunrise/devil-sunrise.js @@ -0,0 +1,407 @@ +import * as util from "../../../../global/util.js"; + +// 속성 값들 +let defaultStr = 0; +let defaultPhyAtk = 95; +let defaultPhyDef = 0; +let defaultAvailableCount = 7; + +let devilSunriseImgPath = '../img/item/weapon/devil-sunrise.png'; +let successGifPath = '../gif/success.gif'; +let failureGifPath = '../gif/failure.gif'; + +let timer = null; + +// 옵션 버튼 +let normalOptionBtn = document.getElementById('devil-sunrise-normal-option-btn'); +let oneUpperOptionBtn = document.getElementById('devil-sunrise-one-upper-option-btn'); +let twoUpperOptionBtn = document.getElementById('devil-sunrise-two-upper-option-btn'); +let threeUpperOptionBtn = document.getElementById('devil-sunrise-three-upper-option-btn'); +let fourUpperOptionBtn = document.getElementById('devil-sunrise-four-upper-option-btn'); +let fiveUpperOptionBtn = document.getElementById('devil-sunrise-five-upper-option-btn'); + +// 주문서 버튼 +let tenPerBtn = document.getElementById('devil-sunrise-10-percent-button'); +let sixtyPerBtn = document.getElementById('devil-sunrise-60-percent-button'); +let hundredPerBtn = document.getElementById('devil-sunrise-100-percent-button'); +let resetBtn = document.getElementById('devil-sunrise-reset-button'); + +// 아이템 구매 횟수 +let devilSunriseCnt = 1; + +// 주문서 시도 횟수 +let devilSunriseTenTrial = 0; +let devilSunriseSixtyTrial = 0; +let devilSunriseHundredTrial = 0; + +// 가격 관련 input, button +let devilSunrisePriceInput = document.getElementById('devil-sunrise-price'); // 아이템 가격 +let devilSunriseTenInput = document.getElementById('devil-sunrise-10-price'); // 10퍼센트 가격 +let devilSunriseSixtyInput = document.getElementById('devil-sunrise-60-price'); // 60퍼센트 가격 +let devilSunriseHundredInput = document.getElementById('devil-sunrise-100-price'); // 100퍼센트 가격 +let devilSunrisePriceResetBtn = document.getElementById('devil-sunrise-price-reset-btn') // 리셋 버튼 + +/** + * 핫키 이벤트 등록 + * - Q: 10% 주문서 적용 + * - W: 60% 주문서 적용 + * - E: 100% 주문서 적용 + * - R: 아이템 상태 초기화 + */ +window.addEventListener('keydown', (e) => { + let input = e.key; + if (input === 'r' || input === 'R' || input === 'ㄱ' || input === 'ㄲ') { + resetItem(true) + resetBtn.focus(); + } else if (input === 'q' || input === 'Q' || input === 'ㅂ' || input === 'ㅃ') { + tenPerBtnClicked() + tenPerBtn.focus() + } else if (input === 'w' || input === 'W' || input === 'ㅈ' || input === 'ㅉ') { + sixtyPerBtnClicked() + sixtyPerBtn.focus(); + } else if (input === 'e' || input === 'E' || input === 'ㄷ' || input === 'ㄸ') { + hundredPerBtnClicked() + hundredPerBtn.focus() + } else if (input === 'f' || input === 'F' || input === 'ㄹ') { + resetDevilSunrisePrice(); + devilSunrisePriceResetBtn.focus(); + } +}); + +window.addEventListener('keyup', (e) => { + let input = e.key; + if (input === 'r' || input === 'R' || input === 'ㄱ' || input === 'ㄲ') { + resetBtn.blur(); + } else if (input === 'q' || input === 'Q' || input === 'ㅂ' || input === 'ㅃ') { + tenPerBtn.blur() + } else if (input === 'w' || input === 'W' || input === 'ㅈ' || input === 'ㅉ') { + sixtyPerBtn.blur(); + } else if (input === 'e' || input === 'E' || input === 'ㄷ' || input === 'ㄸ') { + hundredPerBtn.blur() + } else if (input === 'f' || input === 'F' || input === 'ㄹ') { + devilSunrisePriceResetBtn.blur(); + } +}); + +tenPerBtn.addEventListener('mouseup', tenPerBtnMouseUp); +sixtyPerBtn.addEventListener('mouseup', sixtyPerBtnMouseUp); +hundredPerBtn.addEventListener('mouseup', hundredPerBtnMouseUp); +resetBtn.addEventListener('mouseup', resetBtnMouseUp); +devilSunrisePriceResetBtn.addEventListener('mouseup', workGlovePriceResetBtnMouseUp); + +function tenPerBtnMouseUp() { tenPerBtn.blur() } +function sixtyPerBtnMouseUp() { sixtyPerBtn.blur() } +function hundredPerBtnMouseUp() { hundredPerBtn.blur() } +function resetBtnMouseUp() { resetBtn.blur() } +function workGlovePriceResetBtnMouseUp() { devilSunrisePriceResetBtn.blur() } + +/** + * 주문서 버튼 이벤트 리스너 + */ +tenPerBtn.addEventListener('click', tenPerBtnClicked); +sixtyPerBtn.addEventListener('click', sixtyPerBtnClicked); +hundredPerBtn.addEventListener('click', hundredPerBtnClicked); +resetBtn.addEventListener('click', function () { + resetItem(true); +}); + +function tenPerBtnClicked() { + if (!checkAvailableCount()) return + if (util.getRandomResult(10)) { + success(5, 3, 1, 10); + } else { + fail() + } + + let usedCnt = document.getElementById('devil-sunrise-10-used-cnt'); + devilSunriseTenTrial++; + usedCnt.textContent = devilSunriseTenTrial.toString(); + recalculateDevilSunriseTotalPrice(); +} + +function sixtyPerBtnClicked() { + if (!checkAvailableCount()) return + if (util.getRandomResult(60)) { + success(2, 1, 0, 60); + } else { + fail(); + } + + let usedCnt = document.getElementById('devil-sunrise-60-used-cnt'); + devilSunriseSixtyTrial++; + usedCnt.textContent = devilSunriseSixtyTrial.toString(); + recalculateDevilSunriseTotalPrice(); +} + +function hundredPerBtnClicked() { + if (!checkAvailableCount()) return + success(1, 0, 0, 100); + + let usedCnt = document.getElementById('devil-sunrise-100-used-cnt'); + devilSunriseHundredTrial++; + usedCnt.textContent = devilSunriseHundredTrial.toString(); + recalculateDevilSunriseTotalPrice(); +} + +/** + * 옵션 버튼 이벤트 리스너 + */ +normalOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('devil-sunrise-phy-atk'); + defaultPhyAtk = 95; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +oneUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('devil-sunrise-phy-atk'); + defaultPhyAtk = 96; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +twoUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('devil-sunrise-phy-atk'); + defaultPhyAtk = 97; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +threeUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('devil-sunrise-phy-atk'); + defaultPhyAtk = 98; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +fourUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('devil-sunrise-phy-atk'); + defaultPhyAtk = 99; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +fiveUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('devil-sunrise-phy-atk'); + defaultPhyAtk = 100; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + + +/** + * 공용 함수 + */ +export function resetItem(isNew) { + let phyAtk = document.getElementById('devil-sunrise-phy-atk'); // 물리공격력 + let strV = document.getElementById('devil-sunrise-str'); // STR + let strInfo = document.getElementById('devil-sunrise-str-info'); // STR 정보 텍스트 + let phyDef = document.getElementById('devil-sunrise-phy-def'); // 물리방어력 + let phyDefInfo = document.getElementById('devil-sunrise-phy-def-info'); // 물리방어력 정보 텍스트 + let availableCnt = document.getElementById('devil-sunrise-upgrade-available-count'); // 강화 가능 횟수 + let upgradeSuccessCnt = document.getElementById('devil-sunrise-upgraded-count'); // 강화 성공 횟수 + let additionalTitle = document.getElementById('devil-sunrise-additional'); + + phyAtk.textContent = defaultPhyAtk.toString(); + strV.textContent = defaultStr.toString() + phyDef.textContent = defaultPhyDef.toString(); + + strInfo.hidden = true; phyDefInfo.hidden = true; + + availableCnt.textContent = defaultAvailableCount.toString() + upgradeSuccessCnt.textContent = '0'; + additionalTitle.hidden = true + + if (isNew) { + addDevilSunriseBuyCnt() + } + + let title = document.getElementById('devil-sunrise-title'); + let alertTxt = document.getElementById('devil-sunrise-available-alert-txt'); + util.changeColor(title, parseInt(phyAtk.textContent) - defaultPhyAtk); + alertTxt.hidden = true; + +} + +function success(phyAtk, strV, phyDef, percent) { + console.log(' scroll success'); + + let upgradedCountElem = document.getElementById('devil-sunrise-upgraded-count'); + let additionalElem = document.getElementById('devil-sunrise-additional'); + let title = document.getElementById('devil-sunrise-title'); + let availableCount = document.getElementById('devil-sunrise-upgrade-available-count'); + let phyAtkElem = document.getElementById('devil-sunrise-phy-atk'); + + let strElem = document.getElementById('devil-sunrise-str'); + let strInfoElem = document.getElementById('devil-sunrise-str-info'); + + let phyDefElem = document.getElementById('devil-sunrise-phy-def'); + let phyDefInfoElem = document.getElementById('devil-sunrise-phy-def-info'); + + + phyAtkElem.textContent = (parseInt(phyAtkElem.textContent) + phyAtk).toString(); + strElem.textContent = (parseInt(strElem.textContent) + strV).toString(); + phyDefElem.textContent = (parseInt(phyDefElem.textContent) + phyDef).toString(); + + + upgradedCountElem.textContent = (parseInt(upgradedCountElem.textContent) + 1).toString(); + util.changeColor(title, parseInt(phyAtkElem.textContent) - defaultPhyAtk) + additionalElem.hidden = false; + + if (parseInt(strElem.textContent) !== 0) { + strInfoElem.hidden = false; + } + if (parseInt(phyDefElem.textContent) !== 0) { + phyDefInfoElem.hidden = false; + } + + //sound + util.playSuccessSound(); // 강화성공 소리 재생 + reduceAvailableCount(availableCount); // 강화 가능횟수 감소 + addSuccessCnt(percent) + + playSuccessEffect() +} + +function addSuccessCnt(percent) { + if (percent === 10) { + let successCnt = document.getElementById('devil-sunrise-10-success-cnt'); + successCnt.textContent = (parseInt(successCnt.textContent) + 1).toString(); + } else if (percent === 60) { + let successCnt = document.getElementById('devil-sunrise-60-success-cnt'); + successCnt.textContent = (parseInt(successCnt.textContent) + 1).toString(); + } else if (percent === 100) { + let successCnt = document.getElementById('devil-sunrise-100-success-cnt'); + successCnt.textContent = (parseInt(successCnt.textContent) + 1).toString(); + } +} + + +function fail() { + console.log('scroll fail') + + let availableCount = document.getElementById('devil-sunrise-upgrade-available-count'); + reduceAvailableCount(availableCount); + util.playFailureSound() + playFailEffect() +} + +function reduceAvailableCount(availableCount) { + availableCount.textContent = (parseInt(availableCount.textContent) - 1).toString(); +} + +function checkAvailableCount() { + let availableCount = document.getElementById('devil-sunrise-upgrade-available-count'); + let count = parseInt(availableCount.textContent); + let alertTxt = document.getElementById('devil-sunrise-available-alert-txt'); + if (count <= 0) { + alertTxt.hidden = false; + return false; + } + return true; +} + +function playSuccessEffect() { + clearTimeout(timer); + let gifImg = document.getElementById('devil-sunrise-gif-img'); + gifImg.hidden = false; + gifImg.src = successGifPath; + timer = setTimeout(function () { + gifImg.src = devilSunriseImgPath + gifImg.hidden = true; + }, 1000); +} + +function playFailEffect() { + clearTimeout(timer); + let gifImg = document.getElementById('devil-sunrise-gif-img'); + gifImg.hidden = false; + gifImg.src = failureGifPath; + timer = setTimeout(function () { + gifImg.src = devilSunriseImgPath + gifImg.hidden = true; + }, 1000); +} + + + +devilSunrisePriceInput.oninput = () => { + recalculateDevilSunriseTotalPrice() +} + +devilSunriseTenInput.oninput = () => { + recalculateDevilSunriseTotalPrice(); +} + +devilSunriseSixtyInput.oninput = () => { + recalculateDevilSunriseTotalPrice(); +} + +devilSunriseHundredInput.oninput = () => { + recalculateDevilSunriseTotalPrice(); +} + +function recalculateDevilSunriseTotalPrice() { + let devilSunrisePriceInputElem = document.getElementById('devil-sunrise-price'); + let tenInputElem = document.getElementById('devil-sunrise-10-price'); + let sixtyInputElem = document.getElementById('devil-sunrise-60-price'); + let hundredInputElem = document.getElementById('devil-sunrise-100-price'); + let usedPriceElem = document.getElementById('devil-sunrise-total-used-price'); + + let price = parseInt(devilSunrisePriceInputElem.value); + let tenInput = parseInt(tenInputElem.value); + let sixtyInput = parseInt(sixtyInputElem.value); + let hundredInput = parseInt(hundredInputElem.value); + + usedPriceElem.textContent = ( + price * devilSunriseCnt + + ( + tenInput * devilSunriseTenTrial + + sixtyInput * devilSunriseSixtyTrial + + hundredInput * + devilSunriseHundredTrial + ) + ).toLocaleString(); +} + +/** + * 가격 리셋 로직 + */ +devilSunrisePriceResetBtn.addEventListener('click', function () { + resetDevilSunrisePrice() +}); + +function resetDevilSunrisePrice() { + let tenSuccessCnt = document.getElementById('devil-sunrise-10-success-cnt'); + let sixtySuccessCnt = document.getElementById('devil-sunrise-60-success-cnt'); + let hundredSuccessCnt = document.getElementById('devil-sunrise-100-success-cnt'); + let tenUsedCnt = document.getElementById('devil-sunrise-10-used-cnt'); + let sixtyUsedCnt = document.getElementById('devil-sunrise-60-used-cnt'); + let hundredUsedCnt = document.getElementById('devil-sunrise-100-used-cnt'); + let itemCnt = document.getElementById('devil-sunrise-cnt'); + + tenSuccessCnt.textContent = '0'; + sixtySuccessCnt.textContent = '0'; + hundredSuccessCnt.textContent = '0'; + tenUsedCnt.textContent = '0'; + sixtyUsedCnt.textContent = '0'; + hundredUsedCnt.textContent = '0'; + itemCnt.textContent = '1'; + + devilSunriseTenTrial = 0; + devilSunriseSixtyTrial = 0; + devilSunriseHundredTrial = 0; + devilSunriseCnt = 1; + + recalculateDevilSunriseTotalPrice(); +} + +/** + * 구매 이블윙즈 개수 증가 + */ +function addDevilSunriseBuyCnt() { + let buyCnt = document.getElementById('devil-sunrise-cnt'); + devilSunriseCnt++; // 아이템 소모 갯수를 증가시킨다 + buyCnt.textContent = devilSunriseCnt.toString(); + recalculateDevilSunriseTotalPrice(); +} \ No newline at end of file diff --git a/src/main/resources/static/js/item/weapon/warrior/doom-bringer/doom-bringer.js b/src/main/resources/static/js/item/weapon/warrior/doom-bringer/doom-bringer.js index e69de29b..ded061a7 100644 --- a/src/main/resources/static/js/item/weapon/warrior/doom-bringer/doom-bringer.js +++ b/src/main/resources/static/js/item/weapon/warrior/doom-bringer/doom-bringer.js @@ -0,0 +1,407 @@ +import * as util from "../../../../global/util.js"; + +// 속성 값들 +let defaultStr = 0; +let defaultPhyAtk = 85; +let defaultPhyDef = 0; +let defaultAvailableCount = 7; + +let doomBringerImgPath = '../img/item/weapon/doom-bringer.png'; +let successGifPath = '../gif/success.gif'; +let failureGifPath = '../gif/failure.gif'; + +let timer = null; + +// 옵션 버튼 +let normalOptionBtn = document.getElementById('doom-bringer-normal-option-btn'); +let oneUpperOptionBtn = document.getElementById('doom-bringer-one-upper-option-btn'); +let twoUpperOptionBtn = document.getElementById('doom-bringer-two-upper-option-btn'); +let threeUpperOptionBtn = document.getElementById('doom-bringer-three-upper-option-btn'); +let fourUpperOptionBtn = document.getElementById('doom-bringer-four-upper-option-btn'); +let fiveUpperOptionBtn = document.getElementById('doom-bringer-five-upper-option-btn'); + +// 주문서 버튼 +let tenPerBtn = document.getElementById('doom-bringer-10-percent-button'); +let sixtyPerBtn = document.getElementById('doom-bringer-60-percent-button'); +let hundredPerBtn = document.getElementById('doom-bringer-100-percent-button'); +let resetBtn = document.getElementById('doom-bringer-reset-button'); + +// 아이템 구매 횟수 +let doomBringerCnt = 1; + +// 주문서 시도 횟수 +let doomBringerTenTrial = 0; +let doomBringerSixtyTrial = 0; +let doomBringerHundredTrial = 0; + +// 가격 관련 input, button +let doomBringerPriceInput = document.getElementById('doom-bringer-price'); // 아이템 가격 +let doomBringerTenInput = document.getElementById('doom-bringer-10-price'); // 10퍼센트 가격 +let doomBringerSixtyInput = document.getElementById('doom-bringer-60-price'); // 60퍼센트 가격 +let doomBringerHundredInput = document.getElementById('doom-bringer-100-price'); // 100퍼센트 가격 +let doomBringerPriceResetBtn = document.getElementById('doom-bringer-price-reset-btn') // 리셋 버튼 + +/** + * 핫키 이벤트 등록 + * - Q: 10% 주문서 적용 + * - W: 60% 주문서 적용 + * - E: 100% 주문서 적용 + * - R: 아이템 상태 초기화 + */ +window.addEventListener('keydown', (e) => { + let input = e.key; + if (input === 'r' || input === 'R' || input === 'ㄱ' || input === 'ㄲ') { + resetItem(true) + resetBtn.focus(); + } else if (input === 'q' || input === 'Q' || input === 'ㅂ' || input === 'ㅃ') { + tenPerBtnClicked() + tenPerBtn.focus() + } else if (input === 'w' || input === 'W' || input === 'ㅈ' || input === 'ㅉ') { + sixtyPerBtnClicked() + sixtyPerBtn.focus(); + } else if (input === 'e' || input === 'E' || input === 'ㄷ' || input === 'ㄸ') { + hundredPerBtnClicked() + hundredPerBtn.focus() + } else if (input === 'f' || input === 'F' || input === 'ㄹ') { + resetDoomBringerPrice(); + doomBringerPriceResetBtn.focus(); + } +}); + +window.addEventListener('keyup', (e) => { + let input = e.key; + if (input === 'r' || input === 'R' || input === 'ㄱ' || input === 'ㄲ') { + resetBtn.blur(); + } else if (input === 'q' || input === 'Q' || input === 'ㅂ' || input === 'ㅃ') { + tenPerBtn.blur() + } else if (input === 'w' || input === 'W' || input === 'ㅈ' || input === 'ㅉ') { + sixtyPerBtn.blur(); + } else if (input === 'e' || input === 'E' || input === 'ㄷ' || input === 'ㄸ') { + hundredPerBtn.blur() + } else if (input === 'f' || input === 'F' || input === 'ㄹ') { + doomBringerPriceResetBtn.blur(); + } +}); + +tenPerBtn.addEventListener('mouseup', tenPerBtnMouseUp); +sixtyPerBtn.addEventListener('mouseup', sixtyPerBtnMouseUp); +hundredPerBtn.addEventListener('mouseup', hundredPerBtnMouseUp); +resetBtn.addEventListener('mouseup', resetBtnMouseUp); +doomBringerPriceResetBtn.addEventListener('mouseup', workGlovePriceResetBtnMouseUp); + +function tenPerBtnMouseUp() { tenPerBtn.blur() } +function sixtyPerBtnMouseUp() { sixtyPerBtn.blur() } +function hundredPerBtnMouseUp() { hundredPerBtn.blur() } +function resetBtnMouseUp() { resetBtn.blur() } +function workGlovePriceResetBtnMouseUp() { doomBringerPriceResetBtn.blur() } + +/** + * 주문서 버튼 이벤트 리스너 + */ +tenPerBtn.addEventListener('click', tenPerBtnClicked); +sixtyPerBtn.addEventListener('click', sixtyPerBtnClicked); +hundredPerBtn.addEventListener('click', hundredPerBtnClicked); +resetBtn.addEventListener('click', function () { + resetItem(true); +}); + +function tenPerBtnClicked() { + if (!checkAvailableCount()) return + if (util.getRandomResult(10)) { + success(5, 3, 1, 10); + } else { + fail() + } + + let usedCnt = document.getElementById('doom-bringer-10-used-cnt'); + doomBringerTenTrial++; + usedCnt.textContent = doomBringerTenTrial.toString(); + recalculateDoomBringerTotalPrice(); +} + +function sixtyPerBtnClicked() { + if (!checkAvailableCount()) return + if (util.getRandomResult(60)) { + success(2, 1, 0, 60); + } else { + fail(); + } + + let usedCnt = document.getElementById('doom-bringer-60-used-cnt'); + doomBringerSixtyTrial++; + usedCnt.textContent = doomBringerSixtyTrial.toString(); + recalculateDoomBringerTotalPrice(); +} + +function hundredPerBtnClicked() { + if (!checkAvailableCount()) return + success(1, 0, 0, 100); + + let usedCnt = document.getElementById('doom-bringer-100-used-cnt'); + doomBringerHundredTrial++; + usedCnt.textContent = doomBringerHundredTrial.toString(); + recalculateDoomBringerTotalPrice(); +} + +/** + * 옵션 버튼 이벤트 리스너 + */ +normalOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('doom-bringer-phy-atk'); + defaultPhyAtk = 85; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +oneUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('doom-bringer-phy-atk'); + defaultPhyAtk = 86; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +twoUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('doom-bringer-phy-atk'); + defaultPhyAtk = 87; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +threeUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('doom-bringer-phy-atk'); + defaultPhyAtk = 88; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +fourUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('doom-bringer-phy-atk'); + defaultPhyAtk = 89; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +fiveUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('doom-bringer-phy-atk'); + defaultPhyAtk = 90; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + + +/** + * 공용 함수 + */ +export function resetItem(isNew) { + let phyAtk = document.getElementById('doom-bringer-phy-atk'); // 물리공격력 + let strV = document.getElementById('doom-bringer-str'); // STR + let strInfo = document.getElementById('doom-bringer-str-info'); // STR 정보 텍스트 + let phyDef = document.getElementById('doom-bringer-phy-def'); // 물리방어력 + let phyDefInfo = document.getElementById('doom-bringer-phy-def-info'); // 물리방어력 정보 텍스트 + let availableCnt = document.getElementById('doom-bringer-upgrade-available-count'); // 강화 가능 횟수 + let upgradeSuccessCnt = document.getElementById('doom-bringer-upgraded-count'); // 강화 성공 횟수 + let additionalTitle = document.getElementById('doom-bringer-additional'); + + phyAtk.textContent = defaultPhyAtk.toString(); + strV.textContent = defaultStr.toString() + phyDef.textContent = defaultPhyDef.toString(); + + strInfo.hidden = true; phyDefInfo.hidden = true; + + availableCnt.textContent = defaultAvailableCount.toString() + upgradeSuccessCnt.textContent = '0'; + additionalTitle.hidden = true + + if (isNew) { + addDoomBringerBuyCnt() + } + + let title = document.getElementById('doom-bringer-title'); + let alertTxt = document.getElementById('doom-bringer-available-alert-txt'); + util.changeColor(title, parseInt(phyAtk.textContent) - defaultPhyAtk); + alertTxt.hidden = true; + +} + +function success(phyAtk, strV, phyDef, percent) { + console.log(' scroll success'); + + let upgradedCountElem = document.getElementById('doom-bringer-upgraded-count'); + let additionalElem = document.getElementById('doom-bringer-additional'); + let title = document.getElementById('doom-bringer-title'); + let availableCount = document.getElementById('doom-bringer-upgrade-available-count'); + let phyAtkElem = document.getElementById('doom-bringer-phy-atk'); + + let strElem = document.getElementById('doom-bringer-str'); + let strInfoElem = document.getElementById('doom-bringer-str-info'); + + let phyDefElem = document.getElementById('doom-bringer-phy-def'); + let phyDefInfoElem = document.getElementById('doom-bringer-phy-def-info'); + + + phyAtkElem.textContent = (parseInt(phyAtkElem.textContent) + phyAtk).toString(); + strElem.textContent = (parseInt(strElem.textContent) + strV).toString(); + phyDefElem.textContent = (parseInt(phyDefElem.textContent) + phyDef).toString(); + + + upgradedCountElem.textContent = (parseInt(upgradedCountElem.textContent) + 1).toString(); + util.changeColor(title, parseInt(phyAtkElem.textContent) - defaultPhyAtk) + additionalElem.hidden = false; + + if (parseInt(strElem.textContent) !== 0) { + strInfoElem.hidden = false; + } + if (parseInt(phyDefElem.textContent) !== 0) { + phyDefInfoElem.hidden = false; + } + + //sound + util.playSuccessSound(); // 강화성공 소리 재생 + reduceAvailableCount(availableCount); // 강화 가능횟수 감소 + addSuccessCnt(percent) + + playSuccessEffect() +} + +function addSuccessCnt(percent) { + if (percent === 10) { + let successCnt = document.getElementById('doom-bringer-10-success-cnt'); + successCnt.textContent = (parseInt(successCnt.textContent) + 1).toString(); + } else if (percent === 60) { + let successCnt = document.getElementById('doom-bringer-60-success-cnt'); + successCnt.textContent = (parseInt(successCnt.textContent) + 1).toString(); + } else if (percent === 100) { + let successCnt = document.getElementById('doom-bringer-100-success-cnt'); + successCnt.textContent = (parseInt(successCnt.textContent) + 1).toString(); + } +} + + +function fail() { + console.log('scroll fail') + + let availableCount = document.getElementById('doom-bringer-upgrade-available-count'); + reduceAvailableCount(availableCount); + util.playFailureSound() + playFailEffect() +} + +function reduceAvailableCount(availableCount) { + availableCount.textContent = (parseInt(availableCount.textContent) - 1).toString(); +} + +function checkAvailableCount() { + let availableCount = document.getElementById('doom-bringer-upgrade-available-count'); + let count = parseInt(availableCount.textContent); + let alertTxt = document.getElementById('doom-bringer-available-alert-txt'); + if (count <= 0) { + alertTxt.hidden = false; + return false; + } + return true; +} + +function playSuccessEffect() { + clearTimeout(timer); + let gifImg = document.getElementById('doom-bringer-gif-img'); + gifImg.hidden = false; + gifImg.src = successGifPath; + timer = setTimeout(function () { + gifImg.src = doomBringerImgPath + gifImg.hidden = true; + }, 1000); +} + +function playFailEffect() { + clearTimeout(timer); + let gifImg = document.getElementById('doom-bringer-gif-img'); + gifImg.hidden = false; + gifImg.src = failureGifPath; + timer = setTimeout(function () { + gifImg.src = doomBringerImgPath + gifImg.hidden = true; + }, 1000); +} + + + +doomBringerPriceInput.oninput = () => { + recalculateDoomBringerTotalPrice() +} + +doomBringerTenInput.oninput = () => { + recalculateDoomBringerTotalPrice(); +} + +doomBringerSixtyInput.oninput = () => { + recalculateDoomBringerTotalPrice(); +} + +doomBringerHundredInput.oninput = () => { + recalculateDoomBringerTotalPrice(); +} + +function recalculateDoomBringerTotalPrice() { + let doomBringerPriceInputElem = document.getElementById('doom-bringer-price'); + let tenInputElem = document.getElementById('doom-bringer-10-price'); + let sixtyInputElem = document.getElementById('doom-bringer-60-price'); + let hundredInputElem = document.getElementById('doom-bringer-100-price'); + let usedPriceElem = document.getElementById('doom-bringer-total-used-price'); + + let price = parseInt(doomBringerPriceInputElem.value); + let tenInput = parseInt(tenInputElem.value); + let sixtyInput = parseInt(sixtyInputElem.value); + let hundredInput = parseInt(hundredInputElem.value); + + usedPriceElem.textContent = ( + price * doomBringerCnt + + ( + tenInput * doomBringerTenTrial + + sixtyInput * doomBringerSixtyTrial + + hundredInput * + doomBringerHundredTrial + ) + ).toLocaleString(); +} + +/** + * 가격 리셋 로직 + */ +doomBringerPriceResetBtn.addEventListener('click', function () { + resetDoomBringerPrice() +}); + +function resetDoomBringerPrice() { + let tenSuccessCnt = document.getElementById('doom-bringer-10-success-cnt'); + let sixtySuccessCnt = document.getElementById('doom-bringer-60-success-cnt'); + let hundredSuccessCnt = document.getElementById('doom-bringer-100-success-cnt'); + let tenUsedCnt = document.getElementById('doom-bringer-10-used-cnt'); + let sixtyUsedCnt = document.getElementById('doom-bringer-60-used-cnt'); + let hundredUsedCnt = document.getElementById('doom-bringer-100-used-cnt'); + let itemCnt = document.getElementById('doom-bringer-cnt'); + + tenSuccessCnt.textContent = '0'; + sixtySuccessCnt.textContent = '0'; + hundredSuccessCnt.textContent = '0'; + tenUsedCnt.textContent = '0'; + sixtyUsedCnt.textContent = '0'; + hundredUsedCnt.textContent = '0'; + itemCnt.textContent = '1'; + + doomBringerTenTrial = 0; + doomBringerSixtyTrial = 0; + doomBringerHundredTrial = 0; + doomBringerCnt = 1; + + recalculateDoomBringerTotalPrice(); +} + +/** + * 구매 이블윙즈 개수 증가 + */ +function addDoomBringerBuyCnt() { + let buyCnt = document.getElementById('doom-bringer-cnt'); + doomBringerCnt++; // 아이템 소모 갯수를 증가시킨다 + buyCnt.textContent = doomBringerCnt.toString(); + recalculateDoomBringerTotalPrice(); +} \ No newline at end of file diff --git a/src/main/resources/static/js/item/weapon/warrior/heaven-gate/heaven-gate.js b/src/main/resources/static/js/item/weapon/warrior/heaven-gate/heaven-gate.js index e69de29b..74b60468 100644 --- a/src/main/resources/static/js/item/weapon/warrior/heaven-gate/heaven-gate.js +++ b/src/main/resources/static/js/item/weapon/warrior/heaven-gate/heaven-gate.js @@ -0,0 +1,407 @@ +import * as util from "../../../../global/util.js"; + +// 속성 값들 +let defaultStr = 0; +let defaultPhyAtk = 90; +let defaultPhyDef = 0; +let defaultAvailableCount = 7; + +let heavenGateImgPath = '../img/item/weapon/heaven-gate.png'; +let successGifPath = '../gif/success.gif'; +let failureGifPath = '../gif/failure.gif'; + +let timer = null; + +// 옵션 버튼 +let normalOptionBtn = document.getElementById('heaven-gate-normal-option-btn'); +let oneUpperOptionBtn = document.getElementById('heaven-gate-one-upper-option-btn'); +let twoUpperOptionBtn = document.getElementById('heaven-gate-two-upper-option-btn'); +let threeUpperOptionBtn = document.getElementById('heaven-gate-three-upper-option-btn'); +let fourUpperOptionBtn = document.getElementById('heaven-gate-four-upper-option-btn'); +let fiveUpperOptionBtn = document.getElementById('heaven-gate-five-upper-option-btn'); + +// 주문서 버튼 +let tenPerBtn = document.getElementById('heaven-gate-10-percent-button'); +let sixtyPerBtn = document.getElementById('heaven-gate-60-percent-button'); +let hundredPerBtn = document.getElementById('heaven-gate-100-percent-button'); +let resetBtn = document.getElementById('heaven-gate-reset-button'); + +// 아이템 구매 횟수 +let heavenGateCnt = 1; + +// 주문서 시도 횟수 +let heavenGateTenTrial = 0; +let heavenGateSixtyTrial = 0; +let heavenGateHundredTrial = 0; + +// 가격 관련 input, button +let heavenGatePriceInput = document.getElementById('heaven-gate-price'); // 아이템 가격 +let heavenGateTenInput = document.getElementById('heaven-gate-10-price'); // 10퍼센트 가격 +let heavenGateSixtyInput = document.getElementById('heaven-gate-60-price'); // 60퍼센트 가격 +let heavenGateHundredInput = document.getElementById('heaven-gate-100-price'); // 100퍼센트 가격 +let heavenGatePriceResetBtn = document.getElementById('heaven-gate-price-reset-btn') // 리셋 버튼 + +/** + * 핫키 이벤트 등록 + * - Q: 10% 주문서 적용 + * - W: 60% 주문서 적용 + * - E: 100% 주문서 적용 + * - R: 아이템 상태 초기화 + */ +window.addEventListener('keydown', (e) => { + let input = e.key; + if (input === 'r' || input === 'R' || input === 'ㄱ' || input === 'ㄲ') { + resetItem(true) + resetBtn.focus(); + } else if (input === 'q' || input === 'Q' || input === 'ㅂ' || input === 'ㅃ') { + tenPerBtnClicked() + tenPerBtn.focus() + } else if (input === 'w' || input === 'W' || input === 'ㅈ' || input === 'ㅉ') { + sixtyPerBtnClicked() + sixtyPerBtn.focus(); + } else if (input === 'e' || input === 'E' || input === 'ㄷ' || input === 'ㄸ') { + hundredPerBtnClicked() + hundredPerBtn.focus() + } else if (input === 'f' || input === 'F' || input === 'ㄹ') { + resetHeavenGatePrice(); + heavenGatePriceResetBtn.focus(); + } +}); + +window.addEventListener('keyup', (e) => { + let input = e.key; + if (input === 'r' || input === 'R' || input === 'ㄱ' || input === 'ㄲ') { + resetBtn.blur(); + } else if (input === 'q' || input === 'Q' || input === 'ㅂ' || input === 'ㅃ') { + tenPerBtn.blur() + } else if (input === 'w' || input === 'W' || input === 'ㅈ' || input === 'ㅉ') { + sixtyPerBtn.blur(); + } else if (input === 'e' || input === 'E' || input === 'ㄷ' || input === 'ㄸ') { + hundredPerBtn.blur() + } else if (input === 'f' || input === 'F' || input === 'ㄹ') { + heavenGatePriceResetBtn.blur(); + } +}); + +tenPerBtn.addEventListener('mouseup', tenPerBtnMouseUp); +sixtyPerBtn.addEventListener('mouseup', sixtyPerBtnMouseUp); +hundredPerBtn.addEventListener('mouseup', hundredPerBtnMouseUp); +resetBtn.addEventListener('mouseup', resetBtnMouseUp); +heavenGatePriceResetBtn.addEventListener('mouseup', workGlovePriceResetBtnMouseUp); + +function tenPerBtnMouseUp() { tenPerBtn.blur() } +function sixtyPerBtnMouseUp() { sixtyPerBtn.blur() } +function hundredPerBtnMouseUp() { hundredPerBtn.blur() } +function resetBtnMouseUp() { resetBtn.blur() } +function workGlovePriceResetBtnMouseUp() { heavenGatePriceResetBtn.blur() } + +/** + * 주문서 버튼 이벤트 리스너 + */ +tenPerBtn.addEventListener('click', tenPerBtnClicked); +sixtyPerBtn.addEventListener('click', sixtyPerBtnClicked); +hundredPerBtn.addEventListener('click', hundredPerBtnClicked); +resetBtn.addEventListener('click', function () { + resetItem(true); +}); + +function tenPerBtnClicked() { + if (!checkAvailableCount()) return + if (util.getRandomResult(10)) { + success(5, 3, 1, 10); + } else { + fail() + } + + let usedCnt = document.getElementById('heaven-gate-10-used-cnt'); + heavenGateTenTrial++; + usedCnt.textContent = heavenGateTenTrial.toString(); + recalculateHeavenGateTotalPrice(); +} + +function sixtyPerBtnClicked() { + if (!checkAvailableCount()) return + if (util.getRandomResult(60)) { + success(2, 1, 0, 60); + } else { + fail(); + } + + let usedCnt = document.getElementById('heaven-gate-60-used-cnt'); + heavenGateSixtyTrial++; + usedCnt.textContent = heavenGateSixtyTrial.toString(); + recalculateHeavenGateTotalPrice(); +} + +function hundredPerBtnClicked() { + if (!checkAvailableCount()) return + success(1, 0, 0, 100); + + let usedCnt = document.getElementById('heaven-gate-100-used-cnt'); + heavenGateHundredTrial++; + usedCnt.textContent = heavenGateHundredTrial.toString(); + recalculateHeavenGateTotalPrice(); +} + +/** + * 옵션 버튼 이벤트 리스너 + */ +normalOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('heaven-gate-phy-atk'); + defaultPhyAtk = 90; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +oneUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('heaven-gate-phy-atk'); + defaultPhyAtk = 91; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +twoUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('heaven-gate-phy-atk'); + defaultPhyAtk = 92; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +threeUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('heaven-gate-phy-atk'); + defaultPhyAtk = 93; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +fourUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('heaven-gate-phy-atk'); + defaultPhyAtk = 94; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + +fiveUpperOptionBtn.addEventListener('click', function() { + let phyAtk = document.getElementById('heaven-gate-phy-atk'); + defaultPhyAtk = 95; + resetItem(false); + phyAtk.textContent = defaultPhyAtk.toString() +}); + + +/** + * 공용 함수 + */ +export function resetItem(isNew) { + let phyAtk = document.getElementById('heaven-gate-phy-atk'); // 물리공격력 + let strV = document.getElementById('heaven-gate-str'); // STR + let strInfo = document.getElementById('heaven-gate-str-info'); // STR 정보 텍스트 + let phyDef = document.getElementById('heaven-gate-phy-def'); // 물리방어력 + let phyDefInfo = document.getElementById('heaven-gate-phy-def-info'); // 물리방어력 정보 텍스트 + let availableCnt = document.getElementById('heaven-gate-upgrade-available-count'); // 강화 가능 횟수 + let upgradeSuccessCnt = document.getElementById('heaven-gate-upgraded-count'); // 강화 성공 횟수 + let additionalTitle = document.getElementById('heaven-gate-additional'); + + phyAtk.textContent = defaultPhyAtk.toString(); + strV.textContent = defaultStr.toString() + phyDef.textContent = defaultPhyDef.toString(); + + strInfo.hidden = true; phyDefInfo.hidden = true; + + availableCnt.textContent = defaultAvailableCount.toString() + upgradeSuccessCnt.textContent = '0'; + additionalTitle.hidden = true + + if (isNew) { + addHeavenGateBuyCnt() + } + + let title = document.getElementById('heaven-gate-title'); + let alertTxt = document.getElementById('heaven-gate-available-alert-txt'); + util.changeColor(title, parseInt(phyAtk.textContent) - defaultPhyAtk); + alertTxt.hidden = true; + +} + +function success(phyAtk, strV, phyDef, percent) { + console.log(' scroll success'); + + let upgradedCountElem = document.getElementById('heaven-gate-upgraded-count'); + let additionalElem = document.getElementById('heaven-gate-additional'); + let title = document.getElementById('heaven-gate-title'); + let availableCount = document.getElementById('heaven-gate-upgrade-available-count'); + let phyAtkElem = document.getElementById('heaven-gate-phy-atk'); + + let strElem = document.getElementById('heaven-gate-str'); + let strInfoElem = document.getElementById('heaven-gate-str-info'); + + let phyDefElem = document.getElementById('heaven-gate-phy-def'); + let phyDefInfoElem = document.getElementById('heaven-gate-phy-def-info'); + + + phyAtkElem.textContent = (parseInt(phyAtkElem.textContent) + phyAtk).toString(); + strElem.textContent = (parseInt(strElem.textContent) + strV).toString(); + phyDefElem.textContent = (parseInt(phyDefElem.textContent) + phyDef).toString(); + + + upgradedCountElem.textContent = (parseInt(upgradedCountElem.textContent) + 1).toString(); + util.changeColor(title, parseInt(phyAtkElem.textContent) - defaultPhyAtk) + additionalElem.hidden = false; + + if (parseInt(strElem.textContent) !== 0) { + strInfoElem.hidden = false; + } + if (parseInt(phyDefElem.textContent) !== 0) { + phyDefInfoElem.hidden = false; + } + + //sound + util.playSuccessSound(); // 강화성공 소리 재생 + reduceAvailableCount(availableCount); // 강화 가능횟수 감소 + addSuccessCnt(percent) + + playSuccessEffect() +} + +function addSuccessCnt(percent) { + if (percent === 10) { + let successCnt = document.getElementById('heaven-gate-10-success-cnt'); + successCnt.textContent = (parseInt(successCnt.textContent) + 1).toString(); + } else if (percent === 60) { + let successCnt = document.getElementById('heaven-gate-60-success-cnt'); + successCnt.textContent = (parseInt(successCnt.textContent) + 1).toString(); + } else if (percent === 100) { + let successCnt = document.getElementById('heaven-gate-100-success-cnt'); + successCnt.textContent = (parseInt(successCnt.textContent) + 1).toString(); + } +} + + +function fail() { + console.log('scroll fail') + + let availableCount = document.getElementById('heaven-gate-upgrade-available-count'); + reduceAvailableCount(availableCount); + util.playFailureSound() + playFailEffect() +} + +function reduceAvailableCount(availableCount) { + availableCount.textContent = (parseInt(availableCount.textContent) - 1).toString(); +} + +function checkAvailableCount() { + let availableCount = document.getElementById('heaven-gate-upgrade-available-count'); + let count = parseInt(availableCount.textContent); + let alertTxt = document.getElementById('heaven-gate-available-alert-txt'); + if (count <= 0) { + alertTxt.hidden = false; + return false; + } + return true; +} + +function playSuccessEffect() { + clearTimeout(timer); + let gifImg = document.getElementById('heaven-gate-gif-img'); + gifImg.hidden = false; + gifImg.src = successGifPath; + timer = setTimeout(function () { + gifImg.src = heavenGateImgPath + gifImg.hidden = true; + }, 1000); +} + +function playFailEffect() { + clearTimeout(timer); + let gifImg = document.getElementById('heaven-gate-gif-img'); + gifImg.hidden = false; + gifImg.src = failureGifPath; + timer = setTimeout(function () { + gifImg.src = heavenGateImgPath + gifImg.hidden = true; + }, 1000); +} + + + +heavenGatePriceInput.oninput = () => { + recalculateHeavenGateTotalPrice() +} + +heavenGateTenInput.oninput = () => { + recalculateHeavenGateTotalPrice(); +} + +heavenGateSixtyInput.oninput = () => { + recalculateHeavenGateTotalPrice(); +} + +heavenGateHundredInput.oninput = () => { + recalculateHeavenGateTotalPrice(); +} + +function recalculateHeavenGateTotalPrice() { + let heavenGatePriceInputElem = document.getElementById('heaven-gate-price'); + let tenInputElem = document.getElementById('heaven-gate-10-price'); + let sixtyInputElem = document.getElementById('heaven-gate-60-price'); + let hundredInputElem = document.getElementById('heaven-gate-100-price'); + let usedPriceElem = document.getElementById('heaven-gate-total-used-price'); + + let price = parseInt(heavenGatePriceInputElem.value); + let tenInput = parseInt(tenInputElem.value); + let sixtyInput = parseInt(sixtyInputElem.value); + let hundredInput = parseInt(hundredInputElem.value); + + usedPriceElem.textContent = ( + price * heavenGateCnt + + ( + tenInput * heavenGateTenTrial + + sixtyInput * heavenGateSixtyTrial + + hundredInput * + heavenGateHundredTrial + ) + ).toLocaleString(); +} + +/** + * 가격 리셋 로직 + */ +heavenGatePriceResetBtn.addEventListener('click', function () { + resetHeavenGatePrice() +}); + +function resetHeavenGatePrice() { + let tenSuccessCnt = document.getElementById('heaven-gate-10-success-cnt'); + let sixtySuccessCnt = document.getElementById('heaven-gate-60-success-cnt'); + let hundredSuccessCnt = document.getElementById('heaven-gate-100-success-cnt'); + let tenUsedCnt = document.getElementById('heaven-gate-10-used-cnt'); + let sixtyUsedCnt = document.getElementById('heaven-gate-60-used-cnt'); + let hundredUsedCnt = document.getElementById('heaven-gate-100-used-cnt'); + let itemCnt = document.getElementById('heaven-gate-cnt'); + + tenSuccessCnt.textContent = '0'; + sixtySuccessCnt.textContent = '0'; + hundredSuccessCnt.textContent = '0'; + tenUsedCnt.textContent = '0'; + sixtyUsedCnt.textContent = '0'; + hundredUsedCnt.textContent = '0'; + itemCnt.textContent = '1'; + + heavenGateTenTrial = 0; + heavenGateSixtyTrial = 0; + heavenGateHundredTrial = 0; + heavenGateCnt = 1; + + recalculateHeavenGateTotalPrice(); +} + +/** + * 구매 이블윙즈 개수 증가 + */ +function addHeavenGateBuyCnt() { + let buyCnt = document.getElementById('heaven-gate-cnt'); + heavenGateCnt++; // 아이템 소모 갯수를 증가시킨다 + buyCnt.textContent = heavenGateCnt.toString(); + recalculateHeavenGateTotalPrice(); +} \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/blue-dragon.html b/src/main/resources/templates/item/weapon/warrior/blue-dragon.html deleted file mode 100644 index 566549bd..00000000 --- a/src/main/resources/templates/item/weapon/warrior/blue-dragon.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Title - - - - - \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/blue-screamer.html b/src/main/resources/templates/item/weapon/warrior/blue-screamer.html new file mode 100644 index 00000000..312c65b0 --- /dev/null +++ b/src/main/resources/templates/item/weapon/warrior/blue-screamer.html @@ -0,0 +1,190 @@ + + + + + + + + + 청운검 + + + + + + + + + + + + + + + + +
+ +
+
+
+
+
+
+
+
+
+
+

+ 청운검

+ + +
+
+
+ + +
+
+
+
+

REQ LEV : 80

+

REQ STR : 250

+

REQ DEX : 0

+

REQ INT : 0

+

REQ LUK : 0

+

REQ POP : 0

+
+
+

ITEM LEV: -

+

ITEM EXP: -

+
+ +
+
+ + +
+

초보자 전사 마법사 궁수 도적 해적

+
+

장비분류 : 두손검

+

공격속도 : 보통

+ +

공격력 : +90

+ +

업그레이드 가능 횟수 : 7

+
+
+ +
+
+
+ + + + + + +
+
+
+ +

두공10%

+

물리공격력+5

+

STR+3

+

물리방어력+1

+
+
+ +

두공60%

+

물리공격력+2

+

STR+1

+
+
+ +

두공100%

+

물리공격력+1

+
+
+ +
+
+
+
+ + + + 1개 + +
+
+
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+
+ + 0 +
+ +
+
+
+
+
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/devil-sunrise.html b/src/main/resources/templates/item/weapon/warrior/devil-sunrise.html index 566549bd..931047ff 100644 --- a/src/main/resources/templates/item/weapon/warrior/devil-sunrise.html +++ b/src/main/resources/templates/item/weapon/warrior/devil-sunrise.html @@ -1,10 +1,190 @@ - + - Title + + + + + 라 투핸더 + + + + + + + + + + + + + + +
+ +
+
+
+
+
+
+
+
+
+
+

+ 라 투핸더

+ + +
+
+
+ + +
+
+
+
+

REQ LEV : 90

+

REQ STR : 280

+

REQ DEX : 0

+

REQ INT : 0

+

REQ LUK : 0

+

REQ POP : 0

+
+
+

ITEM LEV: -

+

ITEM EXP: -

+
+ +
+
+ + +
+

초보자 전사 마법사 궁수 도적 해적

+
+

장비분류 : 두손검

+

공격속도 : 보통

+ +

공격력 : +95

+ +

업그레이드 가능 횟수 : 7

+
+
+ +
+
+
+ + + + + + +
+
+
+ +

두공10%

+

물리공격력+5

+

STR+3

+

물리방어력+1

+
+
+ +

두공60%

+

물리공격력+2

+

STR+1

+
+
+ +

두공100%

+

물리공격력+1

+
+
+ +
+
+
+
+ + + + 1개 + +
+
+
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+
+ + 0 +
+ +
+
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/doom-bringer.html b/src/main/resources/templates/item/weapon/warrior/doom-bringer.html index 566549bd..dc8aa4a5 100644 --- a/src/main/resources/templates/item/weapon/warrior/doom-bringer.html +++ b/src/main/resources/templates/item/weapon/warrior/doom-bringer.html @@ -1,10 +1,190 @@ - + - - Title + + + + + + 그륜힐 + + + + + + + + + + + + + + +
+ +
+
+
+
+
+
+
+
+
+
+

+ 그륜힐

+ + +
+
+
+ + +
+
+
+
+

REQ LEV : 70

+

REQ STR : 220

+

REQ DEX : 0

+

REQ INT : 0

+

REQ LUK : 0

+

REQ POP : 0

+
+
+

ITEM LEV: -

+

ITEM EXP: -

+
+ +
+
+ + +
+

초보자 전사 마법사 궁수 도적 해적

+
+

장비분류 : 두손검

+

공격속도 : 보통

+ +

공격력 : +85

+ +

업그레이드 가능 횟수 : 7

+
+
+ +
+
+
+ + + + + + +
+
+
+ +

두공10%

+

물리공격력+5

+

STR+3

+

물리방어력+1

+
+
+ +

두공60%

+

물리공격력+2

+

STR+1

+
+
+ +

두공100%

+

물리공격력+1

+
+
+ +
+
+
+
+ + + + 1개 + +
+
+
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+
+ + 0 +
+ +
+
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/item/weapon/warrior/heaven-gate.html b/src/main/resources/templates/item/weapon/warrior/heaven-gate.html index 566549bd..725e08e9 100644 --- a/src/main/resources/templates/item/weapon/warrior/heaven-gate.html +++ b/src/main/resources/templates/item/weapon/warrior/heaven-gate.html @@ -1,10 +1,190 @@ - + - - Title + + + + + + 그레이트 로헨 + + + + + + + + + + + + + + +
+ +
+
+
+
+
+
+
+
+
+
+

+ 그레이트 로헨

+ + +
+
+
+ + +
+
+
+
+

REQ LEV : 80

+

REQ STR : 250

+

REQ DEX : 0

+

REQ INT : 0

+

REQ LUK : 0

+

REQ POP : 0

+
+
+

ITEM LEV: -

+

ITEM EXP: -

+
+ +
+
+ + +
+

초보자 전사 마법사 궁수 도적 해적

+
+

장비분류 : 두손검

+

공격속도 : 보통

+ +

공격력 : +90

+ +

업그레이드 가능 횟수 : 7

+
+
+ +
+
+
+ + + + + + +
+
+
+ +

두공10%

+

물리공격력+5

+

STR+3

+

물리방어력+1

+
+
+ +

두공60%

+

물리공격력+2

+

STR+1

+
+
+ +

두공100%

+

물리공격력+1

+
+
+ +
+
+
+
+ + + + 1개 + +
+
+
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+ + + + 0장 / + 0장 + +
+
+
+ + 0 +
+ +
+
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file From a1f0d7c7d9c3c78da5e8e6ca4d653e5ec232bade Mon Sep 17 00:00:00 2001 From: Jaehoon-So Date: Sun, 28 Jan 2024 02:41:15 +0900 Subject: [PATCH 14/14] fix: build.gradle 1.0.8 -> 1.0.9 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 5de51069..29773338 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { } group = 'mangmae' -version = '1.0.8-SNAPSHOT' +version = '1.0.9-SNAPSHOT' java { sourceCompatibility = '17'