mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-14 07:55:57 +01:00
Implement abyss defense objective (#2422)
This commit is contained in:
@@ -70,6 +70,11 @@ public abstract class EntityBaseGadget extends GameEntity {
|
||||
.setSourceEntityId(getId())
|
||||
.setParam3((int) this.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP))
|
||||
.setEventSource(getConfigId()));
|
||||
|
||||
var challenge = getScene().getChallenge();
|
||||
if (challenge != null && this instanceof EntityGadget gadget) {
|
||||
challenge.onGadgetDamage(gadget);
|
||||
}
|
||||
}
|
||||
|
||||
protected void fillFightProps(ConfigEntityGadget configGadget) {
|
||||
|
||||
@@ -4,7 +4,9 @@ import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.binout.config.ConfigEntityGadget;
|
||||
import emu.grasscutter.data.binout.config.fields.ConfigAbilityData;
|
||||
import emu.grasscutter.data.common.PropGrowCurve;
|
||||
import emu.grasscutter.data.excels.GadgetData;
|
||||
import emu.grasscutter.data.excels.monster.MonsterCurveData;
|
||||
import emu.grasscutter.game.entity.gadget.*;
|
||||
import emu.grasscutter.game.entity.gadget.platform.*;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
@@ -104,6 +106,20 @@ public class EntityGadget extends EntityBaseGadget {
|
||||
this.bornRot = this.getRotation().clone();
|
||||
this.fillFightProps(configGadget);
|
||||
|
||||
// Check if this gadget is the abyss defense objective's gadget.
|
||||
// That doesn't have a level and defaults to having 5000 hp, so it dies in like 2 hits on 11-1.
|
||||
// I'll forgive player skill issues and scale its hp up here.
|
||||
// TODO: find out how its fight props are actually scaled
|
||||
if (gadgetData.getJsonName().equals("SceneObj_Gear_Operator_Mamolu_Entity")) {
|
||||
MonsterCurveData curve = GameData.getMonsterCurveDataMap().get(11);
|
||||
if (curve != null) {
|
||||
FightProperty[] hpProps = {FightProperty.FIGHT_PROP_MAX_HP, FightProperty.FIGHT_PROP_BASE_HP, FightProperty.FIGHT_PROP_CUR_HP};
|
||||
for (var prop : hpProps) {
|
||||
setFightProperty(prop, this.getFightProperty(prop) * curve.getMultByProp("GROW_CURVE_HP_ENVIRONMENT"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (GameData.getGadgetMappingMap().containsKey(gadgetId)) {
|
||||
var controllerName = GameData.getGadgetMappingMap().get(gadgetId).getServerController();
|
||||
this.setEntityController(EntityControllerScriptManager.getGadgetController(controllerName));
|
||||
|
||||
Reference in New Issue
Block a user