diff --git a/client/src/components/game.container.js b/client/src/components/game.container.js
index 3f504ff0..b487d3cd 100644
--- a/client/src/components/game.container.js
+++ b/client/src/components/game.container.js
@@ -5,15 +5,15 @@ const Game = require('./game');
const addState = connect(
function receiveState(state) {
const { ws, game, account } = state;
- function sendGameAbility(crypId, targetTeamId, ability) {
- return ws.sendGameAbility(game.id, crypId, targetTeamId, ability);
+ function sendGameSkill(crypId, targetTeamId, skill) {
+ return ws.sendGameSkill(game.id, crypId, targetTeamId, skill);
}
- function sendGameTarget(crypId, abilityId) {
- return ws.sendGameTarget(game.id, crypId, abilityId);
+ function sendGameTarget(crypId, skillId) {
+ return ws.sendGameTarget(game.id, crypId, skillId);
}
- return { game, account, sendGameAbility, sendGameTarget };
+ return { game, account, sendGameSkill, sendGameTarget };
}
);
diff --git a/client/src/components/game.jsx b/client/src/components/game.jsx
index 96a3b10d..495fd940 100644
--- a/client/src/components/game.jsx
+++ b/client/src/components/game.jsx
@@ -1,6 +1,6 @@
const preact = require('preact');
-function GamePanel({ game, sendGameAbility, sendGameTarget, account }) {
+function GamePanel({ game, sendGameSkill, sendGameTarget, account }) {
if (!game) return
...
;
const otherTeams = game.teams.filter(t => t.id !== account.id);
@@ -23,7 +23,7 @@ function GamePanel({ game, sendGameAbility, sendGameTarget, account }) {
diff --git a/client/src/socket.jsx b/client/src/socket.jsx
index b6e6d03e..8373b183 100755
--- a/client/src/socket.jsx
+++ b/client/src/socket.jsx
@@ -113,12 +113,12 @@ function createSocket(store) {
send({ method: 'game_pve', params: { id } });
}
- function sendGameAbility(gameId, crypId, targetTeamId, ability) {
- send({ method: 'game_ability', params: { game_id: gameId, cryp_id: crypId, target_team_id: targetTeamId, ability } });
+ function sendGameSkill(gameId, crypId, targetTeamId, skill) {
+ send({ method: 'game_skill', params: { game_id: gameId, cryp_id: crypId, target_team_id: targetTeamId, skill } });
}
- function sendGameTarget(gameId, crypId, abilityId) {
- send({ method: 'game_target', params: { game_id: gameId, cryp_id: crypId, ability_id: abilityId } });
+ function sendGameTarget(gameId, crypId, skillId) {
+ send({ method: 'game_target', params: { game_id: gameId, cryp_id: crypId, skill_id: skillId } });
}
function sendItemUse(item, target) {
@@ -162,7 +162,7 @@ function createSocket(store) {
sendAccountLogin,
sendAccountRegister,
sendGamePve,
- sendGameAbility,
+ sendGameSkill,
sendGameTarget,
sendCrypSpawn,
sendItemUse,
diff --git a/server/WORKLOG.md b/server/WORKLOG.md
index 361bb12e..0658b67d 100755
--- a/server/WORKLOG.md
+++ b/server/WORKLOG.md
@@ -26,8 +26,10 @@
* skills
* offensive -> choose target ✔
- * check for cryp ability already used
- * check for cryp ability ownership
+ * teach cyps skills
+ * fetch existing battles
+ * check for cryp skill already used
+ * check for cryp skill ownership
* check for game participation
* write players row for every team+cryp added
@@ -91,7 +93,7 @@ gem td style attr combinations
* 4: Make use of piggybacking
* 5: Don't confuse "interesting" with "fun"
* 6: Understand what emotion your game is trying to evoke
-* 7: Allow the players the ability to make the game personal
+* 7: Allow the players the skill to make the game personal
* 8: The details are where the players fall in love with your game
* 9: Allow your players to have a sense of ownership
* 10: Leave room for the player to explore
diff --git a/server/src/cryp.rs b/server/src/cryp.rs
index 3e442d96..c2b72a68 100755
--- a/server/src/cryp.rs
+++ b/server/src/cryp.rs
@@ -229,7 +229,7 @@ pub fn cryp_get(tx: &mut Transaction, id: Uuid, account_id: Uuid) -> Result Result {
let cryp = Cryp::new()
.named(¶ms.name)
- .level(1)
+ .level(10)
.set_account(account.id)
.create();
diff --git a/server/src/game.rs b/server/src/game.rs
index 97f9f659..53804516 100755
--- a/server/src/game.rs
+++ b/server/src/game.rs
@@ -8,7 +8,7 @@ use failure::Error;
use failure::err_msg;
use account::Account;
-use rpc::{GameAbilityParams, GamePveParams, GameTargetParams};
+use rpc::{GameSkillParams, GamePveParams, GameTargetParams};
use cryp::{Cryp, CrypStat, Stat};
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
@@ -18,31 +18,31 @@ pub struct Roll {
}
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
-pub enum Ability {
+pub enum Skill {
Attack,
Block,
Heal,
}
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
-pub struct GameAbility {
+pub struct GameSkill {
id: Uuid,
- ability: Ability,
+ skill: Skill,
cryp_id: Uuid,
roll: Option,
target_cryp_id: Option,
target_team_id: Uuid,
}
-impl GameAbility {
- pub fn new(cryp_id: Uuid, target_team_id: Uuid, ability: Ability) -> GameAbility {
- return GameAbility {
+impl GameSkill {
+ pub fn new(cryp_id: Uuid, target_team_id: Uuid, skill: Skill) -> GameSkill {
+ return GameSkill {
id: Uuid::new_v4(),
cryp_id,
target_cryp_id: None,
target_team_id,
roll: None,
- ability,
+ skill,
};
}
@@ -50,10 +50,10 @@ impl GameAbility {
let mut rng = thread_rng();
let base: u64 = rng.gen();
- let stat = match self.ability {
- Ability::Attack => &c.str,
- Ability::Block => &c.str,
- Ability::Heal => &c.int,
+ let stat = match self.skill {
+ Skill::Attack => &c.str,
+ Skill::Block => &c.str,
+ Skill::Heal => &c.int,
};
let mut roll = Roll { base, result: base };
@@ -72,7 +72,7 @@ impl GameAbility {
return roll;
}
- pub fn resolve(&mut self, cryp: &mut Cryp, target: &mut Cryp) -> &mut GameAbility {
+ pub fn resolve(&mut self, cryp: &mut Cryp, target: &mut Cryp) -> &mut GameSkill {
let roll = self.roll(&cryp);
println!("{:?} gettin clapped for {:?}", target.name, roll.result);
@@ -80,7 +80,7 @@ impl GameAbility {
self
}
- pub fn set_target(&mut self, cryp_id: Uuid) -> &mut GameAbility {
+ pub fn set_target(&mut self, cryp_id: Uuid) -> &mut GameSkill {
self.target_cryp_id = Some(cryp_id);
self
}
@@ -90,8 +90,8 @@ impl GameAbility {
pub struct Team {
id: Uuid,
cryps: Vec,
- abilities: Vec,
- incoming: Vec,
+ skills: Vec,
+ incoming: Vec,
}
impl Team {
@@ -99,7 +99,7 @@ impl Team {
return Team {
id: account,
cryps: vec![],
- abilities: vec![],
+ skills: vec![],
incoming: vec![],
};
}
@@ -113,7 +113,7 @@ impl Team {
self.cryps.iter_mut().find(|c| c.id == id)
}
- pub fn ability_by_id(&mut self, id: Uuid) -> &mut GameAbility {
+ pub fn skill_by_id(&mut self, id: Uuid) -> &mut GameSkill {
match self.incoming.iter_mut().find(|a| a.id == id) {
Some(a) => a,
None => panic!("abiltity not in game"),
@@ -124,7 +124,7 @@ impl Team {
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
pub enum Phase {
Start,
- Ability,
+ Skill,
Target,
Damage,
Finish,
@@ -207,29 +207,29 @@ impl Game {
}
pub fn start(&mut self) -> &mut Game {
- self.ability_phase_start();
+ self.skill_phase_start();
self
}
- pub fn ability_phase_start(&mut self) -> &mut Game {
+ pub fn skill_phase_start(&mut self) -> &mut Game {
if ![Phase::Start, Phase::Damage].contains(&self.phase) {
panic!("game not in damage or start phase");
}
- self.phase = Phase::Ability;
+ self.phase = Phase::Skill;
for team in self.teams.iter_mut() {
- team.abilities.clear();
+ team.skills.clear();
team.incoming.clear();
}
if self.is_pve {
- self.pve_add_abilities();
+ self.pve_add_skills();
}
self
}
- fn pve_add_abilities(&mut self) -> &mut Game {
+ fn pve_add_skills(&mut self) -> &mut Game {
{
let mob_team_id = Uuid::nil();
let teams = self.teams.clone();
@@ -237,16 +237,16 @@ impl Game {
// TODO attack multiple players based on some criteria
let player_team = teams.iter().find(|t| t.id != mob_team_id).unwrap();
for mob in &mobs.cryps {
- self.add_ability(mob_team_id, mob.id, player_team.id, Ability::Attack);
+ self.add_skill(mob_team_id, mob.id, player_team.id, Skill::Attack);
}
}
self
}
- // abilities can target any team, but we have to check if the caller is the owner of the cryp
- // and that the cryp has the ability they are trying to add
- pub fn add_ability(&mut self, team_id: Uuid, cryp_id: Uuid, target_team_id: Uuid, ability: Ability) -> Uuid {
+ // skills can target any team, but we have to check if the caller is the owner of the cryp
+ // and that the cryp has the skill they are trying to add
+ pub fn add_skill(&mut self, team_id: Uuid, cryp_id: Uuid, target_team_id: Uuid, skill: Skill) -> Uuid {
let team = self.team_by_id(team_id);
match team.cryp_by_id(cryp_id) {
Some(c) => c,
@@ -254,22 +254,22 @@ impl Game {
};
// TODO check cryp ownership
- // TODO check cryp ability already used
- // TODO check cryp has ability
- let ability = GameAbility::new(cryp_id, target_team_id, ability);
- team.abilities.push(ability);
+ // TODO check cryp skill already used
+ // TODO check cryp has skill
+ let skill = GameSkill::new(cryp_id, target_team_id, skill);
+ team.skills.push(skill);
- return ability.id;
+ return skill.id;
}
- pub fn ability_phase_finished(&self) -> bool {
- self.teams.iter().all(|t| t.abilities.len() == self.team_size)
+ pub fn skill_phase_finished(&self) -> bool {
+ self.teams.iter().all(|t| t.skills.len() == self.team_size)
}
- // move all abilities into their target team's targets list
+ // move all skills into their target team's targets list
pub fn target_phase_start(&mut self) -> &mut Game {
- if self.phase != Phase::Ability {
- panic!("game not in ability phase");
+ if self.phase != Phase::Skill {
+ panic!("game not in skill phase");
}
self.phase = Phase::Target;
@@ -278,9 +278,9 @@ impl Game {
let teams = self.teams.clone();
for mut team in teams {
- for ability in team.abilities.iter_mut() {
- let target_team = self.team_by_id(ability.target_team_id);
- target_team.incoming.push(*ability);
+ for skill in team.skills.iter_mut() {
+ let target_team = self.team_by_id(skill.target_team_id);
+ target_team.incoming.push(*skill);
}
}
@@ -306,7 +306,7 @@ impl Game {
// targets can only be added by the owner of the team
- pub fn add_target(&mut self, team_id: Uuid, cryp_id: Uuid, ability_id: Uuid) -> &mut GameAbility {
+ pub fn add_target(&mut self, team_id: Uuid, cryp_id: Uuid, skill_id: Uuid) -> &mut GameSkill {
// whose team is this?
let team = self.team_by_id(team_id);
@@ -317,8 +317,8 @@ impl Game {
};
// set the target
- let ability = team.ability_by_id(ability_id);
- ability.set_target(cryp_id)
+ let skill = team.skill_by_id(skill_id);
+ skill.set_target(cryp_id)
}
pub fn target_phase_finished(&self) -> bool {
@@ -334,18 +334,18 @@ impl Game {
self.phase = Phase::Damage;
- self.resolve_abilities();
+ self.resolve_skills();
if self.is_finished() {
return self.finish()
}
- self.ability_phase_start();
+ self.skill_phase_start();
self
}
- fn resolve_abilities(&mut self) -> &mut Game {
+ fn resolve_skills(&mut self) -> &mut Game {
if self.phase != Phase::Damage {
panic!("game not in damage phase");
}
@@ -371,7 +371,7 @@ impl Game {
self.phase = Phase::Finish;
for team in self.teams.iter_mut() {
- team.abilities.clear();
+ team.skills.clear();
team.incoming.clear();
}
@@ -379,7 +379,7 @@ impl Game {
}
}
-pub fn game_ability(params: GameAbilityParams, tx: &mut Transaction, account: &Account) -> Result {
+pub fn game_skill(params: GameSkillParams, tx: &mut Transaction, account: &Account) -> Result {
let query = "
SELECT *
FROM games
@@ -398,9 +398,9 @@ pub fn game_ability(params: GameAbilityParams, tx: &mut Transaction, account: &A
let game_bytes: Vec = returned.get("data");
let mut game = from_slice::(&game_bytes)?;
- game.add_ability(account.id, params.cryp_id, params.target_team_id, params.ability);
+ game.add_skill(account.id, params.cryp_id, params.target_team_id, params.skill);
- if game.ability_phase_finished() {
+ if game.skill_phase_finished() {
game.target_phase_start();
}
@@ -426,7 +426,7 @@ pub fn game_target(params: GameTargetParams, tx: &mut Transaction, account: &Acc
let game_bytes: Vec = returned.get("data");
let mut game = from_slice::(&game_bytes)?;
- game.add_target(account.id, params.cryp_id, params.ability_id);
+ game.add_target(account.id, params.cryp_id, params.skill_id);
if game.target_phase_finished() {
game.damage_phase_start();
@@ -617,10 +617,10 @@ mod tests {
game.start();
- let x_attack_id = game.add_ability(x_team_id, x_id, y_team_id, Ability::Attack);
- let y_attack_id = game.add_ability(y_team_id, y_id, x_team_id, Ability::Attack);
+ let x_attack_id = game.add_skill(x_team_id, x_id, y_team_id, Skill::Attack);
+ let y_attack_id = game.add_skill(y_team_id, y_id, x_team_id, Skill::Attack);
- assert!(game.ability_phase_finished());
+ assert!(game.skill_phase_finished());
game.target_phase_start();
@@ -633,7 +633,7 @@ mod tests {
game.damage_phase_start();
- assert!([Phase::Ability, Phase::Finish].contains(&game.phase));
+ assert!([Phase::Skill, Phase::Finish].contains(&game.phase));
println!("{:?}", game);
diff --git a/server/src/rpc.rs b/server/src/rpc.rs
index 4b1be3fe..76529743 100755
--- a/server/src/rpc.rs
+++ b/server/src/rpc.rs
@@ -11,7 +11,7 @@ use failure::err_msg;
use net::Db;
use cryp::{Cryp, cryp_spawn};
-use game::{Game, Ability, game_pve, game_ability, game_target};
+use game::{Game, Skill, game_pve, game_skill, game_target};
use account::{Account, account_create, account_login, account_from_token, account_cryps};
use item::{Item, items_list, item_use};
@@ -39,7 +39,7 @@ impl Rpc {
let response = match v.method.as_ref() {
"cryp_spawn" => Rpc::cryp_spawn(data, &mut tx, account, client),
"game_pve" => Rpc::game_pve(data, &mut tx, account, client),
- "game_ability" => Rpc::game_ability(data, &mut tx, account, client),
+ "game_skill" => Rpc::game_skill(data, &mut tx, account, client),
"game_target" => Rpc::game_target(data, &mut tx, account, client),
"account_create" => Rpc::account_create(data, &mut tx, account, client),
"account_login" => Rpc::account_login(data, &mut tx, account, client),
@@ -87,17 +87,17 @@ impl Rpc {
return Ok(game_response);
}
- fn game_ability(data: Vec, tx: &mut Transaction, account: Option, _client: &mut WebSocket) -> Result {
+ fn game_skill(data: Vec, tx: &mut Transaction, account: Option, _client: &mut WebSocket) -> Result {
let a = match account {
Some(a) => a,
None => return Err(err_msg("auth required")),
};
- let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
+ let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
let game_response = RpcResponse {
method: "game_state".to_string(),
- params: RpcResult::GameState(game_ability(msg.params, tx, &a)?)
+ params: RpcResult::GameState(game_skill(msg.params, tx, &a)?)
};
// Rpc::send_msg(client, RpcResponse {
@@ -260,21 +260,21 @@ struct GameTargetMsg {
pub struct GameTargetParams {
pub game_id: Uuid,
pub cryp_id: Uuid,
- pub ability_id: Uuid,
+ pub skill_id: Uuid,
}
#[derive(Debug,Clone,Serialize,Deserialize)]
-struct GameAbilityMsg {
+struct GameSkillMsg {
method: String,
- params: GameAbilityParams,
+ params: GameSkillParams,
}
#[derive(Debug,Clone,Serialize,Deserialize)]
-pub struct GameAbilityParams {
+pub struct GameSkillParams {
pub game_id: Uuid,
pub cryp_id: Uuid,
pub target_team_id: Uuid,
- pub ability: Ability,
+ pub skill: Skill,
}
#[derive(Debug,Clone,Serialize,Deserialize)]