Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ public ModelGroup getGroup() {
private SelectModelField collectToFriendList;
private SelectModelField sendFriendCard;
private BooleanModelField useProp;
private BooleanModelField usePropCollectTimes7Days;
private BooleanModelField usePropCollectHistoryAnimal7Days;
private BooleanModelField usePropCollectToFriendTimes7Days;

@Override
public ModelFields getFields() {
Expand All @@ -44,7 +47,10 @@ public ModelFields getFields() {
modelFields.addField(collectToFriendType = new ChoiceModelField("collectToFriendType", "帮抽卡 | 动作", CollectToFriendType.COLLECT, CollectToFriendType.nickNames));
modelFields.addField(collectToFriendList = new SelectModelField("collectToFriendList", "帮抽卡 | 好友列表", new LinkedHashSet<>(), AlipayUser::getList));
modelFields.addField(sendFriendCard = new SelectModelField("sendFriendCard", "送卡片好友列表(当前图鉴所有卡片)", new LinkedHashSet<>(), AlipayUser::getList));
modelFields.addField(useProp = new BooleanModelField("useProp", "使用道具", false));
modelFields.addField(useProp = new BooleanModelField("useProp", "使用道具 | 所有", false));
modelFields.addField(usePropCollectTimes7Days = new BooleanModelField("usePropCollectTimes7Days", "使用道具 | 抽卡道具", false));
modelFields.addField(usePropCollectHistoryAnimal7Days = new BooleanModelField("usePropCollectHistoryAnimal7Days", "使用道具 | 抽历史卡道具", false));
modelFields.addField(usePropCollectToFriendTimes7Days = new BooleanModelField("usePropCollectToFriendTimes7Days", "使用道具 | 抽好友卡道具", false));
return modelFields;
}

Expand Down Expand Up @@ -234,18 +240,34 @@ private void propList() {
for (int i = 0; i < propList.length(); i++) {
JSONObject prop = propList.getJSONObject(i);
String propType = prop.getString("propType");

boolean usePropType = useProp.getValue();
if ("COLLECT_TIMES_7_DAYS".equals(propType)) {
usePropType = usePropType || usePropCollectTimes7Days.getValue();
}
if ("COLLECT_HISTORY_ANIMAL_7_DAYS".equals(propType)) {
usePropType = usePropType || usePropCollectHistoryAnimal7Days.getValue();
}
if ("COLLECT_TO_FRIEND_TIMES_7_DAYS".equals(propType)) {
usePropType = usePropType || usePropCollectToFriendTimes7Days.getValue();
}
if (!usePropType) {
continue;
}

JSONArray propIdList = prop.getJSONArray("propIdList");
String propId = propIdList.getString(0);
String propName = prop.getJSONObject("propConfig").getString("propName");
int holdsNum = prop.optInt("holdsNum", 0);
jo = new JSONObject(AntDodoRpcCall.consumeProp(propId, propType));
TimeUtil.sleep(300);
if (!"SUCCESS".equals(jo.getString("resultCode"))) {
Log.record(jo.getString("resultDesc"));
Log.i(jo.toString());
continue;
}

if ("COLLECT_TIMES_7_DAYS".equals(propType)) {
JSONArray propIdList = prop.getJSONArray("propIdList");
String propId = propIdList.getString(0);
String propName = prop.getJSONObject("propConfig").getString("propName");
int holdsNum = prop.optInt("holdsNum", 0);
jo = new JSONObject(AntDodoRpcCall.consumeProp(propId, propType));
TimeUtil.sleep(300);
if (!"SUCCESS".equals(jo.getString("resultCode"))) {
Log.record(jo.getString("resultDesc"));
Log.i(jo.toString());
continue;
}
JSONObject useResult = jo.getJSONObject("data").getJSONObject("useResult");
JSONObject animal = useResult.getJSONObject("animal");
String ecosystem = animal.getString("ecosystem");
Expand All @@ -261,25 +283,11 @@ private void propList() {
break;
}
}
if (holdsNum > 1) {
continue th;
}
} else if (useProp.getValue()) {
JSONArray propIdList = prop.getJSONArray("propIdList");
String propId = propIdList.getString(0);
String propName = prop.getJSONObject("propConfig").getString("propName");
int holdsNum = prop.optInt("holdsNum", 0);
jo = new JSONObject(AntDodoRpcCall.consumeProp(propId, propType));
TimeUtil.sleep(300);
if (!"SUCCESS".equals(jo.getString("resultCode"))) {
Log.record(jo.getString("resultDesc"));
Log.i(jo.toString());
continue;
}
} else {
Log.forest("使用道具🎭[" + propName + "]");
if (holdsNum > 1) {
continue th;
}
}
if (holdsNum > 1) {
continue th;
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public class AntFarm extends ModelTask {
private double benevolenceScore;
private double harvestBenevolenceScore;
private int unreceiveTaskAward = 0;
private double finalScore = 0d;

private FarmTool[] farmTools;

Expand Down Expand Up @@ -91,6 +92,8 @@ public ModelGroup getGroup() {
private BooleanModelField answerQuestion;
private BooleanModelField receiveFarmTaskAward;
private BooleanModelField useAccelerateTool;
private BooleanModelField useAccelerateToolContinue;
private BooleanModelField useAccelerateToolWhenMaxEmotion;
private SelectAndCountModelField feedFriendAnimalList;
private BooleanModelField notifyFriend;
private ChoiceModelField notifyFriendType;
Expand Down Expand Up @@ -134,7 +137,9 @@ public ModelFields getFields() {
modelFields.addField(notifyFriendList = new SelectModelField("notifyFriendList", "通知赶鸡 | 好友列表", new LinkedHashSet<>(), AlipayUser::getList));
modelFields.addField(donation = new BooleanModelField("donation", "每日捐蛋 | 开启", false));
modelFields.addField(donationCount = new ChoiceModelField("donationCount", "每日捐蛋 | 次数", DonationCount.ONE, DonationCount.nickNames));
modelFields.addField(useAccelerateTool = new BooleanModelField("useAccelerateTool", "使用加速卡", false));
modelFields.addField(useAccelerateTool = new BooleanModelField("useAccelerateTool", "加速卡 | 使用", false));
modelFields.addField(useAccelerateToolContinue = new BooleanModelField("useAccelerateToolContinue", "加速卡 | 连续使用", false));
modelFields.addField(useAccelerateToolWhenMaxEmotion = new BooleanModelField("useAccelerateToolWhenMaxEmotion", "加速卡 | 仅在满状态时使用", false));
modelFields.addField(useSpecialFood = new BooleanModelField("useSpecialFood", "使用特殊食品", false));
modelFields.addField(useNewEggTool = new BooleanModelField("useNewEggTool", "使用新蛋卡", false));
modelFields.addField(receiveFarmTaskAward = new BooleanModelField("receiveFarmTaskAward", "收取饲料奖励", false));
Expand Down Expand Up @@ -317,15 +322,16 @@ public void run() {

if (needReload) {
enterFarm();
syncAnimalStatus(ownerFarmId);
}

autoFeedAnimal();

// 小鸡换装
if (listOrnaments.getValue() && Status.canOrnamentToday()) {
listOrnaments();
}

autoFeedAnimal();

if (unreceiveTaskAward > 0) {
Log.record("还有待领取的饲料");
receiveFarmTaskAward();
Expand Down Expand Up @@ -1164,10 +1170,13 @@ private void listFarmTool() {
}
}

private boolean useAccelerateTool() {
private Boolean useAccelerateTool() {
if (!Status.canUseAccelerateTool()) {
return false;
}
if (!useAccelerateToolContinue.getValue() && AnimalBuff.ACCELERATING.name().equals(ownerAnimal.animalBuff)) {
return false;
}
syncAnimalStatus(ownerFarmId);
double consumeSpeed = 0d;
double allFoodHaveEatten = 0d;
Expand All @@ -1182,12 +1191,19 @@ private boolean useAccelerateTool() {
// consumeSpeed: g/s
// AccelerateTool: -1h = -60m = -3600s
boolean isUseAccelerateTool = false;
while (180 - allFoodHaveEatten >= consumeSpeed * 3600
&& useFarmTool(ownerFarmId, ToolType.ACCELERATETOOL)) {
allFoodHaveEatten += consumeSpeed * 3600;
isUseAccelerateTool = true;
Status.useAccelerateTool();
TimeUtil.sleep(1000);
while (180 - allFoodHaveEatten >= consumeSpeed * 3600) {
if ((useAccelerateToolWhenMaxEmotion.getValue() && finalScore != 100)) {
break;
}
if (useFarmTool(ownerFarmId, ToolType.ACCELERATETOOL)) {
allFoodHaveEatten += consumeSpeed * 3600;
isUseAccelerateTool = true;
Status.useAccelerateTool();
TimeUtil.sleep(1000);
}
if (!isUseAccelerateTool || !useAccelerateToolContinue.getValue()) {
break;
}
}
return isUseAccelerateTool;
}
Expand Down Expand Up @@ -1405,6 +1421,9 @@ private void parseSyncAnimalStatusResponse(String resp) {
if (!jo.has("subFarmVO")) {
return;
}
if (jo.has("emotionInfo")) {
finalScore = jo.getJSONObject("emotionInfo").getDouble("finalScore");
}
JSONObject subFarmVO = jo.getJSONObject("subFarmVO");
if (subFarmVO.has("foodStock")) {
foodStock = subFarmVO.getInt("foodStock");
Expand Down