pub struct PrepareFightWaves {
pub entities: Vec<PrepareFightEntityPower>,
pub waves: Vec<Vec<PrepareFightSpawn>>,
pub time: f64,
pub power: f64,
pub stream_active_count: Option<u64>,
pub summon_wave_at_hp_fraction: Option<f64>,
pub reward_mob_budget: Option<u64>,
pub enemy_damage_mult: Option<f64>,
}Expand description
Typed, config-level mirror of overlord_event_system’s WaveFightData (the
shape prepare_fight_script builds inline and passes to ctx.spawn_wave).
Holds the wave data as typed config — pure data, no combat and no RNG. Field
optionality mirrors WaveFightData exactly.
Fields§
§entities: Vec<PrepareFightEntityPower>§waves: Vec<Vec<PrepareFightSpawn>>§time: f64§power: f64§stream_active_count: Option<u64>Streaming wave entry (docs/combat-feel-porting-plan.md, phase 3): when set, only this many
mobs of a wave are on the field at once — the rest wait in a pool and run in one-per-death.
None (null in config) = the previous behaviour bit-for-bit (the whole wave spawns at
once).
summon_wave_at_hp_fraction: Option<f64>Boss summon (owner 2026-07-10): when set, the LAST wave of the template
is a summon wave — it never spawns on wave clear; it spawns the moment a
boss drops below this fraction of max HP (anchored at the player, normal
entrance runs). Boss killed before the trigger ⇒ the wave is skipped and
the fight ends. None = no summon wave, all waves behave as before.
reward_mob_budget: Option<u64>Reward/weight budget for the fight (growing-enemy-waves plan §2): “this
fight pays out / weighs as if it had N mobs”. The content migrator writes
each fight’s ORIGINAL total mob count here when it inflates concurrency.
spawn_wave stamps each mob with wave_share = reward_mob_budget / actual_total_mob_count (per-10000 i64) so per-kill drop chance, pet-ult
charge fill and counterattack procs stay count-invariant. None (null)
⇒ share 1.0 (all existing content bit-identical). Does NOT touch mob
HP/attack — the wave normalization already handles stats.
enemy_damage_mult: Option<f64>Per-fight enemy damage multiplier: scales this fight’s DAMAGE budget
(eff_hp in spawn_wave) only — mob HP, fight length and loot pacing
stay unchanged. Compensates fight shapes whose sustained concurrency
(many mobs on field at once) delivers the same total damage in a less
survivable profile. None (null) ⇒ 1.0 (no change).
Trait Implementations§
Source§impl Clone for PrepareFightWaves
impl Clone for PrepareFightWaves
Source§fn clone(&self) -> PrepareFightWaves
fn clone(&self) -> PrepareFightWaves
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PrepareFightWaves
impl Debug for PrepareFightWaves
Source§impl Default for PrepareFightWaves
impl Default for PrepareFightWaves
Source§fn default() -> PrepareFightWaves
fn default() -> PrepareFightWaves
Source§impl<'de> Deserialize<'de> for PrepareFightWaves
impl<'de> Deserialize<'de> for PrepareFightWaves
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for PrepareFightWaves
impl JsonSchema for PrepareFightWaves
Source§fn schema_name() -> String
fn schema_name() -> String
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref keyword. Read more