|
@@ -165,35 +165,56 @@ public class EquipTemplateService {
|
|
|
* @return
|
|
|
*/
|
|
|
public Equip randomEquip(String equipTemplateItemId,long userId){
|
|
|
+ return randomEquip(equipTemplateItemId,BigDecimal.ZERO,userId);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据装备库随机一件新的装备
|
|
|
+ * @param equipTemplateItemId 装备库的itemId
|
|
|
+ * @param excellentRate 增加的极品率
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Equip randomEquip(String equipTemplateItemId,BigDecimal excellentRate, long userId){
|
|
|
+ if(excellentRate == null){
|
|
|
+ excellentRate = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
//取到装备库
|
|
|
EquipTemplate equipTemplate = findByItemId(equipTemplateItemId);
|
|
|
-
|
|
|
- Equip equip = new Equip();
|
|
|
+ //将装备库属性拷贝到装备中
|
|
|
+ Equip equip = copyTemplate2Equip(equipTemplate,excellentRate);
|
|
|
+ equip.setUserId(userId);
|
|
|
//新建装备对应的物品类
|
|
|
Goods goods = equipTemplate.getGoods();
|
|
|
goods.setId(null);
|
|
|
goods.setType(0);
|
|
|
mongoTemplate.save(goods);
|
|
|
- //将装备库属性拷贝到装备中
|
|
|
//对应的物品数据是新建的
|
|
|
- BeanUtils.copyProperties(equipTemplate,equip);
|
|
|
- equip.setId(null);
|
|
|
equip.setItemId(goods.getId());
|
|
|
equip.setGoods(goods);
|
|
|
- equip.setName(equipTemplate.getGoods().getName());
|
|
|
- //品质
|
|
|
- boolean excellentFlag = RandomUtils.isExcellent(BigDecimal.ZERO);//是否生成极品
|
|
|
- equip.setQuality(excellentFlag?2:1);
|
|
|
- //固定属性值
|
|
|
- equip.setFixedEquipProperty(FixedEquipProperty.randomFixed(equipTemplate.getFixedEquipPropertyMin(),equipTemplate.getFixedEquipPropertyMax()));
|
|
|
- //额外属性值
|
|
|
- equip.setAttrTotal(RandomUtils.randomFromExcellent(equipTemplate.getTotalAttrMin(),equipTemplate.getTotalAttrMax(),excellentFlag));
|
|
|
- equip.setUndistributedAttr(equip.getAttrTotal());
|
|
|
-
|
|
|
- //初始化分配的具体属性点
|
|
|
- equip.setElseEquipProperty(ElseEquipProperty.resetElseEquipProperty());
|
|
|
- equip.setUserId(userId);
|
|
|
mongoTemplate.save(equip);
|
|
|
return equip;
|
|
|
}
|
|
|
+
|
|
|
+ public Equip copyTemplate2Equip(EquipTemplate equipTemplate,BigDecimal excellentRate){
|
|
|
+ //是否极品
|
|
|
+ boolean excellentFlag = RandomUtils.isExcellent(excellentRate);
|
|
|
+ //随机总属性点
|
|
|
+ int attrTotal = RandomUtils.randomFromExcellent(equipTemplate.getTotalAttrMin(),equipTemplate.getTotalAttrMax(),excellentFlag);
|
|
|
+ return Equip.builder()
|
|
|
+ .name(equipTemplate.getGoods().getName())
|
|
|
+ .quality(excellentFlag?2:1) //品质
|
|
|
+ .fixedEquipProperty(FixedEquipProperty.randomFixed(equipTemplate.getFixedEquipPropertyMin(),equipTemplate.getFixedEquipPropertyMax())) //装备固定属性
|
|
|
+ .attrTotal(attrTotal)
|
|
|
+ .undistributedAttr(attrTotal)
|
|
|
+ .elseEquipProperty(ElseEquipProperty.resetElseEquipProperty()) //初始化分配的具体属性点
|
|
|
+ .position(equipTemplate.getPosition())
|
|
|
+ .level(equipTemplate.getLevel())
|
|
|
+ .fixedEquipPropertyMin(equipTemplate.getFixedEquipPropertyMin())
|
|
|
+ .fixedEquipPropertyMax(equipTemplate.getFixedEquipPropertyMax())
|
|
|
+ .totalAttrMin(equipTemplate.getTotalAttrMin())
|
|
|
+ .totalAttrMax(equipTemplate.getTotalAttrMax())
|
|
|
+ .equipTemplateId(equipTemplate.getId())
|
|
|
+ .build();
|
|
|
+ }
|
|
|
}
|