Initial commit

This commit is contained in:
Melledy
2022-04-17 05:43:07 -07:00
commit 7925d1cda3
354 changed files with 20869 additions and 0 deletions

View File

@@ -0,0 +1,211 @@
package emu.grasscutter.game.props;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
public enum ActionReason {
None(0),
QuestItem(1),
QuestReward(2),
Trifle(3),
Shop(4),
PlayerUpgradeReward(5),
AddAvatar(6),
GadgetEnvAnimal(7),
MonsterEnvAnimal(8),
Compound(9),
Cook(10),
Gather(11),
MailAttachment(12),
CityLevelupReturn(15),
CityLevelupReward(17),
AreaExploreReward(18),
UnlockPointReward(19),
DungeonFirstPass(20),
DungeonPass(21),
ChangeElemType(23),
FetterOpen(25),
DailyTaskScore(26),
DailyTaskHost(27),
RandTaskHost(28),
Expedition(29),
Gacha(30),
Combine(31),
RandTaskGuest(32),
DailyTaskGuest(33),
ForgeOutput(34),
ForgeReturn(35),
InitAvatar(36),
MonsterDie(37),
Gm(38),
OpenChest(39),
GadgetDie(40),
MonsterChangeHp(41),
SubfieldDrop(42),
PushTipsReward(43),
ActivityMonsterDrop(44),
ActivityGather(45),
ActivitySubfieldDrop(46),
TowerScheduleReward(47),
TowerFloorStarReward(48),
TowerFirstPassReward(49),
TowerDailyReward(50),
HitClientTrivialEntity(51),
OpenWorldBossChest(52),
MaterialDeleteReturn(53),
SignInReward(54),
OpenBlossomChest(55),
Recharge(56),
BonusActivityReward(57),
TowerCommemorativeReward(58),
TowerSkipFloorReward(59),
RechargeBonus(60),
RechargeCard(61),
RechargeCardDaily(62),
RechargeCardReplace(63),
RechargeCardReplaceFree(64),
RechargePlayReplace(65),
MpPlayTakeReward(66),
ActivityWatcher(67),
SalesmanDeliverItem(68),
SalesmanReward(69),
Rebate(70),
McoinExchangeHcoin(71),
DailyTaskExchangeLegendaryKey(72),
UnlockPersonLine(73),
FetterLevelReward(74),
BuyResin(75),
RechargePackage(76),
DeliveryDailyReward(77),
CityReputationLevel(78),
CityReputationQuest(79),
CityReputationRequest(80),
CityReputationExplore(81),
OffergingLevel(82),
RoutineHost(83),
RoutineGuest(84),
TreasureMapSpotToken(89),
TreasureMapBonusLevelReward(90),
TreasureMapMpReward(91),
Convert(92),
OverflowTransform(93),
ActivityAvatarSelectionReward(96),
ActivityWatcherBatch(97),
HitTreeDrop(98),
GetHomeLevelupReward(99),
HomeDefaultFurniture(100),
ActivityCond(101),
BattlePassNotify(102),
PlayerUseItem(1001),
DropItem(1002),
WeaponUpgrade(1011),
WeaponPromote(1012),
WeaponAwaken(1013),
RelicUpgrade(1014),
Ability(1015),
DungeonStatueDrop(1016),
OfflineMsg(1017),
AvatarUpgrade(1018),
AvatarPromote(1019),
QuestAction(1021),
CityLevelup(1022),
UpgradeSkill(1024),
UnlockTalent(1025),
UpgradeProudSkill(1026),
PlayerLevelLimitUp(1027),
DungeonDaily(1028),
ItemGiving(1030),
ForgeCost(1031),
InvestigationReward(1032),
InvestigationTargetReward(1033),
GadgetInteract(1034),
SeaLampCiMaterial(1036),
SeaLampContributionReward(1037),
SeaLampPhaseReward(1038),
SeaLampFlyLamp(1039),
AutoRecover(1040),
ActivityExpireItem(1041),
SubCoinNegative(1042),
BargainDeduct(1043),
BattlePassPaidReward(1044),
BattlePassLevelReward(1045),
TrialAvatarActivityFirstPassReward(1046),
BuyBattlePassLevel(1047),
GrantBirthdayBenefit(1048),
AchievementReward(1049),
AchievementGoalReward(1050),
FirstShareToSocialNetwork(1051),
DestroyMaterial(1052),
CodexLevelupReward(1053),
HuntingOfferReward(1054),
UseWidgetAnchorPoint(1055),
UseWidgetBonfire(1056),
UngradeWeaponReturnMaterial(1057),
UseWidgetOneoffGatherPointDetector(1058),
UseWidgetClientCollector(1059),
UseWidgetClientDetector(1060),
TakeGeneralReward(1061),
AsterTakeSpecialReward(1062),
RemoveCodexBook(1063),
OfferingItem(1064),
UseWidgetGadgetBuilder(1065),
EffigyFirstPassReward(1066),
EffigyReward(1067),
ReunionFirstGiftReward(1068),
ReunionSignInReward(1069),
ReunionWatcherReward(1070),
SalesmanMpReward(1071),
ActionReasionAvatarPromoteReward(1072),
BlessingRedeemReward(1073),
ActionMiracleRingReward(1074),
ExpeditionReward(1075),
TreasureMapRemoveDetector(1076),
MechanicusDungeonTicket(1077),
MechanicusLevelupGear(1078),
MechanicusBattleSettle(1079),
RegionSearchReward(1080),
UnlockCoopChapter(1081),
TakeCoopReward(1082),
FleurFairDungeonReward(1083),
ActivityScore(1084),
ChannellerSlabOneoffDungeonReward(1085),
FurnitureMakeStart(1086),
FurnitureMakeTake(1087),
FurnitureMakeCancel(1088),
FurnitureMakeFastFinish(1089),
ChannellerSlabLoopDungeonFirstPassReward(1090),
ChannellerSlabLoopDungeonScoreReward(1091),
HomeLimitedShopBuy(1092),
HomeCoinCollect(1093);
private final int value;
private static final Int2ObjectMap<ActionReason> map = new Int2ObjectOpenHashMap<>();
private static final Map<String, ActionReason> stringMap = new HashMap<>();
static {
Stream.of(values()).forEach(e -> {
map.put(e.getValue(), e);
stringMap.put(e.name(), e);
});
}
private ActionReason(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public static ActionReason getTypeByValue(int value) {
return map.getOrDefault(value, None);
}
public static ActionReason getTypeByName(String name) {
return stringMap.getOrDefault(name, None);
}
}

View File

@@ -0,0 +1,45 @@
package emu.grasscutter.game.props;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
public enum ClimateType {
CLIMATE_NONE(0),
CLIMATE_SUNNY(1),
CLIMATE_CLOUDY(2),
CLIMATE_RAIN(3),
CLIMATE_THUNDERSTORM(4),
CLIMATE_SNOW(5),
CLIMATE_MIST(6);
private final int value;
private static final Int2ObjectMap<ClimateType> map = new Int2ObjectOpenHashMap<>();
private static final Map<String, ClimateType> stringMap = new HashMap<>();
static {
Stream.of(values()).forEach(e -> {
map.put(e.getValue(), e);
stringMap.put(e.name(), e);
});
}
private ClimateType(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public static ClimateType getTypeByValue(int value) {
return map.getOrDefault(value, CLIMATE_NONE);
}
public static ClimateType getTypeByName(String name) {
return stringMap.getOrDefault(name, CLIMATE_NONE);
}
}

View File

@@ -0,0 +1,76 @@
package emu.grasscutter.game.props;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import emu.grasscutter.utils.Utils;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
public enum ElementType {
None (0, FightProperty.FIGHT_PROP_MAX_FIRE_ENERGY),
Fire (1, FightProperty.FIGHT_PROP_MAX_FIRE_ENERGY, 10101, "TeamResonance_Fire_Lv2"),
Water (2, FightProperty.FIGHT_PROP_MAX_WATER_ENERGY, 10201, "TeamResonance_Water_Lv2"),
Grass (3, FightProperty.FIGHT_PROP_MAX_GRASS_ENERGY),
Electric (4, FightProperty.FIGHT_PROP_MAX_ELEC_ENERGY, 10401, "TeamResonance_Electric_Lv2"),
Ice (5, FightProperty.FIGHT_PROP_MAX_ICE_ENERGY, 10601, "TeamResonance_Ice_Lv2"),
Frozen (6, FightProperty.FIGHT_PROP_MAX_ICE_ENERGY),
Wind (7, FightProperty.FIGHT_PROP_MAX_WIND_ENERGY, 10301, "TeamResonance_Wind_Lv2"),
Rock (8, FightProperty.FIGHT_PROP_MAX_ROCK_ENERGY, 10701, "TeamResonance_Rock_Lv2"),
AntiFire (9, FightProperty.FIGHT_PROP_MAX_FIRE_ENERGY),
Default (255, FightProperty.FIGHT_PROP_MAX_FIRE_ENERGY, 10801, "TeamResonance_AllDifferent");
private final int value;
private final int teamResonanceId;
private final FightProperty energyProperty;
private final int configHash;
private static final Int2ObjectMap<ElementType> map = new Int2ObjectOpenHashMap<>();
private static final Map<String, ElementType> stringMap = new HashMap<>();
static {
Stream.of(values()).forEach(e -> {
map.put(e.getValue(), e);
stringMap.put(e.name(), e);
});
}
private ElementType(int value, FightProperty energyProperty) {
this(value, energyProperty, 0, null);
}
private ElementType(int value, FightProperty energyProperty, int teamResonanceId, String configName) {
this.value = value;
this.energyProperty = energyProperty;
this.teamResonanceId = teamResonanceId;
if (configName != null) {
this.configHash = Utils.abilityHash(configName);
} else {
this.configHash = 0;
}
}
public int getValue() {
return value;
}
public FightProperty getEnergyProperty() {
return energyProperty;
}
public int getTeamResonanceId() {
return teamResonanceId;
}
public int getConfigHash() {
return configHash;
}
public static ElementType getTypeByValue(int value) {
return map.getOrDefault(value, None);
}
public static ElementType getTypeByName(String name) {
return stringMap.getOrDefault(name, None);
}
}

View File

@@ -0,0 +1,70 @@
package emu.grasscutter.game.props;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
public enum EnterReason {
None(0),
Login(1),
DungeonReplay(11),
DungeonReviveOnWaypoint(12),
DungeonEnter(13),
DungeonQuit(14),
Gm(21),
QuestRollback(31),
Revival(32),
PersonalScene(41),
TransPoint(42),
ClientTransmit(43),
ForceDragBack(44),
TeamKick(51),
TeamJoin(52),
TeamBack(53),
Muip(54),
DungeonInviteAccept(55),
Lua(56),
ActivityLoadTerrain(57),
HostFromSingleToMp(58),
MpPlay(59),
AnchorPoint(60),
LuaSkipUi(61),
ReloadTerrain(62),
DraftTransfer(63),
EnterHome(64),
ExitHome(65),
ChangeHomeModule(66),
Gallery(67),
HomeSceneJump(68),
HideAndSeek(69);
private final int value;
private static final Int2ObjectMap<EnterReason> map = new Int2ObjectOpenHashMap<>();
private static final Map<String, EnterReason> stringMap = new HashMap<>();
static {
Stream.of(values()).forEach(e -> {
map.put(e.getValue(), e);
stringMap.put(e.name(), e);
});
}
private EnterReason(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public static EnterReason getTypeByValue(int value) {
return map.getOrDefault(value, None);
}
public static EnterReason getTypeByName(String name) {
return stringMap.getOrDefault(name, None);
}
}

View File

@@ -0,0 +1,21 @@
package emu.grasscutter.game.props;
public enum EntityIdType {
AVATAR (0x01),
MONSTER (0x02),
NPC (0x03),
GADGET (0x04),
WEAPON (0x06),
TEAM (0x09),
MPLEVEL (0x0b);
private final int id;
private EntityIdType(int id) {
this.id = id;
}
public int getId() {
return id;
}
}

View File

@@ -0,0 +1,136 @@
package emu.grasscutter.game.props;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
public enum FightProperty {
FIGHT_PROP_NONE(0),
FIGHT_PROP_BASE_HP(1),
FIGHT_PROP_HP(2),
FIGHT_PROP_HP_PERCENT(3),
FIGHT_PROP_BASE_ATTACK(4),
FIGHT_PROP_ATTACK(5),
FIGHT_PROP_ATTACK_PERCENT(6),
FIGHT_PROP_BASE_DEFENSE(7),
FIGHT_PROP_DEFENSE(8),
FIGHT_PROP_DEFENSE_PERCENT(9),
FIGHT_PROP_BASE_SPEED(10),
FIGHT_PROP_SPEED_PERCENT(11),
FIGHT_PROP_HP_MP_PERCENT(12),
FIGHT_PROP_ATTACK_MP_PERCENT(13),
FIGHT_PROP_CRITICAL(20),
FIGHT_PROP_ANTI_CRITICAL(21),
FIGHT_PROP_CRITICAL_HURT(22),
FIGHT_PROP_CHARGE_EFFICIENCY(23),
FIGHT_PROP_ADD_HURT(24),
FIGHT_PROP_SUB_HURT(25),
FIGHT_PROP_HEAL_ADD(26),
FIGHT_PROP_HEALED_ADD(27),
FIGHT_PROP_ELEMENT_MASTERY(28),
FIGHT_PROP_PHYSICAL_SUB_HURT(29),
FIGHT_PROP_PHYSICAL_ADD_HURT(30),
FIGHT_PROP_DEFENCE_IGNORE_RATIO(31),
FIGHT_PROP_DEFENCE_IGNORE_DELTA(32),
FIGHT_PROP_FIRE_ADD_HURT(40),
FIGHT_PROP_ELEC_ADD_HURT(41),
FIGHT_PROP_WATER_ADD_HURT(42),
FIGHT_PROP_GRASS_ADD_HURT(43),
FIGHT_PROP_WIND_ADD_HURT(44),
FIGHT_PROP_ROCK_ADD_HURT(45),
FIGHT_PROP_ICE_ADD_HURT(46),
FIGHT_PROP_HIT_HEAD_ADD_HURT(47),
FIGHT_PROP_FIRE_SUB_HURT(50),
FIGHT_PROP_ELEC_SUB_HURT(51),
FIGHT_PROP_WATER_SUB_HURT(52),
FIGHT_PROP_GRASS_SUB_HURT(53),
FIGHT_PROP_WIND_SUB_HURT(54),
FIGHT_PROP_ROCK_SUB_HURT(55),
FIGHT_PROP_ICE_SUB_HURT(56),
FIGHT_PROP_EFFECT_HIT(60),
FIGHT_PROP_EFFECT_RESIST(61),
FIGHT_PROP_FREEZE_RESIST(62),
FIGHT_PROP_TORPOR_RESIST(63),
FIGHT_PROP_DIZZY_RESIST(64),
FIGHT_PROP_FREEZE_SHORTEN(65),
FIGHT_PROP_TORPOR_SHORTEN(66),
FIGHT_PROP_DIZZY_SHORTEN(67),
FIGHT_PROP_MAX_FIRE_ENERGY(70),
FIGHT_PROP_MAX_ELEC_ENERGY(71),
FIGHT_PROP_MAX_WATER_ENERGY(72),
FIGHT_PROP_MAX_GRASS_ENERGY(73),
FIGHT_PROP_MAX_WIND_ENERGY(74),
FIGHT_PROP_MAX_ICE_ENERGY(75),
FIGHT_PROP_MAX_ROCK_ENERGY(76),
FIGHT_PROP_SKILL_CD_MINUS_RATIO(80),
FIGHT_PROP_SHIELD_COST_MINUS_RATIO(81),
FIGHT_PROP_CUR_FIRE_ENERGY(1000),
FIGHT_PROP_CUR_ELEC_ENERGY(1001),
FIGHT_PROP_CUR_WATER_ENERGY(1002),
FIGHT_PROP_CUR_GRASS_ENERGY(1003),
FIGHT_PROP_CUR_WIND_ENERGY(1004),
FIGHT_PROP_CUR_ICE_ENERGY(1005),
FIGHT_PROP_CUR_ROCK_ENERGY(1006),
FIGHT_PROP_CUR_HP(1010),
FIGHT_PROP_MAX_HP(2000),
FIGHT_PROP_CUR_ATTACK(2001),
FIGHT_PROP_CUR_DEFENSE(2002),
FIGHT_PROP_CUR_SPEED(2003),
FIGHT_PROP_NONEXTRA_ATTACK(3000),
FIGHT_PROP_NONEXTRA_DEFENSE(3001),
FIGHT_PROP_NONEXTRA_CRITICAL(3002),
FIGHT_PROP_NONEXTRA_ANTI_CRITICAL(3003),
FIGHT_PROP_NONEXTRA_CRITICAL_HURT(3004),
FIGHT_PROP_NONEXTRA_CHARGE_EFFICIENCY(3005),
FIGHT_PROP_NONEXTRA_ELEMENT_MASTERY(3006),
FIGHT_PROP_NONEXTRA_PHYSICAL_SUB_HURT(3007),
FIGHT_PROP_NONEXTRA_FIRE_ADD_HURT(3008),
FIGHT_PROP_NONEXTRA_ELEC_ADD_HURT(3009),
FIGHT_PROP_NONEXTRA_WATER_ADD_HURT(3010),
FIGHT_PROP_NONEXTRA_GRASS_ADD_HURT(3011),
FIGHT_PROP_NONEXTRA_WIND_ADD_HURT(3012),
FIGHT_PROP_NONEXTRA_ROCK_ADD_HURT(3013),
FIGHT_PROP_NONEXTRA_ICE_ADD_HURT(3014),
FIGHT_PROP_NONEXTRA_FIRE_SUB_HURT(3015),
FIGHT_PROP_NONEXTRA_ELEC_SUB_HURT(3016),
FIGHT_PROP_NONEXTRA_WATER_SUB_HURT(3017),
FIGHT_PROP_NONEXTRA_GRASS_SUB_HURT(3018),
FIGHT_PROP_NONEXTRA_WIND_SUB_HURT(3019),
FIGHT_PROP_NONEXTRA_ROCK_SUB_HURT(3020),
FIGHT_PROP_NONEXTRA_ICE_SUB_HURT(3021),
FIGHT_PROP_NONEXTRA_SKILL_CD_MINUS_RATIO(3022),
FIGHT_PROP_NONEXTRA_SHIELD_COST_MINUS_RATIO(3023),
FIGHT_PROP_NONEXTRA_PHYSICAL_ADD_HURT(3024);
private final int id;
private static final Int2ObjectMap<FightProperty> map = new Int2ObjectOpenHashMap<>();
private static final Map<String, FightProperty> stringMap = new HashMap<>();
public static final int[] fightProps = new int[] {1, 4, 7, 20, 21, 22, 23, 26, 27, 28, 29, 30, 40, 41, 42, 43, 44, 45, 46, 50, 51, 52, 53, 54, 55, 56, 2000, 2001, 2002, 2003, 1010};
static {
Stream.of(values()).forEach(e -> {
map.put(e.getId(), e);
stringMap.put(e.name(), e);
});
}
private FightProperty(int id) {
this.id = id;
}
public int getId() {
return id;
}
public static FightProperty getPropById(int value) {
return map.getOrDefault(value, FIGHT_PROP_NONE);
}
public static FightProperty getPropByName(String name) {
return stringMap.getOrDefault(name, FIGHT_PROP_NONE);
}
}

View File

@@ -0,0 +1,100 @@
package emu.grasscutter.game.props;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
public enum GrowCurve {
GROW_CURVE_NONE(0),
GROW_CURVE_HP(1),
GROW_CURVE_ATTACK(2),
GROW_CURVE_STAMINA(3),
GROW_CURVE_STRIKE(4),
GROW_CURVE_ANTI_STRIKE(5),
GROW_CURVE_ANTI_STRIKE1(6),
GROW_CURVE_ANTI_STRIKE2(7),
GROW_CURVE_ANTI_STRIKE3(8),
GROW_CURVE_STRIKE_HURT(9),
GROW_CURVE_ELEMENT(10),
GROW_CURVE_KILL_EXP(11),
GROW_CURVE_DEFENSE(12),
GROW_CURVE_ATTACK_BOMB(13),
GROW_CURVE_HP_LITTLEMONSTER(14),
GROW_CURVE_ELEMENT_MASTERY(15),
GROW_CURVE_PROGRESSION(16),
GROW_CURVE_DEFENDING(17),
GROW_CURVE_MHP(18),
GROW_CURVE_MATK(19),
GROW_CURVE_TOWERATK(20),
GROW_CURVE_HP_S5(21),
GROW_CURVE_HP_S4(22),
GROW_CURVE_HP_2(23),
GROW_CURVE_ATTACK_S5(31),
GROW_CURVE_ATTACK_S4(32),
GROW_CURVE_ATTACK_S3(33),
GROW_CURVE_STRIKE_S5(34),
GROW_CURVE_DEFENSE_S5(41),
GROW_CURVE_DEFENSE_S4(42),
GROW_CURVE_ATTACK_101(1101),
GROW_CURVE_ATTACK_102(1102),
GROW_CURVE_ATTACK_103(1103),
GROW_CURVE_ATTACK_104(1104),
GROW_CURVE_ATTACK_105(1105),
GROW_CURVE_ATTACK_201(1201),
GROW_CURVE_ATTACK_202(1202),
GROW_CURVE_ATTACK_203(1203),
GROW_CURVE_ATTACK_204(1204),
GROW_CURVE_ATTACK_205(1205),
GROW_CURVE_ATTACK_301(1301),
GROW_CURVE_ATTACK_302(1302),
GROW_CURVE_ATTACK_303(1303),
GROW_CURVE_ATTACK_304(1304),
GROW_CURVE_ATTACK_305(1305),
GROW_CURVE_CRITICAL_101(2101),
GROW_CURVE_CRITICAL_102(2102),
GROW_CURVE_CRITICAL_103(2103),
GROW_CURVE_CRITICAL_104(2104),
GROW_CURVE_CRITICAL_105(2105),
GROW_CURVE_CRITICAL_201(2201),
GROW_CURVE_CRITICAL_202(2202),
GROW_CURVE_CRITICAL_203(2203),
GROW_CURVE_CRITICAL_204(2204),
GROW_CURVE_CRITICAL_205(2205),
GROW_CURVE_CRITICAL_301(2301),
GROW_CURVE_CRITICAL_302(2302),
GROW_CURVE_CRITICAL_303(2303),
GROW_CURVE_CRITICAL_304(2304),
GROW_CURVE_CRITICAL_305(2305);
private final int id;
private static final Int2ObjectMap<GrowCurve> map = new Int2ObjectOpenHashMap<>();
private static final Map<String, GrowCurve> stringMap = new HashMap<>();
public static final int[] fightProps = new int[] {1, 4, 7, 20, 21, 22, 23, 26, 27, 28, 29, 30, 40, 41, 42, 43, 44, 45, 46, 50, 51, 52, 53, 54, 55, 56, 2000, 2001, 2002, 2003, 1010};
static {
Stream.of(values()).forEach(e -> {
map.put(e.getId(), e);
stringMap.put(e.name(), e);
});
}
private GrowCurve(int id) {
this.id = id;
}
public int getId() {
return id;
}
public static GrowCurve getPropById(int value) {
return map.getOrDefault(value, GROW_CURVE_NONE);
}
public static GrowCurve getPropByName(String name) {
return stringMap.getOrDefault(name, GROW_CURVE_NONE);
}
}

View File

@@ -0,0 +1,42 @@
package emu.grasscutter.game.props;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
public enum LifeState {
LIFE_NONE(0),
LIFE_ALIVE(1),
LIFE_DEAD(2),
LIFE_REVIVE(3);
private final int value;
private static final Int2ObjectMap<LifeState> map = new Int2ObjectOpenHashMap<>();
private static final Map<String, LifeState> stringMap = new HashMap<>();
static {
Stream.of(values()).forEach(e -> {
map.put(e.getValue(), e);
stringMap.put(e.name(), e);
});
}
private LifeState(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public static LifeState getTypeByValue(int value) {
return map.getOrDefault(value, LIFE_NONE);
}
public static LifeState getTypeByName(String name) {
return stringMap.getOrDefault(name, LIFE_NONE);
}
}

View File

@@ -0,0 +1,204 @@
package emu.grasscutter.game.props;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
public enum OpenState {
OPEN_STATE_NONE(0),
OPEN_STATE_PAIMON(1),
OPEN_STATE_PAIMON_NAVIGATION(2),
OPEN_STATE_AVATAR_PROMOTE(3),
OPEN_STATE_AVATAR_TALENT(4),
OPEN_STATE_WEAPON_PROMOTE(5),
OPEN_STATE_WEAPON_AWAKEN(6),
OPEN_STATE_QUEST_REMIND(7),
OPEN_STATE_GAME_GUIDE(8),
OPEN_STATE_COOK(9),
OPEN_STATE_WEAPON_UPGRADE(10),
OPEN_STATE_RELIQUARY_UPGRADE(11),
OPEN_STATE_RELIQUARY_PROMOTE(12),
OPEN_STATE_WEAPON_PROMOTE_GUIDE(13),
OPEN_STATE_WEAPON_CHANGE_GUIDE(14),
OPEN_STATE_PLAYER_LVUP_GUIDE(15),
OPEN_STATE_FRESHMAN_GUIDE(16),
OPEN_STATE_SKIP_FRESHMAN_GUIDE(17),
OPEN_STATE_GUIDE_MOVE_CAMERA(18),
OPEN_STATE_GUIDE_SCALE_CAMERA(19),
OPEN_STATE_GUIDE_KEYBOARD(20),
OPEN_STATE_GUIDE_MOVE(21),
OPEN_STATE_GUIDE_JUMP(22),
OPEN_STATE_GUIDE_SPRINT(23),
OPEN_STATE_GUIDE_MAP(24),
OPEN_STATE_GUIDE_ATTACK(25),
OPEN_STATE_GUIDE_FLY(26),
OPEN_STATE_GUIDE_TALENT(27),
OPEN_STATE_GUIDE_RELIC(28),
OPEN_STATE_GUIDE_RELIC_PROM(29),
OPEN_STATE_COMBINE(30),
OPEN_STATE_GACHA(31),
OPEN_STATE_GUIDE_GACHA(32),
OPEN_STATE_GUIDE_TEAM(33),
OPEN_STATE_GUIDE_PROUD(34),
OPEN_STATE_GUIDE_AVATAR_PROMOTE(35),
OPEN_STATE_GUIDE_ADVENTURE_CARD(36),
OPEN_STATE_FORGE(37),
OPEN_STATE_GUIDE_BAG(38),
OPEN_STATE_EXPEDITION(39),
OPEN_STATE_GUIDE_ADVENTURE_DAILYTASK(40),
OPEN_STATE_GUIDE_ADVENTURE_DUNGEON(41),
OPEN_STATE_TOWER(42),
OPEN_STATE_WORLD_STAMINA(43),
OPEN_STATE_TOWER_FIRST_ENTER(44),
OPEN_STATE_RESIN(45),
OPEN_STATE_LIMIT_REGION_FRESHMEAT(47),
OPEN_STATE_LIMIT_REGION_GLOBAL(48),
OPEN_STATE_MULTIPLAYER(49),
OPEN_STATE_GUIDE_MOUSEPC(50),
OPEN_STATE_GUIDE_MULTIPLAYER(51),
OPEN_STATE_GUIDE_DUNGEONREWARD(52),
OPEN_STATE_GUIDE_BLOSSOM(53),
OPEN_STATE_AVATAR_FASHION(54),
OPEN_STATE_PHOTOGRAPH(55),
OPEN_STATE_GUIDE_KSLQUEST(56),
OPEN_STATE_PERSONAL_LINE(57),
OPEN_STATE_GUIDE_PERSONAL_LINE(58),
OPEN_STATE_GUIDE_APPEARANCE(59),
OPEN_STATE_GUIDE_PROCESS(60),
OPEN_STATE_GUIDE_PERSONAL_LINE_KEY(61),
OPEN_STATE_GUIDE_WIDGET(62),
OPEN_STATE_GUIDE_ACTIVITY_SKILL_ASTER(63),
OPEN_STATE_GUIDE_COLDCLIMATE(64),
OPEN_STATE_DERIVATIVE_MALL(65),
OPEN_STATE_GUIDE_EXITMULTIPLAYER(66),
OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD(67),
OPEN_STATE_GUIDE_THEATREMACHANICUS_REBUILD(68),
OPEN_STATE_GUIDE_THEATREMACHANICUS_CARD(69),
OPEN_STATE_GUIDE_THEATREMACHANICUS_MONSTER(70),
OPEN_STATE_GUIDE_THEATREMACHANICUS_MISSION_CHECK(71),
OPEN_STATE_GUIDE_THEATREMACHANICUS_BUILD_SELECT(72),
OPEN_STATE_GUIDE_THEATREMACHANICUS_CHALLENGE_START(73),
OPEN_STATE_GUIDE_CONVERT(74),
OPEN_STATE_GUIDE_THEATREMACHANICUS_MULTIPLAYER(75),
OPEN_STATE_GUIDE_COOP_TASK(76),
OPEN_STATE_GUIDE_HOMEWORLD_ADEPTIABODE(77),
OPEN_STATE_GUIDE_HOMEWORLD_DEPLOY(78),
OPEN_STATE_GUIDE_CHANNELLERSLAB_EQUIP(79),
OPEN_STATE_GUIDE_CHANNELLERSLAB_MP_SOLUTION(80),
OPEN_STATE_GUIDE_CHANNELLERSLAB_POWER(81),
OPEN_STATE_GUIDE_HIDEANDSEEK_SKILL(82),
OPEN_STATE_GUIDE_HOMEWORLD_MAPLIST(83),
OPEN_STATE_GUIDE_RELICRESOLVE(84),
OPEN_STATE_GUIDE_GGUIDE(85),
OPEN_STATE_GUIDE_GGUIDE_HINT(86),
OPEN_STATE_CITY_REPUATION_MENGDE(800),
OPEN_STATE_CITY_REPUATION_LIYUE(801),
OPEN_STATE_CITY_REPUATION_UI_HINT(802),
OPEN_STATE_CITY_REPUATION_INAZUMA(803),
OPEN_STATE_SHOP_TYPE_MALL(900),
OPEN_STATE_SHOP_TYPE_RECOMMANDED(901),
OPEN_STATE_SHOP_TYPE_GENESISCRYSTAL(902),
OPEN_STATE_SHOP_TYPE_GIFTPACKAGE(903),
OPEN_STATE_SHOP_TYPE_PAIMON(1001),
OPEN_STATE_SHOP_TYPE_CITY(1002),
OPEN_STATE_SHOP_TYPE_BLACKSMITH(1003),
OPEN_STATE_SHOP_TYPE_GROCERY(1004),
OPEN_STATE_SHOP_TYPE_FOOD(1005),
OPEN_STATE_SHOP_TYPE_SEA_LAMP(1006),
OPEN_STATE_SHOP_TYPE_VIRTUAL_SHOP(1007),
OPEN_STATE_SHOP_TYPE_LIYUE_GROCERY(1008),
OPEN_STATE_SHOP_TYPE_LIYUE_SOUVENIR(1009),
OPEN_STATE_SHOP_TYPE_LIYUE_RESTAURANT(1010),
OPEN_STATE_SHOP_TYPE_INAZUMA_SOUVENIR(1011),
OPEN_STATE_SHOP_TYPE_NPC_TOMOKI(1012),
OPEN_ADVENTURE_MANUAL(1100),
OPEN_ADVENTURE_MANUAL_CITY_MENGDE(1101),
OPEN_ADVENTURE_MANUAL_CITY_LIYUE(1102),
OPEN_ADVENTURE_MANUAL_MONSTER(1103),
OPEN_ADVENTURE_MANUAL_BOSS_DUNGEON(1104),
OPEN_STATE_ACTIVITY_SEALAMP(1200),
OPEN_STATE_ACTIVITY_SEALAMP_TAB2(1201),
OPEN_STATE_ACTIVITY_SEALAMP_TAB3(1202),
OPEN_STATE_BATTLE_PASS(1300),
OPEN_STATE_BATTLE_PASS_ENTRY(1301),
OPEN_STATE_ACTIVITY_CRUCIBLE(1400),
OPEN_STATE_ACTIVITY_NEWBEEBOUNS_OPEN(1401),
OPEN_STATE_ACTIVITY_NEWBEEBOUNS_CLOSE(1402),
OPEN_STATE_ACTIVITY_ENTRY_OPEN(1403),
OPEN_STATE_MENGDE_INFUSEDCRYSTAL(1404),
OPEN_STATE_LIYUE_INFUSEDCRYSTAL(1405),
OPEN_STATE_SNOW_MOUNTAIN_ELDER_TREE(1406),
OPEN_STATE_MIRACLE_RING(1407),
OPEN_STATE_COOP_LINE(1408),
OPEN_STATE_INAZUMA_INFUSEDCRYSTAL(1409),
OPEN_STATE_FISH(1410),
OPEN_STATE_GUIDE_SUMO_TEAM_SKILL(1411),
OPEN_STATE_GUIDE_FISH_RECIPE(1412),
OPEN_STATE_HOME(1500),
OPEN_STATE_ACTIVITY_HOMEWORLD(1501),
OPEN_STATE_ADEPTIABODE(1502),
OPEN_STATE_HOME_AVATAR(1503),
OPEN_STATE_HOME_EDIT(1504),
OPEN_STATE_HOME_EDIT_TIPS(1505),
OPEN_STATE_RELIQUARY_DECOMPOSE(1600),
OPEN_STATE_ACTIVITY_H5(1700),
OPEN_STATE_ORAIONOKAMI(2000),
OPEN_STATE_GUIDE_CHESS_MISSION_CHECK(2001),
OPEN_STATE_GUIDE_CHESS_BUILD(2002),
OPEN_STATE_GUIDE_CHESS_WIND_TOWER_CIRCLE(2003),
OPEN_STATE_GUIDE_CHESS_CARD_SELECT(2004),
OPEN_STATE_INAZUMA_MAINQUEST_FINISHED(2005),
OPEN_STATE_PAIMON_LVINFO(2100),
OPEN_STATE_TELEPORT_HUD(2101),
OPEN_STATE_GUIDE_MAP_UNLOCK(2102),
OPEN_STATE_GUIDE_PAIMON_LVINFO(2103),
OPEN_STATE_GUIDE_AMBORTRANSPORT(2104),
OPEN_STATE_GUIDE_FLY_SECOND(2105),
OPEN_STATE_GUIDE_KAEYA_CLUE(2106),
OPEN_STATE_CAPTURE_CODEX(2107),
OPEN_STATE_ACTIVITY_FISH_OPEN(2200),
OPEN_STATE_ACTIVITY_FISH_CLOSE(2201),
OPEN_STATE_GUIDE_ROGUE_MAP(2205),
OPEN_STATE_GUIDE_ROGUE_RUNE(2206),
OPEN_STATE_GUIDE_BARTENDER_FORMULA(2210),
OPEN_STATE_GUIDE_BARTENDER_MIX(2211),
OPEN_STATE_GUIDE_BARTENDER_CUP(2212),
OPEN_STATE_GUIDE_MAIL_FAVORITES(2400),
OPEN_STATE_GUIDE_POTION_CONFIGURE(2401),
OPEN_STATE_GUIDE_LANV2_FIREWORK(2402),
OPEN_STATE_LOADINGTIPS_ENKANOMIYA(2403),
OPEN_STATE_MICHIAE_CASKET(2500),
OPEN_STATE_MAIL_COLLECT_UNLOCK_RED_POINT(2501),
OPEN_STATE_LUMEN_STONE(2600),
OPEN_STATE_GUIDE_CRYSTALLINK_BUFF(2601);
private final int value;
private static final Int2ObjectMap<OpenState> map = new Int2ObjectOpenHashMap<>();
private static final Map<String, OpenState> stringMap = new HashMap<>();
static {
Stream.of(values()).forEach(e -> {
map.put(e.getValue(), e);
stringMap.put(e.name(), e);
});
}
private OpenState(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public static OpenState getTypeByValue(int value) {
return map.getOrDefault(value, OPEN_STATE_NONE);
}
public static OpenState getTypeByName(String name) {
return stringMap.getOrDefault(name, OPEN_STATE_NONE);
}
}

View File

@@ -0,0 +1,70 @@
package emu.grasscutter.game.props;
import java.util.stream.Stream;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
public enum PlayerProperty {
PROP_EXP (1001),
PROP_BREAK_LEVEL (1002),
PROP_SATIATION_VAL (1003),
PROP_SATIATION_PENALTY_TIME (1004),
PROP_LEVEL (4001),
PROP_LAST_CHANGE_AVATAR_TIME (10001),
PROP_MAX_SPRING_VOLUME (10002),
PROP_CUR_SPRING_VOLUME (10003),
PROP_IS_SPRING_AUTO_USE (10004),
PROP_SPRING_AUTO_USE_PERCENT (10005),
PROP_IS_FLYABLE (10006),
PROP_IS_WEATHER_LOCKED (10007),
PROP_IS_GAME_TIME_LOCKED (10008),
PROP_IS_TRANSFERABLE (10009),
PROP_MAX_STAMINA (10010),
PROP_CUR_PERSIST_STAMINA (10011),
PROP_CUR_TEMPORARY_STAMINA (10012),
PROP_PLAYER_LEVEL (10013),
PROP_PLAYER_EXP (10014),
PROP_PLAYER_HCOIN (10015), // Primogem
PROP_PLAYER_SCOIN (10016), // Mora
PROP_PLAYER_MP_SETTING_TYPE (10017),
PROP_IS_MP_MODE_AVAILABLE (10018),
PROP_PLAYER_WORLD_LEVEL (10019),
PROP_PLAYER_RESIN (10020),
PROP_PLAYER_WAIT_SUB_HCOIN (10022),
PROP_PLAYER_WAIT_SUB_SCOIN (10023),
PROP_IS_ONLY_MP_WITH_PS_PLAYER (10024),
PROP_PLAYER_MCOIN (10025), // Genesis Crystal
PROP_PLAYER_WAIT_SUB_MCOIN (10026),
PROP_PLAYER_LEGENDARY_KEY (10027),
PROP_IS_HAS_FIRST_SHARE (10028),
PROP_PLAYER_FORGE_POINT (10029),
PROP_CUR_CLIMATE_METER (10035),
PROP_CUR_CLIMATE_TYPE (10036),
PROP_CUR_CLIMATE_AREA_ID (10037),
PROP_CUR_CLIMATE_AREA_CLIMATE_TYPE (10038),
PROP_PLAYER_WORLD_LEVEL_LIMIT (10039),
PROP_PLAYER_WORLD_LEVEL_ADJUST_CD (10040),
PROP_PLAYER_LEGENDARY_DAILY_TASK_NUM (10041),
PROP_PLAYER_HOME_COIN (10042),
PROP_PLAYER_WAIT_SUB_HOME_COIN (10043);
private final int id;
private static final Int2ObjectMap<PlayerProperty> map = new Int2ObjectOpenHashMap<>();
static {
Stream.of(values()).forEach(e -> map.put(e.getId(), e));
}
private PlayerProperty(int id) {
this.id = id;
}
public int getId() {
return id;
}
public static PlayerProperty getPropById(int value) {
return map.getOrDefault(value, null);
}
}