Fix Lua require, Fix monster abilities & Fix ServerLuaCall

This commit is contained in:
KingRainbow44
2023-08-27 02:39:56 -04:00
parent 49c1daede4
commit 1844cb43f7
15 changed files with 303 additions and 165 deletions

View File

@@ -19,11 +19,12 @@ import emu.grasscutter.net.proto.AbilityScalarTypeOuterClass.AbilityScalarType;
import emu.grasscutter.net.proto.AbilityScalarValueEntryOuterClass.AbilityScalarValueEntry;
import emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction;
import io.netty.util.concurrent.FastThreadLocalThread;
import java.util.HashMap;
import java.util.concurrent.*;
import lombok.Getter;
import org.reflections.Reflections;
import java.util.HashMap;
import java.util.concurrent.*;
public final class AbilityManager extends BasePlayerManager {
private static final HashMap<AbilityModifierAction.Type, AbilityActionHandler> actionHandlers =
new HashMap<>();
@@ -179,7 +180,12 @@ public final class AbilityManager extends BasePlayerManager {
.handleModifierDurabilityChange(invoke);
case ABILITY_INVOKE_ARGUMENT_META_ADD_NEW_ABILITY -> this.handleAddNewAbility(invoke);
case ABILITY_INVOKE_ARGUMENT_META_SET_KILLED_SETATE -> this.handleKillState(invoke);
default -> {}
default -> {
if (DebugConstants.LOG_MISSING_ABILITIES) {
Grasscutter.getLogger().trace("Missing invoke handler for ability {}.",
invoke.getArgumentType().name());
}
}
}
}
@@ -520,27 +526,28 @@ public final class AbilityManager extends BasePlayerManager {
var entity = this.player.getScene().getEntityById(invoke.getEntityId());
if (entity == null) {
Grasscutter.getLogger().trace("Entity not found: {}", invoke.getEntityId());
if (DebugConstants.LOG_ABILITIES)
Grasscutter.getLogger().debug("Entity not found: {}", invoke.getEntityId());
return;
}
var addAbility = AbilityMetaAddAbility.parseFrom(invoke.getAbilityData());
var abilityName = Ability.getAbilityName(addAbility.getAbility().getAbilityName());
var ability = GameData.getAbilityData(abilityName);
if (ability == null) {
Grasscutter.getLogger().trace("Ability not found: {}", abilityName);
if (DebugConstants.LOG_MISSING_ABILITIES)
Grasscutter.getLogger().debug("Ability not found: {}", abilityName);
return;
}
entity.getInstancedAbilities().add(new Ability(ability, entity, player));
Grasscutter.getLogger()
.trace(
"Ability added to entity {} at index {}",
entity.getId(),
entity.getInstancedAbilities().size());
if (DebugConstants.LOG_ABILITIES) {
Grasscutter.getLogger()
.debug(
"Ability added to entity {} at index {}.",
entity.getId(),
entity.getInstancedAbilities().size());
}
}
private void handleKillState(AbilityInvokeEntry invoke) throws InvalidProtocolBufferException {
@@ -568,7 +575,7 @@ public final class AbilityManager extends BasePlayerManager {
}
public void addAbilityToEntity(GameEntity entity, AbilityData abilityData) {
Ability ability = new Ability(abilityData, entity, this.player);
var ability = new Ability(abilityData, entity, this.player);
entity.getInstancedAbilities().add(ability); // This are in order
}
}