fix purge
This commit is contained in:
parent
6b84fe92d7
commit
fe04c0d2db
@ -132,12 +132,12 @@ impl Events {
|
|||||||
},
|
},
|
||||||
|
|
||||||
Event::Subscribe(id, obj) => {
|
Event::Subscribe(id, obj) => {
|
||||||
info!("subscribe id={:?} object={:?}", id, obj);
|
trace!("subscribe id={:?} object={:?}", id, obj);
|
||||||
|
|
||||||
match self.clients.get_mut(&id) {
|
match self.clients.get_mut(&id) {
|
||||||
Some(client) => {
|
Some(client) => {
|
||||||
client.subs.insert(obj);
|
client.subs.insert(obj);
|
||||||
info!("client={:?} subscriptions={:?}", id, client.subs.len());
|
trace!("client={:?} subscriptions={:?}", id, client.subs.len());
|
||||||
Ok(())
|
Ok(())
|
||||||
},
|
},
|
||||||
None => return Err(format_err!("unknown client {:?}", id))
|
None => return Err(format_err!("unknown client {:?}", id))
|
||||||
@ -145,12 +145,12 @@ impl Events {
|
|||||||
},
|
},
|
||||||
|
|
||||||
Event::Unsubscribe(id, obj) => {
|
Event::Unsubscribe(id, obj) => {
|
||||||
info!("unsubscribe id={:?} object={:?}", id, obj);
|
trace!("unsubscribe id={:?} object={:?}", id, obj);
|
||||||
|
|
||||||
match self.clients.get_mut(&id) {
|
match self.clients.get_mut(&id) {
|
||||||
Some(mut client) => {
|
Some(mut client) => {
|
||||||
client.subs.remove(&obj);
|
client.subs.remove(&obj);
|
||||||
info!("unsubscribe subscriptions removed={:?}", client.subs.len());
|
trace!("unsubscribe subscriptions removed={:?}", client.subs.len());
|
||||||
Ok(())
|
Ok(())
|
||||||
},
|
},
|
||||||
None => return Err(format_err!("unknown client {:?}", id))
|
None => return Err(format_err!("unknown client {:?}", id))
|
||||||
@ -158,7 +158,7 @@ impl Events {
|
|||||||
},
|
},
|
||||||
|
|
||||||
Event::Push(id, msg) => {
|
Event::Push(id, msg) => {
|
||||||
info!("push id={:?}", id);
|
trace!("push id={:?}", id);
|
||||||
|
|
||||||
let mut subs = 0;
|
let mut subs = 0;
|
||||||
let mut dead = vec![];
|
let mut dead = vec![];
|
||||||
@ -177,11 +177,11 @@ impl Events {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !dead.is_empty() {
|
if !dead.is_empty() {
|
||||||
info!("dead connections={:?}", dead.len());
|
trace!("dead connections={:?}", dead.len());
|
||||||
dead.iter().for_each(|id| self.remove_client(*id));
|
dead.iter().for_each(|id| self.remove_client(*id));
|
||||||
}
|
}
|
||||||
|
|
||||||
info!("push subscribers={:?}", subs);
|
trace!("push subscribers={:?}", subs);
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
},
|
},
|
||||||
|
|||||||
@ -503,181 +503,181 @@ pub enum Skill {
|
|||||||
AmplifyPlus,
|
AmplifyPlus,
|
||||||
#[serde(rename = "Amplify++")]
|
#[serde(rename = "Amplify++")]
|
||||||
AmplifyPlusPlus,
|
AmplifyPlusPlus,
|
||||||
|
|
||||||
Absorb,
|
Absorb,
|
||||||
#[serde(rename = "Absorb+")]
|
#[serde(rename = "Absorb+")]
|
||||||
AbsorbPlus,
|
AbsorbPlus,
|
||||||
#[serde(rename = "Absorb++")]
|
#[serde(rename = "Absorb++")]
|
||||||
AbsorbPlusPlus,
|
AbsorbPlusPlus,
|
||||||
|
|
||||||
Banish,
|
Banish,
|
||||||
#[serde(rename = "Banish+")]
|
#[serde(rename = "Banish+")]
|
||||||
BanishPlus,
|
BanishPlus,
|
||||||
#[serde(rename = "Banish++")]
|
#[serde(rename = "Banish++")]
|
||||||
BanishPlusPlus,
|
BanishPlusPlus,
|
||||||
|
|
||||||
Bash,
|
Bash,
|
||||||
#[serde(rename = "Bash+")]
|
#[serde(rename = "Bash+")]
|
||||||
BashPlus,
|
BashPlus,
|
||||||
#[serde(rename = "Bash++")]
|
#[serde(rename = "Bash++")]
|
||||||
BashPlusPlus,
|
BashPlusPlus,
|
||||||
|
|
||||||
Blast,
|
Blast,
|
||||||
#[serde(rename = "Blast+")]
|
#[serde(rename = "Blast+")]
|
||||||
BlastPlus,
|
BlastPlus,
|
||||||
#[serde(rename = "Blast++")]
|
#[serde(rename = "Blast++")]
|
||||||
BlastPlusPlus,
|
BlastPlusPlus,
|
||||||
|
|
||||||
Chaos,
|
Chaos,
|
||||||
#[serde(rename = "Chaos+")]
|
#[serde(rename = "Chaos+")]
|
||||||
ChaosPlus,
|
ChaosPlus,
|
||||||
#[serde(rename = "Chaos++")]
|
#[serde(rename = "Chaos++")]
|
||||||
ChaosPlusPlus,
|
ChaosPlusPlus,
|
||||||
|
|
||||||
Sustain,
|
Sustain,
|
||||||
#[serde(rename = "Sustain+")]
|
#[serde(rename = "Sustain+")]
|
||||||
SustainPlus,
|
SustainPlus,
|
||||||
#[serde(rename = "Sustain++")]
|
#[serde(rename = "Sustain++")]
|
||||||
SustainPlusPlus,
|
SustainPlusPlus,
|
||||||
|
|
||||||
Electrify,
|
Electrify,
|
||||||
#[serde(rename = "Electrify+")]
|
#[serde(rename = "Electrify+")]
|
||||||
ElectrifyPlus,
|
ElectrifyPlus,
|
||||||
#[serde(rename = "Electrify++")]
|
#[serde(rename = "Electrify++")]
|
||||||
ElectrifyPlusPlus,
|
ElectrifyPlusPlus,
|
||||||
|
|
||||||
Curse,
|
Curse,
|
||||||
#[serde(rename = "Curse+")]
|
#[serde(rename = "Curse+")]
|
||||||
CursePlus,
|
CursePlus,
|
||||||
#[serde(rename = "Curse++")]
|
#[serde(rename = "Curse++")]
|
||||||
CursePlusPlus,
|
CursePlusPlus,
|
||||||
|
|
||||||
Decay,
|
Decay,
|
||||||
#[serde(rename = "Decay+")]
|
#[serde(rename = "Decay+")]
|
||||||
DecayPlus,
|
DecayPlus,
|
||||||
#[serde(rename = "Decay++")]
|
#[serde(rename = "Decay++")]
|
||||||
DecayPlusPlus,
|
DecayPlusPlus,
|
||||||
|
|
||||||
Hex,
|
Hex,
|
||||||
#[serde(rename = "Hex+")]
|
#[serde(rename = "Hex+")]
|
||||||
HexPlus,
|
HexPlus,
|
||||||
#[serde(rename = "Hex++")]
|
#[serde(rename = "Hex++")]
|
||||||
HexPlusPlus,
|
HexPlusPlus,
|
||||||
|
|
||||||
Haste,
|
Haste,
|
||||||
#[serde(rename = "Haste+")]
|
#[serde(rename = "Haste+")]
|
||||||
HastePlus,
|
HastePlus,
|
||||||
#[serde(rename = "Haste++")]
|
#[serde(rename = "Haste++")]
|
||||||
HastePlusPlus,
|
HastePlusPlus,
|
||||||
|
|
||||||
Heal,
|
Heal,
|
||||||
#[serde(rename = "Heal+")]
|
#[serde(rename = "Heal+")]
|
||||||
HealPlus,
|
HealPlus,
|
||||||
#[serde(rename = "Heal++")]
|
#[serde(rename = "Heal++")]
|
||||||
HealPlusPlus,
|
HealPlusPlus,
|
||||||
|
|
||||||
Hybrid,
|
Hybrid,
|
||||||
#[serde(rename = "Hybrid+")]
|
#[serde(rename = "Hybrid+")]
|
||||||
HybridPlus,
|
HybridPlus,
|
||||||
#[serde(rename = "Hybrid++")]
|
#[serde(rename = "Hybrid++")]
|
||||||
HybridPlusPlus,
|
HybridPlusPlus,
|
||||||
|
|
||||||
Invert,
|
Invert,
|
||||||
#[serde(rename = "Invert+")]
|
#[serde(rename = "Invert+")]
|
||||||
InvertPlus,
|
InvertPlus,
|
||||||
#[serde(rename = "Invert++")]
|
#[serde(rename = "Invert++")]
|
||||||
InvertPlusPlus,
|
InvertPlusPlus,
|
||||||
|
|
||||||
Counter,
|
Counter,
|
||||||
#[serde(rename = "Counter+")]
|
#[serde(rename = "Counter+")]
|
||||||
CounterPlus,
|
CounterPlus,
|
||||||
#[serde(rename = "Counter++")]
|
#[serde(rename = "Counter++")]
|
||||||
CounterPlusPlus,
|
CounterPlusPlus,
|
||||||
|
|
||||||
Purge,
|
Purge,
|
||||||
#[serde(rename = "Purge+")]
|
#[serde(rename = "Purge+")]
|
||||||
PurgePlus,
|
PurgePlus,
|
||||||
#[serde(rename = "Purge++")]
|
#[serde(rename = "Purge++")]
|
||||||
PurgePlusPlus,
|
PurgePlusPlus,
|
||||||
|
|
||||||
Purify,
|
Purify,
|
||||||
#[serde(rename = "Purify+")]
|
#[serde(rename = "Purify+")]
|
||||||
PurifyPlus,
|
PurifyPlus,
|
||||||
#[serde(rename = "Purify++")]
|
#[serde(rename = "Purify++")]
|
||||||
PurifyPlusPlus,
|
PurifyPlusPlus,
|
||||||
|
|
||||||
Reflect,
|
Reflect,
|
||||||
#[serde(rename = "Reflect+")]
|
#[serde(rename = "Reflect+")]
|
||||||
ReflectPlus,
|
ReflectPlus,
|
||||||
#[serde(rename = "Reflect++")]
|
#[serde(rename = "Reflect++")]
|
||||||
ReflectPlusPlus,
|
ReflectPlusPlus,
|
||||||
|
|
||||||
Recharge,
|
Recharge,
|
||||||
#[serde(rename = "Recharge+")]
|
#[serde(rename = "Recharge+")]
|
||||||
RechargePlus,
|
RechargePlus,
|
||||||
#[serde(rename = "Recharge++")]
|
#[serde(rename = "Recharge++")]
|
||||||
RechargePlusPlus,
|
RechargePlusPlus,
|
||||||
|
|
||||||
Ruin,
|
Ruin,
|
||||||
#[serde(rename = "Ruin+")]
|
#[serde(rename = "Ruin+")]
|
||||||
RuinPlus,
|
RuinPlus,
|
||||||
#[serde(rename = "Ruin++")]
|
#[serde(rename = "Ruin++")]
|
||||||
RuinPlusPlus,
|
RuinPlusPlus,
|
||||||
|
|
||||||
Link,
|
Link,
|
||||||
#[serde(rename = "Link+")]
|
#[serde(rename = "Link+")]
|
||||||
LinkPlus,
|
LinkPlus,
|
||||||
#[serde(rename = "Link++")]
|
#[serde(rename = "Link++")]
|
||||||
LinkPlusPlus,
|
LinkPlusPlus,
|
||||||
|
|
||||||
Silence,
|
Silence,
|
||||||
#[serde(rename = "Silence+")]
|
#[serde(rename = "Silence+")]
|
||||||
SilencePlus,
|
SilencePlus,
|
||||||
#[serde(rename = "Silence++")]
|
#[serde(rename = "Silence++")]
|
||||||
SilencePlusPlus,
|
SilencePlusPlus,
|
||||||
|
|
||||||
Slay,
|
Slay,
|
||||||
#[serde(rename = "Slay+")]
|
#[serde(rename = "Slay+")]
|
||||||
SlayPlus,
|
SlayPlus,
|
||||||
#[serde(rename = "Slay++")]
|
#[serde(rename = "Slay++")]
|
||||||
SlayPlusPlus,
|
SlayPlusPlus,
|
||||||
|
|
||||||
Sleep,
|
Sleep,
|
||||||
#[serde(rename = "Sleep+")]
|
#[serde(rename = "Sleep+")]
|
||||||
SleepPlus,
|
SleepPlus,
|
||||||
#[serde(rename = "Sleep++")]
|
#[serde(rename = "Sleep++")]
|
||||||
SleepPlusPlus,
|
SleepPlusPlus,
|
||||||
|
|
||||||
Restrict,
|
Restrict,
|
||||||
#[serde(rename = "Restrict+")]
|
#[serde(rename = "Restrict+")]
|
||||||
RestrictPlus,
|
RestrictPlus,
|
||||||
#[serde(rename = "Restrict++")]
|
#[serde(rename = "Restrict++")]
|
||||||
RestrictPlusPlus,
|
RestrictPlusPlus,
|
||||||
|
|
||||||
Strike,
|
Strike,
|
||||||
#[serde(rename = "Strike+")]
|
#[serde(rename = "Strike+")]
|
||||||
StrikePlus,
|
StrikePlus,
|
||||||
#[serde(rename = "Strike++")]
|
#[serde(rename = "Strike++")]
|
||||||
StrikePlusPlus,
|
StrikePlusPlus,
|
||||||
|
|
||||||
Siphon,
|
Siphon,
|
||||||
#[serde(rename = "Siphon+")]
|
#[serde(rename = "Siphon+")]
|
||||||
SiphonPlus,
|
SiphonPlus,
|
||||||
#[serde(rename = "Siphon++")]
|
#[serde(rename = "Siphon++")]
|
||||||
SiphonPlusPlus,
|
SiphonPlusPlus,
|
||||||
|
|
||||||
Intercept,
|
Intercept,
|
||||||
#[serde(rename = "Intercept+")]
|
#[serde(rename = "Intercept+")]
|
||||||
InterceptPlus,
|
InterceptPlus,
|
||||||
#[serde(rename = "Intercept++")]
|
#[serde(rename = "Intercept++")]
|
||||||
InterceptPlusPlus,
|
InterceptPlusPlus,
|
||||||
|
|
||||||
Break,
|
Break,
|
||||||
#[serde(rename = "Break+")]
|
#[serde(rename = "Break+")]
|
||||||
BreakPlus,
|
BreakPlus,
|
||||||
#[serde(rename = "Break++")]
|
#[serde(rename = "Break++")]
|
||||||
BreakPlusPlus,
|
BreakPlusPlus,
|
||||||
|
|
||||||
Triage,
|
Triage,
|
||||||
#[serde(rename = "Triage+")]
|
#[serde(rename = "Triage+")]
|
||||||
TriagePlus,
|
TriagePlus,
|
||||||
@ -695,7 +695,7 @@ pub enum Skill {
|
|||||||
CounterAttackPlus,
|
CounterAttackPlus,
|
||||||
#[serde(rename = "CounterAttack++")]
|
#[serde(rename = "CounterAttack++")]
|
||||||
CounterAttackPlusPlus,
|
CounterAttackPlusPlus,
|
||||||
|
|
||||||
Electrocute,
|
Electrocute,
|
||||||
#[serde(rename = "Electrocute+")]
|
#[serde(rename = "Electrocute+")]
|
||||||
ElectrocutePlus,
|
ElectrocutePlus,
|
||||||
@ -1758,17 +1758,16 @@ fn purge(source: &mut Construct, target: &mut Construct, mut results: Resolution
|
|||||||
.event(Event::Removal { effect: ce.effect, construct_effects: target.effects.clone() }));
|
.event(Event::Removal { effect: ce.effect, construct_effects: target.effects.clone() }));
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut turns = 0;
|
let mut turns = 1;
|
||||||
for cs in target.skills.iter_mut() {
|
for cs in target.skills.iter_mut() {
|
||||||
if Effect::Purge.disables_skill(cs.skill) {
|
if Effect::Purge.disables_skill(cs.skill) {
|
||||||
turns += 1;
|
turns += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if turns > 0 {
|
|
||||||
let mut effect = skill.effect()[0];
|
let mut effect = skill.effect()[0];
|
||||||
effect.duration = effect.duration * turns;
|
effect.duration = effect.duration * turns;
|
||||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, effect)).stages(EventStages::PostOnly));
|
results.push(Resolution::new(source, target).event(target.add_effect(skill, effect)).stages(EventStages::PostOnly));
|
||||||
}
|
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user