mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-14 07:55:57 +01:00
Handle SetRandomOverrideMapValue
This commit is contained in:
committed by
KingRainbow44
parent
b5595c3fab
commit
f389d2fb28
@@ -333,6 +333,10 @@ public class AbilityModifier implements Serializable {
|
||||
public DynamicFloat ratio = DynamicFloat.ONE;
|
||||
public int configID;
|
||||
|
||||
public DynamicFloat valueRangeMin;
|
||||
public DynamicFloat valueRangeMax;
|
||||
public String overrideMapKey;
|
||||
|
||||
public int param1;
|
||||
public int param2;
|
||||
public int param3;
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package emu.grasscutter.game.ability.actions;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import com.google.protobuf.InvalidProtocolBufferException;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.binout.AbilityModifier.AbilityModifierAction;
|
||||
import emu.grasscutter.game.ability.Ability;
|
||||
import emu.grasscutter.game.entity.GameEntity;
|
||||
import emu.grasscutter.net.proto.AbilityActionSetRandomOverrideMapValueOuterClass.AbilityActionSetRandomOverrideMapValue;
|
||||
|
||||
@AbilityAction(AbilityModifierAction.Type.SetRandomOverrideMapValue)
|
||||
public class ActionSetRandomOverrideMapValue extends AbilityActionHandler {
|
||||
@Override
|
||||
public boolean execute(Ability ability, AbilityModifierAction action, ByteString abilityData, GameEntity target) {
|
||||
AbilityActionSetRandomOverrideMapValue valueProto;
|
||||
try {
|
||||
valueProto = AbilityActionSetRandomOverrideMapValue.parseFrom(abilityData);
|
||||
} catch (InvalidProtocolBufferException e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
float value = valueProto.getRandomValue();
|
||||
float valueRangeMin = action.valueRangeMin.get(ability);
|
||||
float valueRangeMax = action.valueRangeMax.get(ability);
|
||||
|
||||
if(value < valueRangeMin || value > valueRangeMax) {
|
||||
Grasscutter.getLogger().warn("Tried setting value out of range: {} inside [{}, {}]", value, valueRangeMin, valueRangeMax);
|
||||
return true;
|
||||
}
|
||||
|
||||
ability.getAbilitySpecials().put(action.overrideMapKey, value);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user