Class FishingRewardFactory
java.lang.Object
server.FishingRewardFactory
釣魚加權獎勵工廠(單例)。讀取
fishing_rewards 資料表,把每一列當成一個「加權獎勵」,
於玩家每次釣魚時以單一加權抽樣抽出一筆 FishingRewardFactory.FishingReward,再由 client.MapleCharacter
依其 FishingRewardFactory.RewardType 發放(經驗 / 楓幣 / GASH / 楓點 / 裝備 / 道具)。
本類別取代舊版「先在 {40,40,20} 內決定楓幣/經驗/道具,再於道具池內抽」的兩段式設計,改為所有獎勵型別
共用同一張權重表,完全由後台「釣魚系統」頁設定。資料表結構見 database.DatabaseBootstrap 的
FISHING_REWARDS_DDL;改表後以 !reloadfishing 或後台「刷新」鈕呼叫 reloadItems() 生效。
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class單一筆釣魚獎勵(不可變)。static enum釣魚獎勵型別。 -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final long金額型獎勵(楓幣 / GASH / 楓點)的上限:21 億,避免超過int範圍造成溢位成負值。 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic Equip依獎勵設定建立一件裝備:先取 WZ 基礎屬性,若啟用自訂屬性則全歸零後只填 STR/DEX/INT/LUK/AD(watk)/AP(matk), 若啟用浮動則對相關屬性套用±floatRange的隨機浮動(僅浮動目前 >0 的屬性;自訂模式只浮動該六項)。以單一加權抽樣抽出一筆獎勵(權重 = 各列chance)。static FishingRewardFactoryvoidstatic introllAmount(long min, long max) 於[min,max]抽一個金額/數量,並夾在[0, 21億]內(避免int溢位)。
-
Field Details
-
CASH_CAP
public static final long CASH_CAP金額型獎勵(楓幣 / GASH / 楓點)的上限:21 億,避免超過int範圍造成溢位成負值。- See Also:
-
-
Constructor Details
-
FishingRewardFactory
public FishingRewardFactory()
-
-
Method Details
-
getInstance
-
drawReward
以單一加權抽樣抽出一筆獎勵(權重 = 各列chance)。無任何獎勵列時回傳null(呼叫端視為「本次沒釣到東西」)。- Returns:
- 抽中的獎勵;無獎勵時為
null
-
reloadItems
public void reloadItems() -
rollAmount
public static int rollAmount(long min, long max) 於[min,max]抽一個金額/數量,並夾在[0, 21億]內(避免int溢位)。- Parameters:
min- 區間下界max- 區間上界- Returns:
- 介於兩界(含)的值,且不超過
CASH_CAP
-
buildEquip
依獎勵設定建立一件裝備:先取 WZ 基礎屬性,若啟用自訂屬性則全歸零後只填 STR/DEX/INT/LUK/AD(watk)/AP(matk), 若啟用浮動則對相關屬性套用±floatRange的隨機浮動(僅浮動目前 >0 的屬性;自訂模式只浮動該六項)。- Parameters:
r- 釣魚獎勵(型別須為FishingRewardFactory.RewardType.EQUIP)- Returns:
- 建好的裝備
-