mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-06-11 21:44:36 +08:00
Improved satiation (#2055)
* Natural satiation decreasing Graphic showing satiation when eating (usually) * Reworking values to match original * Little fixes * Satiation bar matches real values Revival correctly updates bar * Greatly simplify handling Some fixes * Inline variables Add TODO for bug * Satiation works correctly Finally it all works as intended * Remove unnecessary packets * Improve satiation reduction handling
This commit is contained in:
committed by
GitHub
Unverified
parent
b4b8f1ec38
commit
1b2210f5a7
@@ -0,0 +1,48 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.game.avatar.Avatar;
|
||||
import emu.grasscutter.net.proto.AvatarSatiationDataNotifyOuterClass.AvatarSatiationDataNotify;
|
||||
import emu.grasscutter.net.proto.AvatarSatiationDataOuterClass.AvatarSatiationData;
|
||||
|
||||
public class PacketAvatarSatiationDataNotify extends BasePacket {
|
||||
|
||||
public PacketAvatarSatiationDataNotify(Avatar avatar, float finishTime, long penaltyTime) {
|
||||
super(PacketOpcodes.AvatarSatiationDataNotify);
|
||||
|
||||
AvatarSatiationData.Builder avatarSatiation = AvatarSatiationData.newBuilder()
|
||||
.setAvatarGuid(avatar.getGuid())
|
||||
.setFinishTime(finishTime);
|
||||
|
||||
// Penalty for overeating
|
||||
if (penaltyTime > 0) {
|
||||
avatarSatiation.setPenaltyFinishTime(penaltyTime);
|
||||
}
|
||||
|
||||
avatarSatiation.build();
|
||||
|
||||
AvatarSatiationDataNotify notify = AvatarSatiationDataNotify.newBuilder()
|
||||
.addSatiationDataList(0, avatarSatiation)
|
||||
.build();
|
||||
|
||||
this.setData(notify);
|
||||
}
|
||||
|
||||
public PacketAvatarSatiationDataNotify(float time, Avatar avatar) {
|
||||
super(PacketOpcodes.AvatarSatiationDataNotify);
|
||||
|
||||
var avatarSatiation = AvatarSatiationData.newBuilder()
|
||||
.setAvatarGuid(avatar.getGuid())
|
||||
.setFinishTime(time + (avatar.getSatiation() / 30f))
|
||||
// Penalty time always ends before finish time
|
||||
.setPenaltyFinishTime(time + (avatar.getSatiationPenalty() / 100f))
|
||||
.build();
|
||||
|
||||
AvatarSatiationDataNotify notify = AvatarSatiationDataNotify.newBuilder()
|
||||
.addSatiationDataList(0, avatarSatiation)
|
||||
.build();
|
||||
|
||||
this.setData(notify);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user