Energy: Particle/Orb Drops from Monsters (#1054)

* Generate energy drops for monsters + make sure picking up particles honors their count.

* Use drop info from excels instead.

* Remove double newline.

* Remove commented code.
This commit is contained in:
ImmuState
2022-05-25 06:43:04 +02:00
committed by GitHub
parent 5811556630
commit 2a76e904ad
7 changed files with 296 additions and 15 deletions

View File

@@ -5,6 +5,7 @@ import emu.grasscutter.data.common.PropGrowCurve;
import emu.grasscutter.data.def.MonsterCurveData;
import emu.grasscutter.data.def.MonsterData;
import emu.grasscutter.game.dungeons.DungeonChallenge;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.props.EntityIdType;
import emu.grasscutter.game.props.FightProperty;
import emu.grasscutter.game.props.PlayerProperty;
@@ -111,6 +112,23 @@ public class EntityMonster extends GameEntity {
this.poseId = poseId;
}
@Override
public void damage(float amount, int killerId) {
// Get HP before damage.
float hpBeforeDamage = this.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP);
// Apply damage.
super.damage(amount, killerId);
// Get HP after damage.
float hpAfterDamage = this.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP);
// Invoke energy drop logic.
for (Player player : this.getScene().getPlayers()) {
player.getEnergyManager().handleMonsterEnergyDrop(this, hpBeforeDamage, hpAfterDamage);
}
}
@Override
public void onDeath(int killerId) {
if (this.getSpawnEntry() != null) {