Merge branch 'master' of ssh://cryps.gg:40022/~/cryps
This commit is contained in:
commit
a052bbc4eb
@ -8,6 +8,14 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
||||
### Changed
|
||||
|
||||
## [In Progress]
|
||||
|
||||
### Added
|
||||
|
||||
Added `Buff` as a skill
|
||||
Increases Speed and RedDamage by 25%
|
||||
Duration 2T
|
||||
No CD
|
||||
|
||||
*BALANCE*
|
||||
- purify
|
||||
- 1 effect from all cryps at level 2
|
||||
|
||||
@ -205,7 +205,6 @@
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
CRYP DAMAGE
|
||||
|
||||
@ -133,7 +133,7 @@
|
||||
}
|
||||
|
||||
.vbox-table td {
|
||||
transition-property: color background border;
|
||||
transition-property: color, background, border;
|
||||
transition-duration: 0.5s;
|
||||
transition-delay: 0;
|
||||
transition-timing-function: ease;
|
||||
@ -162,11 +162,11 @@
|
||||
padding: 0.5em;
|
||||
border: 2px solid #222;
|
||||
border-left-width: 0;
|
||||
transition-property: all;
|
||||
/* transition-property: all;
|
||||
transition-duration: 0.5s;
|
||||
transition-delay: 0;
|
||||
transition-timing-function: ease;
|
||||
}
|
||||
*/}
|
||||
|
||||
.instance-cryp:first-child {
|
||||
margin-left: 0;
|
||||
|
||||
@ -142,7 +142,7 @@ button, input {
|
||||
font-size: 100%;
|
||||
|
||||
/*the transitions */
|
||||
transition-property: all;
|
||||
transition-property: color;
|
||||
transition-duration: 0.5s;
|
||||
transition-delay: 0;
|
||||
transition-timing-function: ease;
|
||||
@ -473,7 +473,7 @@ main .top {
|
||||
}
|
||||
|
||||
.ready:hover {
|
||||
transition-property: all;
|
||||
transition-property: color, border-color;
|
||||
transition-duration: 0.5s;
|
||||
transition-timing-function: ease;
|
||||
color: forestgreen;
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
@media (max-height: 800px), (max-width: 1000px) {
|
||||
#cryps {
|
||||
font-size: 12pt;
|
||||
padding: 0;
|
||||
grid-template-columns: min-content 1fr;
|
||||
grid-template-rows: min-content 1fr;
|
||||
grid-template-areas:
|
||||
@ -28,13 +29,13 @@
|
||||
transition: all 0.5s ease-in-out;
|
||||
|
||||
}
|
||||
main {
|
||||
/* main {
|
||||
-webkit-transition: all 0.5s ease-in-out;
|
||||
-moz-transition: all 0.5s ease-in-out;
|
||||
-o-transition: all 0.5s ease-in-out;
|
||||
transition: all 0.5s ease-in-out;
|
||||
}
|
||||
|
||||
*/
|
||||
#toggle-nav { display: none; }
|
||||
|
||||
#toggle-nav-label {
|
||||
|
||||
@ -47,7 +47,7 @@ function Main(props) {
|
||||
if (nav === 'list') return <List />;
|
||||
|
||||
return (
|
||||
<Team />
|
||||
<main></main>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -13,9 +13,12 @@ const addState = connect(
|
||||
instances,
|
||||
team,
|
||||
cryps,
|
||||
game,
|
||||
} = state;
|
||||
|
||||
function sendInstanceState(instance) {
|
||||
ws.clearGameStateTimeout();
|
||||
ws.clearInstanceStateTimeout();
|
||||
return ws.sendInstanceState(instance.id);
|
||||
}
|
||||
|
||||
@ -24,6 +27,7 @@ const addState = connect(
|
||||
instances,
|
||||
team,
|
||||
cryps,
|
||||
game,
|
||||
sendInstanceState,
|
||||
};
|
||||
},
|
||||
@ -57,14 +61,21 @@ function Nav(args) {
|
||||
team,
|
||||
cryps,
|
||||
instances,
|
||||
game,
|
||||
|
||||
navTo,
|
||||
setTestGame,
|
||||
setTestInstance,
|
||||
} = args;
|
||||
|
||||
function joinInstance(i) {
|
||||
if (game) navTo(null);
|
||||
sendInstanceState(i);
|
||||
return true;
|
||||
}
|
||||
|
||||
const joined = instances.map(i => (
|
||||
<button key={i.id} onClick={() => sendInstanceState(i)} >{i.name}</button>
|
||||
<button key={i.id} onClick={() => joinInstance(i)} >{i.name}</button>
|
||||
));
|
||||
|
||||
const teamElements = team.map((c, i) => {
|
||||
|
||||
@ -101,6 +101,7 @@ function registerEvents(store) {
|
||||
|
||||
function setAccount(account) {
|
||||
store.dispatch(actions.setAccount(account));
|
||||
store.dispatch(actions.setNav('team'));
|
||||
}
|
||||
|
||||
function clearCombiner() {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
use skill::{Skill};
|
||||
use skill::{Skill, Effect};
|
||||
use spec::{Spec};
|
||||
use cryp::{Colours};
|
||||
|
||||
@ -177,6 +177,7 @@ impl Item {
|
||||
Item::Banish => Some(Skill::Banish),
|
||||
Item::Blast => Some(Skill::Blast),
|
||||
Item::Block => Some(Skill::Block),
|
||||
Item::Buff => Some(Skill::Buff),
|
||||
Item::Chaos => Some(Skill::Chaos),
|
||||
Item::Curse => Some(Skill::Curse),
|
||||
Item::Debuff => Some(Skill::Debuff),
|
||||
@ -251,46 +252,59 @@ impl Item {
|
||||
Item::Red => format!("Combine with skills and specs to create upgraded items. \n Speed and chaos."),
|
||||
|
||||
// base skills
|
||||
Item::Attack => format!("Deal red damage based on {:?}% red power", self.into_skill().unwrap().multiplier()),
|
||||
Item::Block => format!("description"),
|
||||
Item::Stun => format!("description"),
|
||||
Item::Buff => format!("description"),
|
||||
Item::Debuff => format!("description"),
|
||||
Item::Attack => format!("Deal red damage based on {:?}% red power",
|
||||
self.into_skill().unwrap().multiplier()),
|
||||
Item::Block => format!("Reduce incoming red damage by {:?}%",
|
||||
100 - Effect::Block.apply(100, None)),
|
||||
Item::Stun => format!("Stun target cryp for {:?}T",
|
||||
self.into_skill().unwrap().duration()),
|
||||
Item::Buff => format!("Increase target cryp red damage and speed by {:?}%",
|
||||
Effect::Buff.apply(100, None) - 100),
|
||||
Item::Debuff => format!("Slow target cryp"),
|
||||
|
||||
// specs
|
||||
// Base
|
||||
Item::Damage => format!("description"),
|
||||
Item::Life => format!("description"),
|
||||
Item::Speed => format!("description"),
|
||||
Item::Damage => format!("Base ITEM for increased DAMAGE. DAMAGE determines the power of your SKILLS."),
|
||||
Item::Life => format!("Base ITEM for increased LIFE.
|
||||
When your CRYP reaches 0 GreenLife it becomes KO and cannot cast SKILLS."),
|
||||
Item::Speed => format!("Base ITEM for increased SPEED.
|
||||
SPEED determines the order in which skills resolve."),
|
||||
|
||||
// Lifes Upgrades
|
||||
Item::GreenLifeI => format!("description"),
|
||||
Item::RedLifeI => format!("description"),
|
||||
Item::BlueLifeI => format!("description"),
|
||||
Item::GRLI => format!("description"),
|
||||
Item::GBLI => format!("description"),
|
||||
Item::RBLI => format!("description"),
|
||||
Item::GreenLifeI => format!("Increases CRYP GreenLife.
|
||||
When your CRYP reaches 0 GreenLife it becomes KO and cannot cast SKILLS."),
|
||||
Item::RedLifeI => format!("Increases CRYP RedLife.
|
||||
Red damage dealt to your cryp reduces RedLife before GreenLife."),
|
||||
Item::BlueLifeI => format!("Increases CRYP BlueLife.
|
||||
Blue damage dealt to your cryp reduces BlueLife before GreenLife."),
|
||||
Item::GRLI => format!("Increases CRYP GreenLife + RedLife"),
|
||||
Item::GBLI => format!("Increases CRYP GreenLife + BlueLife"),
|
||||
Item::RBLI => format!("Increases CRYP RedLife + BlueLife"),
|
||||
|
||||
// Damage Upgrades
|
||||
Item::RedDamageI => format!("description"),
|
||||
Item::BlueDamageI => format!("description"),
|
||||
Item::GreenDamageI => format!("description"),
|
||||
Item::GRDI => format!("description"),
|
||||
Item::GBDI => format!("description"),
|
||||
Item::RBDI => format!("description"),
|
||||
Item::RedDamageI => format!("Increases CRYP RedDamage."),
|
||||
Item::BlueDamageI => format!("Increases CRYP BlueDamage."),
|
||||
Item::GreenDamageI => format!("Increases CRYP GreenDamage."),
|
||||
Item::GRDI => format!("Increases CRYP GreenDamage + RedDamage."),
|
||||
Item::GBDI => format!("Increases CRYP GreenDamage + BlueDamage."),
|
||||
Item::RBDI => format!("Increases CRYP RedDamage + BlueDamage."),
|
||||
|
||||
// Speed Upgrades
|
||||
Item::RedSpeedI => format!("description"),
|
||||
Item::BlueSpeedI => format!("description"),
|
||||
Item::GreenSpeedI => format!("description"),
|
||||
Item::GRSpeedI => format!("description"),
|
||||
Item::GBSpeedI => format!("description"),
|
||||
Item::RBSpeedI => format!("description"),
|
||||
Item::RedSpeedI => format!("Increases CRYP SPEED and provides COLOUR BONUSES"),
|
||||
Item::BlueSpeedI => format!("Increases CRYP SPEED and provides COLOUR BONUSES"),
|
||||
Item::GreenSpeedI => format!("Increases CRYP SPEED and provides COLOUR BONUSES"),
|
||||
Item::GRSpeedI => format!("Increases CRYP SPEED and provides COLOUR BONUSES"),
|
||||
Item::GBSpeedI => format!("Increases CRYP SPEED and provides COLOUR BONUSES"),
|
||||
Item::RBSpeedI => format!("Increases CRYP SPEED and provides COLOUR BONUSES"),
|
||||
|
||||
// Skills <- need to move effect mulltipliers into skills
|
||||
Item::Amplify => format!("Increase red and blue power by 50%. Lasts {:?}T", self.into_skill().unwrap().duration()),
|
||||
Item::Amplify => format!("Increase red and blue power by {:?}%. Lasts {:?}T",
|
||||
Effect::Amplify.apply(100, None) - 100,
|
||||
self.into_skill().unwrap().duration()),
|
||||
|
||||
Item::Banish => format!("Banish target for {:?}T", self.into_skill().unwrap().duration()),
|
||||
Item::Banish => format!("Banish target for {:?}T.
|
||||
Banished cryps are immune to all skills and effects."
|
||||
, self.into_skill().unwrap().duration()),
|
||||
|
||||
Item::Blast => format!("Deals blue damage {:?}% blue power.", self.into_skill().unwrap().multiplier()),
|
||||
|
||||
@ -330,20 +344,22 @@ impl Item {
|
||||
|
||||
Item::Heal => format!("Heals for {:?}% green power.", self.into_skill().unwrap().multiplier()),
|
||||
|
||||
Item::Hex => format!("Applies Hex for {:?}T", self.into_skill().unwrap().duration()),
|
||||
Item::Hex => format!("Blue based skill that applies Hex for {:?}T.
|
||||
Hexed targets cannot cast any skills.", self.into_skill().unwrap().duration()),
|
||||
|
||||
Item::Impurity => format!(
|
||||
"{} {:?}{}. Lasts {:?}T",
|
||||
"Impurity increases Green Power by 50%, Blue based Attack skills will blast again dealing",
|
||||
Skill::HasteStrike.multiplier(),
|
||||
Skill::ImpureBlast.multiplier(),
|
||||
"% Green Power as Blue Damage",
|
||||
self.into_skill().unwrap().duration()),
|
||||
|
||||
Item::Invert => format!(
|
||||
"Reverse healing into damage and damage into healing."),
|
||||
"Reverse healing into damage and damage into healing.
|
||||
Any excess red or blue damage is converted into shield recharge."),
|
||||
|
||||
Item::Parry => format!("{} {:?}% red power and blocks red skills for {:?}T. {} {:?}% red power.",
|
||||
"Self targetting skill. Recharges red life for",
|
||||
"Self targetting skill. Recharges RedLife for",
|
||||
self.into_skill().unwrap().multiplier(),
|
||||
self.into_skill().unwrap().duration(),
|
||||
"If a red skill is parried the cryp will riposte the source dealing red damage",
|
||||
@ -393,8 +409,8 @@ impl Item {
|
||||
"Deals 35% more damage per red skill on target"),
|
||||
|
||||
Item::Strangle => format!(
|
||||
"{} While strangling deal red damage each turn {:?}% red power. Lasts {:?}T.",
|
||||
"Strangle the target disabling skills from both the caster and the target.",
|
||||
"Strangle the target disabling skills from both the caster and the target.
|
||||
While strangling deal red damage each turn {:?}% red power. Lasts {:?}T.",
|
||||
self.into_skill().unwrap().multiplier(),
|
||||
self.into_skill().unwrap().duration()),
|
||||
|
||||
@ -413,7 +429,7 @@ impl Item {
|
||||
self.into_skill().unwrap().multiplier(),
|
||||
self.into_skill().unwrap().duration()),
|
||||
|
||||
Item::Taunt => format!("{} {:?}T. Recharges red life for {:?} red power.",
|
||||
Item::Taunt => format!("{} {:?}T. Recharges RedLife for {:?} red power.",
|
||||
"Taunt redirects skills against the team to target, lasts",
|
||||
self.into_skill().unwrap().duration(),
|
||||
self.into_skill().unwrap().multiplier()),
|
||||
@ -441,6 +457,7 @@ impl From<Skill> for Item {
|
||||
Skill::Banish => Item::Banish,
|
||||
Skill::Blast => Item::Blast,
|
||||
Skill::Block => Item::Block,
|
||||
Skill::Buff => Item::Buff,
|
||||
Skill::Chaos => Item::Chaos,
|
||||
Skill::Curse => Item::Curse,
|
||||
Skill::Clutch => Item::Clutch,
|
||||
@ -479,7 +496,7 @@ impl From<Skill> for Item {
|
||||
Skill::TestBlock => Item::TestBlock,
|
||||
Skill::TestParry => Item::TestParry,
|
||||
Skill::TestSiphon => Item::TestSiphon,
|
||||
_ => panic!("{:?} not implemented as a item", skill),
|
||||
_ => panic!("{:?} not implemented with item conversion", skill),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -117,6 +117,7 @@ pub fn resolve(skill: Skill, source: &mut Cryp, target: &mut Cryp, mut resolutio
|
||||
Skill::Banish => banish(source, target, resolutions, skill), // TODO prevent all actions
|
||||
Skill::Blast => blast(source, target, resolutions, skill),
|
||||
Skill::Block => block(source, target, resolutions, skill),
|
||||
Skill::Buff => buff(source, target, resolutions, skill),
|
||||
Skill::Chaos => chaos(source, target, resolutions, skill),
|
||||
Skill::Clutch => clutch(source, target, resolutions, skill),
|
||||
Skill::Corrupt => corrupt(source, target, resolutions, skill),
|
||||
@ -317,6 +318,7 @@ pub type Cooldown = Option<u8>;
|
||||
pub enum Effect {
|
||||
// physical
|
||||
Stun,
|
||||
Buff,
|
||||
Parry,
|
||||
Block,
|
||||
Bleed,
|
||||
@ -427,6 +429,7 @@ impl Effect {
|
||||
match self {
|
||||
Effect::Vulnerable => vec![Stat::RedDamageTaken],
|
||||
Effect::Block => vec![Stat::RedDamageTaken],
|
||||
Effect::Buff => vec![Stat::RedDamage, Stat::Speed],
|
||||
|
||||
Effect::Hatred => vec![Stat::RedDamage, Stat::BlueDamage],
|
||||
|
||||
@ -449,6 +452,7 @@ impl Effect {
|
||||
match self {
|
||||
Effect::Vulnerable => value.pct(150),
|
||||
Effect::Block => value.pct(50),
|
||||
Effect::Buff => value.pct(125),
|
||||
|
||||
Effect::Amplify => value.pct(150),
|
||||
Effect::Curse => value.pct(150),
|
||||
@ -478,6 +482,7 @@ impl Effect {
|
||||
// physical
|
||||
Effect::Stun => Category::Debuff,
|
||||
Effect::Block => Category::Buff,
|
||||
Effect::Buff => Category::Buff,
|
||||
Effect::Parry => Category::Buff,
|
||||
Effect::Bleed => Category::Debuff,
|
||||
Effect::Leech => Category::Debuff,
|
||||
@ -559,6 +564,7 @@ pub enum Category {
|
||||
pub enum Skill {
|
||||
Attack,
|
||||
Debuff,
|
||||
Buff,
|
||||
Block, // reduce damage
|
||||
Stun,
|
||||
|
||||
@ -691,6 +697,7 @@ impl Skill {
|
||||
pub fn duration(&self) -> u8 {
|
||||
match self {
|
||||
Skill::Block => 1,
|
||||
Skill::Buff => 2,
|
||||
Skill::Parry => 2,
|
||||
Skill::Clutch => 1,
|
||||
Skill::Debuff => 3,
|
||||
@ -755,6 +762,7 @@ impl Skill {
|
||||
match self {
|
||||
Skill::Attack => None,
|
||||
Skill::Debuff => Some(1),
|
||||
Skill::Buff => None,
|
||||
Skill::Strike => None,
|
||||
Skill::StrikeII => None,
|
||||
Skill::StrikeIII => None,
|
||||
@ -835,6 +843,7 @@ impl Skill {
|
||||
Skill::Slay => Category::Red,
|
||||
Skill::Taunt => Category::Red,
|
||||
Skill::HasteStrike => Category::Red,
|
||||
Skill::Buff => Category::Red,
|
||||
|
||||
Skill::Heal => Category::Green,
|
||||
Skill::Triage => Category::Green, // hot
|
||||
@ -1078,6 +1087,12 @@ fn block(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill:
|
||||
return results;
|
||||
}
|
||||
|
||||
fn buff(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||
let fx = CrypEffect::new(Effect::Buff, skill.duration());
|
||||
results.push(Resolution::new(source, target).event(target.add_effect(skill, fx)));
|
||||
return results;
|
||||
}
|
||||
|
||||
fn parry(source: &mut Cryp, target: &mut Cryp, mut results: Resolutions, skill: Skill) -> Resolutions {
|
||||
let red_amount = source.red_damage().pct(skill.multiplier());
|
||||
results.push(Resolution::new(source, target).event(target.recharge(skill, red_amount, 0)));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user