fix purge

This commit is contained in:
ntr 2019-09-06 17:21:43 +10:00
parent 6b84fe92d7
commit fe04c0d2db
2 changed files with 43 additions and 44 deletions

View File

@ -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(())
}, },

View File

@ -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;
} }