Merge branch 'release/1.8.0' of ssh://git.mnml.gg:40022/~/mnml into release/1.8.0

This commit is contained in:
ntr 2019-11-05 16:40:03 +11:00
commit e1e7fed838
7 changed files with 29 additions and 32 deletions

View File

@ -6,17 +6,6 @@
* can't reset password without knowing password =\
* ws gzip encoding
* mobile
- force to landscape view and try make everything fit
OR
- 2 pages vbox / equip
- vbox page as current with equip button at bottom
- equip page with inventory and all 3 construct avatars
- click one of the avatars to expand out skill / spec slots
- show the info pane at the bottom or as an overlay
* mobile info page
* Invert recharge
@ -38,8 +27,6 @@
- Strike + SpeedRR -> StrikeSpeed (strike has Y% more speed)
- Strike + LifeRR -> StrikeLife (Strike recharges X% of damage as red life)
* move item from one construct to another
* ACP
* essential

View File

@ -230,6 +230,7 @@
padding-left: 1em;
padding-right: 1em;
text-align: center;
font-size: 0.8em;
svg {
display: inline;
height: 1em;

View File

@ -153,7 +153,7 @@ class GameConstruct extends Component {
}
const effects = construct.effects.length
? construct.effects.map(c =>
<div
<div
key={c.effect}
onMouseOver={e => hoverInfo(e, c)}
onMouseOut={e => hoverInfo(e, null)}

View File

@ -224,7 +224,9 @@ function registerEvents(store) {
if (v.phase === 'Finished') {
ws.sendAccountInstances();
}
if (localStorage.getItem('tutorial-complete')) {
// instance.mobile.less hides info at @media 1000
if (localStorage.getItem('tutorial-complete') || window.innerWidth <= 1100) {
store.dispatch(actions.setTutorial(null));
} else if (v.time_control === 'Practice' && v.rounds.length === 1 && tutorial) {
tutorialVbox(player, store, tutorial);

View File

@ -220,11 +220,11 @@ impl Construct {
account: id,
img: Uuid::new_v4(),
red_power: ConstructStat { base: 320, value: 320, max: 320, stat: Stat::RedPower },
red_life: ConstructStat { base: 0, value: 0, max: 0, stat: Stat::RedLife },
red_life: ConstructStat { base: 125, value: 125, max: 125, stat: Stat::RedLife },
blue_power: ConstructStat { base: 320, value: 320, max: 320, stat: Stat::BluePower },
blue_life: ConstructStat { base: 0, value: 0, max: 0, stat: Stat::BlueLife },
blue_life: ConstructStat { base: 125, value: 125, max: 125, stat: Stat::BlueLife },
green_power: ConstructStat { base: 300, value: 300, max: 300, stat: Stat::GreenPower },
green_life: ConstructStat { base: 950, value: 950, max: 950, stat: Stat::GreenLife },
green_life: ConstructStat { base: 800, value: 800, max: 800, stat: Stat::GreenLife },
speed: ConstructStat { base: 100, value: 100, max: 100, stat: Stat::Speed },
// evasion: ConstructStat { base: 0, value: 0, max: 0, stat: Stat::Evasion },
skills: vec![],

View File

@ -1229,7 +1229,7 @@ mod tests {
assert!(game.player_by_id(x_player.id).unwrap().constructs[0].is_stunned() == false);
// riposte
assert_eq!(game.player_by_id(y_player.id).unwrap().constructs[0].green_life(), (
y_construct.green_life() - x_construct.red_power().pct(Skill::CounterAttack.multiplier())));
y_construct.green_life() + y_construct.red_life() - x_construct.red_power().pct(Skill::CounterAttack.multiplier())));
}
#[test]

View File

@ -993,9 +993,9 @@ impl Skill {
meta: Some(EffectMeta::Skill(Skill::BashPlusPlus)), tick: None}],
Skill::Stun => vec![ConstructEffect {effect: Effect::Stun, duration: 2, meta: None, tick: None}],
Skill::Intercept => vec![ConstructEffect {effect: Effect::Intercept, duration: 2, meta: None, tick: None}],
Skill::InterceptPlus => vec![ConstructEffect {effect: Effect::Intercept, duration: 3, meta: None, tick: None}],
Skill::InterceptPlusPlus => vec![ConstructEffect {effect: Effect::Intercept, duration: 4, meta: None, tick: None}],
Skill::Intercept => vec![ConstructEffect {effect: Effect::Intercept, duration: 1, meta: None, tick: None}],
Skill::InterceptPlus => vec![ConstructEffect {effect: Effect::Intercept, duration: 1, meta: None, tick: None}],
Skill::InterceptPlusPlus => vec![ConstructEffect {effect: Effect::Intercept, duration: 1, meta: None, tick: None}],
Skill::Triage => vec![ConstructEffect {effect: Effect::Triage, duration: 2,
meta: Some(EffectMeta::Skill(Skill::TriageTick)), tick: None}],
@ -1121,9 +1121,9 @@ impl Skill {
Skill::SustainPlus |
Skill::SustainPlusPlus => Some(1),
Skill::Intercept=> Some(2),
Skill::InterceptPlus => Some(2),
Skill::InterceptPlusPlus => Some(2),
Skill::Intercept=> Some(1),
Skill::InterceptPlus => Some(1),
Skill::InterceptPlusPlus => Some(1),
Skill::Electrify |
Skill::ElectrifyPlus |
@ -1794,13 +1794,19 @@ fn link(source: &mut Construct, target: &mut Construct, mut results: Resolutions
None => 0
};
target.deal_blue_damage(skill, swap)
.into_iter()
.for_each(|e| results.push(Resolution::new(source, target).event(e)));
source.deal_green_damage(skill, swap)
.into_iter()
.for_each(|e| results.push(Resolution::new(source, source).event(e).stages(EventStages::PostOnly)));
let link_events = target.deal_blue_damage(skill, swap);
for e in link_events {
match e {
Event::Damage { amount, mitigation: _, colour: _, skill: _ } => {
results.push(Resolution::new(source, target).event(e));
let heal = source.deal_green_damage(skill, amount);
for h in heal {
results.push(Resolution::new(source, source).event(h).stages(EventStages::PostOnly));
};
},
_ => results.push(Resolution::new(source, target).event(e)),
}
}
results.push(Resolution::new(source, source)
.event(source.add_effect(skill, skill.effect()[0])).stages(EventStages::PostOnly));
@ -2076,6 +2082,7 @@ mod tests {
x.blue_power.force(256);
x.green_power.force(220);
x.green_life.force(1024);
y.blue_life.force(0);
x.green_life.reduce(512);
let mut results = resolve(Skill::Siphon, &mut x, &mut y, vec![]);