mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-20 19:04:40 +01:00
Implement a proper ability system (#2166)
* Apply fix `21dec2fe` * Apply fix `89d01d5f` * Apply fix `d900f154` this one was already implemented; updated to use call from previous commit * Ability changing commit TODO: change info to debug * Remove use of deprecated methods/fields * Temp commit v2 (Adding LoseHP and some fixes) * Oopsie * Probably fix monster battle * Fix issue with reflecting into fields * Fix some things * Fix ability names for 3.6 resources * Improve logging --------- Co-authored-by: StartForKiller <jesussanz2003@gmail.com>
This commit is contained in:
68
src/main/java/emu/grasscutter/game/entity/EntityTeam.java
Normal file
68
src/main/java/emu/grasscutter/game/entity/EntityTeam.java
Normal file
@@ -0,0 +1,68 @@
|
||||
package emu.grasscutter.game.entity;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.binout.AbilityData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.EntityIdType;
|
||||
import emu.grasscutter.game.world.World;
|
||||
import emu.grasscutter.net.proto.SceneEntityInfoOuterClass.SceneEntityInfo;
|
||||
import emu.grasscutter.game.world.Position;
|
||||
import it.unimi.dsi.fastutil.ints.Int2FloatArrayMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2FloatMap;
|
||||
|
||||
public class EntityTeam extends GameEntity {
|
||||
|
||||
private Player player;
|
||||
|
||||
public EntityTeam(Player player) {
|
||||
super(player.getScene());
|
||||
initAbilities();
|
||||
this.id = player.getWorld().getNextEntityId(EntityIdType.TEAM);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initAbilities() {
|
||||
//Load abilities from levelElementAbilities
|
||||
var defaultAbilities = GameData.getConfigGlobalCombat().getDefaultAbilities();
|
||||
if(defaultAbilities.getDefaultTeamAbilities() != null)
|
||||
for(var ability : defaultAbilities.getDefaultTeamAbilities()) {
|
||||
AbilityData data = GameData.getAbilityData(ability);
|
||||
if(data != null)
|
||||
player.getWorld().getHost().getAbilityManager().addAbilityToEntity(
|
||||
this, data);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public World getWorld() {
|
||||
return player.getWorld();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEntityTypeId() {
|
||||
return EntityIdType.TEAM.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Int2FloatMap getFightProperties() {
|
||||
//TODO
|
||||
return new Int2FloatArrayMap();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Position getPosition() {
|
||||
// TODO Auto-generated method stub
|
||||
return new Position(0, 0, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Position getRotation() {
|
||||
return new Position(0, 0, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SceneEntityInfo toProto() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user