292 lines
7.0 KiB
Java
292 lines
7.0 KiB
Java
package gui.tw.diaoyu;
|
|
|
|
import cn.hutool.core.lang.WeightRandom;
|
|
import cn.hutool.core.util.RandomUtil;
|
|
import handling.world.MapleParty;
|
|
import provider.MapleDataTool;
|
|
import scripting.PortalPlayerInteraction;
|
|
import scripting.PortalScript;
|
|
import server.MapleItemInformationProvider;
|
|
import server.life.MapleLifeFactory;
|
|
import server.maps.MapleMap;
|
|
import server.maps.MapleMapFactory;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Comparator;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
public class DiaoyuConfig {
|
|
|
|
|
|
|
|
//包含高级鱼
|
|
List<DiaoyuItem> items = new ArrayList<>();
|
|
|
|
//不包含高级鱼
|
|
List<DiaoyuItem> items2 = new ArrayList<>();
|
|
|
|
List<DiaoyuItem> baodi = new ArrayList<>();
|
|
List<DiaoyuItem> baodi2 = new ArrayList<>();
|
|
|
|
List<DiaoYuMap> mapIds=new ArrayList<>();
|
|
|
|
public List<DiaoYuMap> getMapIds() {
|
|
return mapIds;
|
|
}
|
|
|
|
public void setMapIds(List<DiaoYuMap> mapIds) {
|
|
this.mapIds.clear();
|
|
for (DiaoYuMap mapId : mapIds) {
|
|
mapId.setName(MapleDataTool.getString("mapName", MapleMapFactory.nameData.getChildByPath(getMapStringName(mapId.getMapId())), ""));
|
|
this.mapIds.add(mapId);
|
|
}
|
|
}
|
|
|
|
List<BL> bls=new ArrayList<>();
|
|
|
|
List<DiaoyuItem> All= new ArrayList<>();
|
|
|
|
|
|
int count = 0;
|
|
|
|
int count2 = 0;
|
|
|
|
|
|
int dykg = 1;
|
|
int ryyz = 1;
|
|
|
|
int dytx = 1;
|
|
|
|
int kjbzdc = 1;
|
|
|
|
int bldj = 1;
|
|
|
|
int dyyg = 5340001;
|
|
|
|
int dyyz = 3011000;
|
|
|
|
int dyjg = 1000;
|
|
|
|
int ptye = 2300000;
|
|
|
|
int gjye = 2300001;
|
|
//公告
|
|
String notice = "";
|
|
|
|
|
|
public List<BL> getBls() {
|
|
return bls;
|
|
}
|
|
|
|
public void setBls(List<BL> bls) {
|
|
this.bls = bls;
|
|
}
|
|
|
|
public void add(DiaoyuItem item) {
|
|
All.add(item);
|
|
item.setItemName(MapleItemInformationProvider.getInstance().getName(item.getItemId()));
|
|
|
|
if (item.getChance()>0){
|
|
item.setChance2(item.getChance());
|
|
this.items.add(item);
|
|
count +=item.getChance();
|
|
//根据几率进行排序
|
|
items = items.stream().sorted(Comparator.comparingInt(DiaoyuItem::getChance)).collect(Collectors.toList());
|
|
if (item.getIsAdvanced()!=1){
|
|
items2.add(item);
|
|
count2 +=item.getChance();
|
|
}
|
|
items2 = items2.stream().sorted(Comparator.comparingInt(DiaoyuItem::getChance)).collect(Collectors.toList());
|
|
}else {
|
|
item.setChance2(1);
|
|
this.baodi.add(item);
|
|
if (item.getIsAdvanced()!=1) {
|
|
this.baodi2.add(item);
|
|
}
|
|
}
|
|
}
|
|
|
|
public List<DiaoyuItem> getAll() {
|
|
return new ArrayList<>(this.All);
|
|
}
|
|
|
|
public void setAll(List<DiaoyuItem> all) {
|
|
items.clear();
|
|
items2.clear();
|
|
baodi.clear();
|
|
baodi2.clear();
|
|
All.clear();
|
|
for (DiaoyuItem diaoyuItem : all) {
|
|
add(diaoyuItem);
|
|
}
|
|
}
|
|
|
|
|
|
public DiaoyuItem getItem(boolean gj) {
|
|
int c = RandomUtil.randomInt(1, 1000000);
|
|
if (gj){
|
|
if (c<count){
|
|
return qzsj(items);
|
|
}else {
|
|
return qzsj(baodi);
|
|
}
|
|
}else {
|
|
if (c<count2){
|
|
return qzsj(items2);
|
|
}else {
|
|
return qzsj(baodi2);
|
|
}
|
|
}
|
|
}
|
|
|
|
public DiaoyuItem qzsj(List<DiaoyuItem> items) {
|
|
List<WeightRandom.WeightObj<DiaoyuItem>> weightList = new ArrayList<>();
|
|
for (DiaoyuItem item : items) {
|
|
weightList.add(new WeightRandom.WeightObj<>(item, item.getChance2()));
|
|
}
|
|
|
|
WeightRandom<DiaoyuItem> weightRandom = RandomUtil.weightRandom(weightList);
|
|
DiaoyuItem selectedItem = weightRandom.next();
|
|
return selectedItem;
|
|
}
|
|
|
|
|
|
public boolean isDyMap(int mapId) {
|
|
return mapIds.stream().anyMatch(mapId1 -> mapId1.getMapId() == mapId);
|
|
}
|
|
|
|
public int getDykg() {
|
|
return dykg;
|
|
}
|
|
|
|
public void setDykg(int dykg) {
|
|
this.dykg = dykg;
|
|
}
|
|
|
|
public int getRyyz() {
|
|
return ryyz;
|
|
}
|
|
|
|
public void setRyyz(int ryyz) {
|
|
this.ryyz = ryyz;
|
|
}
|
|
|
|
public int getDytx() {
|
|
return dytx;
|
|
}
|
|
|
|
public void setDytx(int dytx) {
|
|
this.dytx = dytx;
|
|
}
|
|
|
|
public int getKjbzdc() {
|
|
return kjbzdc;
|
|
}
|
|
|
|
public void setKjbzdc(int kjbzdc) {
|
|
this.kjbzdc = kjbzdc;
|
|
}
|
|
|
|
public int getBldj() {
|
|
return bldj;
|
|
}
|
|
|
|
public void setBldj(int bldj) {
|
|
this.bldj = bldj;
|
|
}
|
|
|
|
public int getDyyg() {
|
|
return dyyg;
|
|
}
|
|
|
|
public void setDyyg(int dyyg) {
|
|
this.dyyg = dyyg;
|
|
}
|
|
|
|
public int getDyyz() {
|
|
return dyyz;
|
|
}
|
|
|
|
public void setDyyz(int dyyz) {
|
|
this.dyyz = dyyz;
|
|
}
|
|
|
|
public int getDyjg() {
|
|
return dyjg;
|
|
}
|
|
|
|
public void setDyjg(int dyjg) {
|
|
this.dyjg = dyjg;
|
|
}
|
|
|
|
public int getPtye() {
|
|
return ptye;
|
|
}
|
|
|
|
public void setPtye(int ptye) {
|
|
this.ptye = ptye;
|
|
}
|
|
|
|
public String getNotice() {
|
|
return notice;
|
|
}
|
|
|
|
public void setNotice(String notice) {
|
|
this.notice = notice;
|
|
}
|
|
|
|
public int getGjye() {
|
|
return gjye;
|
|
}
|
|
|
|
public void setGjye(int gjye) {
|
|
|
|
|
|
|
|
this.gjye = gjye;
|
|
}
|
|
|
|
|
|
private static String getMapStringName(final int mapid) {
|
|
final StringBuilder builder = new StringBuilder();
|
|
if (mapid < 100000000) {
|
|
builder.append("maple");
|
|
} else if ((mapid >= 100000000 && mapid < 200000000) || mapid / 100000 == 5540) {
|
|
builder.append("victoria");
|
|
} else if (mapid >= 200000000 && mapid < 300000000) {
|
|
builder.append("ossyria");
|
|
} else if (mapid >= 300000000 && mapid < 400000000) {
|
|
builder.append("elin");
|
|
} else if (mapid >= 500000000 && mapid < 510000000) {
|
|
builder.append("thai");
|
|
} else if (mapid >= 540000000 && mapid < 600000000) {
|
|
builder.append("SG");
|
|
} else if (mapid >= 600000000 && mapid < 620000000) {
|
|
builder.append("MasteriaGL");
|
|
} else if ((mapid >= 670000000 && mapid < 677000000) || (mapid >= 678000000 && mapid < 682000000)) {
|
|
builder.append("global");
|
|
} else if (mapid >= 677000000 && mapid < 678000000) {
|
|
builder.append("Episode1GL");
|
|
} else if (mapid >= 682000000 && mapid < 683000000) {
|
|
builder.append("HalloweenGL");
|
|
} else if (mapid >= 683000000 && mapid < 684000000) {
|
|
builder.append("event");
|
|
} else if (mapid >= 684000000 && mapid < 685000000) {
|
|
builder.append("event_5th");
|
|
} else if (mapid >= 700000000 && mapid < 700000300) {
|
|
builder.append("wedding");
|
|
} else if (mapid >= 800000000 && mapid < 900000000) {
|
|
builder.append("jp");
|
|
} else if (mapid >= 700000000 && mapid < 782000002) {
|
|
builder.append("chinese");
|
|
} else {
|
|
builder.append("etc");
|
|
}
|
|
builder.append("/");
|
|
builder.append(mapid);
|
|
return builder.toString();
|
|
}
|
|
|
|
}
|