superb-warfare/src/main/java/com/atsuishio/superbwarfare/data/gun/DefaultGunData.java
2025-07-01 03:37:45 +08:00

138 lines
3.9 KiB
Java

package com.atsuishio.superbwarfare.data.gun;
import com.atsuishio.superbwarfare.annotation.ServerOnly;
import com.atsuishio.superbwarfare.data.IDBasedData;
import com.google.gson.annotations.SerializedName;
import java.util.List;
import java.util.Set;
public class DefaultGunData implements IDBasedData {
@SerializedName("ID")
public String id = "";
@Override
public String getId() {
return this.id;
}
@SerializedName("RecoilX")
public double recoilX;
@SerializedName("RecoilY")
public double recoilY;
@SerializedName("DefaultZoom")
public double defaultZoom = 1.25;
@SerializedName("MinZoom")
public double minZoom = defaultZoom;
@SerializedName("MaxZoom")
public double maxZoom = defaultZoom;
@SerializedName("Spread")
public double spread;
@SerializedName("Damage")
public double damage;
@SerializedName("Headshot")
public double headshot = 1.5;
@SerializedName("Velocity")
public double velocity;
@SerializedName("Magazine")
public int magazine;
@SerializedName("MeleeDamage")
public double meleeDamage;
@SerializedName("MeleeDuration")
public int meleeDuration = 16;
@SerializedName("MeleeDamageTime")
public int meleeDamageTime = 6;
@ServerOnly
@SerializedName("Projectile")
public ProjectileInfo projectile = new ProjectileInfo();
@SerializedName("ProjectileAmount")
public int projectileAmount = 1;
@SerializedName("Weight")
public double weight;
@SerializedName("DefaultFireMode")
public FireMode defaultFireMode = FireMode.SEMI;
@SerializedName("AvailableFireModes")
public Set<FireMode> availableFireModes = Set.of(FireMode.SEMI);
@SerializedName("ReloadTypes")
public Set<ReloadType> reloadTypes = Set.of(ReloadType.MAGAZINE);
@SerializedName("BurstAmount")
public int burstAmount;
@SerializedName("BypassesArmor")
public double bypassArmor;
@SerializedName("AmmoType")
public String ammoType = "";
@SerializedName("NormalReloadTime")
public int normalReloadTime;
@SerializedName("EmptyReloadTime")
public int emptyReloadTime;
@SerializedName("BoltActionTime")
public int boltActionTime;
@SerializedName("PrepareTime")
public int prepareTime;
@SerializedName("PrepareLoadTime")
public int prepareLoadTime;
// 单发装填时的上弹时间
@SerializedName("PrepareAmmoLoadTime")
public int prepareAmmoLoadTime = 1;
@SerializedName("PrepareEmptyTime")
public int prepareEmptyTime;
// 每次单发装填用时的
@SerializedName("IterativeTime")
public int iterativeTime;
// 单发装填时的上弹时间
@SerializedName("IterativeAmmoLoadTime")
public int iterativeAmmoLoadTime = 1;
// 单次单发装填上弹数量
@SerializedName("IterativeLoadAmount")
public int iterativeLoadAmount = 1;
@SerializedName("FinishTime")
public int finishTime;
@SerializedName("SoundRadius")
public double soundRadius;
@SerializedName("RPM")
public int rpm = 600;
@SerializedName("ExplosionDamage")
public double explosionDamage;
@SerializedName("ExplosionRadius")
public double explosionRadius;
@SerializedName("ShootDelay")
public int shootDelay = 0;
@SerializedName("HeatPerShoot")
public double heatPerShoot = 0;
@SerializedName("AvailablePerks")
public List<String> availablePerks = List.of(
"@Ammo",
"superbwarfare:field_doctor",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:cupid_arrow"
);
@ServerOnly
@SerializedName("DamageReduce")
public DamageReduce damageReduce = new DamageReduce();
}