deserlize all cards
This commit is contained in:
parent
97aa161166
commit
91a56a77dc
272
Cargo.lock
generated
272
Cargo.lock
generated
@ -6,59 +6,8 @@ version = 3
|
||||
name = "aro"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"crossterm",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tui",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "1.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "cassowary"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "crossterm"
|
||||
version = "0.25.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"crossterm_winapi",
|
||||
"libc",
|
||||
"mio",
|
||||
"parking_lot",
|
||||
"signal-hook",
|
||||
"signal-hook-mio",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossterm_winapi"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2ae1b35a484aa10e07fe0638d02301c5ad24de82d310ccbd2f3693da5f09bf1c"
|
||||
dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -67,66 +16,6 @@ version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.137"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
|
||||
|
||||
[[package]]
|
||||
name = "lock_api"
|
||||
version = "0.4.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"scopeguard",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"log",
|
||||
"wasi",
|
||||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
|
||||
dependencies = [
|
||||
"lock_api",
|
||||
"parking_lot_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot_core"
|
||||
version = "0.9.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"redox_syscall",
|
||||
"smallvec",
|
||||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.47"
|
||||
@ -145,27 +34,12 @@ dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.2.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
|
||||
|
||||
[[package]]
|
||||
name = "scopeguard"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.147"
|
||||
@ -197,42 +71,6 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook"
|
||||
version = "0.3.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"signal-hook-registry",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook-mio"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"mio",
|
||||
"signal-hook",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook-registry"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "smallvec"
|
||||
version = "1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.103"
|
||||
@ -244,118 +82,8 @@ dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tui"
|
||||
version = "0.19.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ccdd26cbd674007e649a272da4475fb666d3aa0ad0531da7136db6fab0e5bad1"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"cassowary",
|
||||
"crossterm",
|
||||
"unicode-segmentation",
|
||||
"unicode-width",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-segmentation"
|
||||
version = "1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-width"
|
||||
version = "0.1.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.11.0+wasi-snapshot-preview1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.3.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||
dependencies = [
|
||||
"winapi-i686-pc-windows-gnu",
|
||||
"winapi-x86_64-pc-windows-gnu",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi-i686-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||
|
||||
[[package]]
|
||||
name = "winapi-x86_64-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.42.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm",
|
||||
"windows_aarch64_msvc",
|
||||
"windows_i686_gnu",
|
||||
"windows_i686_msvc",
|
||||
"windows_x86_64_gnu",
|
||||
"windows_x86_64_gnullvm",
|
||||
"windows_x86_64_msvc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.42.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.42.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.42.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.42.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.42.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.42.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.42.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
|
||||
|
@ -6,5 +6,3 @@ edition = "2021"
|
||||
[dependencies]
|
||||
serde_json = "1.0"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
tui = "0.19.0"
|
||||
crossterm = "0.25.0"
|
||||
|
File diff suppressed because one or more lines are too long
609680
cards.json
Normal file
609680
cards.json
Normal file
File diff suppressed because it is too large
Load Diff
203
src/main.rs
203
src/main.rs
@ -1,104 +1,115 @@
|
||||
use crossterm::terminal::enable_raw_mode;
|
||||
use serde::Deserialize;
|
||||
use std::{io, iter, time::Duration};
|
||||
use tui::{
|
||||
backend::CrosstermBackend,
|
||||
layout,
|
||||
style::{Color, Style},
|
||||
text::Text,
|
||||
widgets::{Block, Borders, List, ListItem, Paragraph, Widget},
|
||||
};
|
||||
|
||||
type Terminal = tui::Terminal<CrosstermBackend<io::Stdout>>;
|
||||
use serde::{de::Visitor, Deserialize, Deserializer};
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let stdout = io::stdout();
|
||||
enable_raw_mode()?;
|
||||
let mut backend = CrosstermBackend::new(stdout);
|
||||
let mut terminal = Terminal::new(backend)?;
|
||||
terminal.hide_cursor()?;
|
||||
terminal.clear()?;
|
||||
let all_cards= vec![
|
||||
Card::SpellCard {
|
||||
name: "The Cheerful Coffin".to_owned(),
|
||||
text: "Discard up to 3 Monster Cards from your hand to the Graveyard.".to_owned()
|
||||
},
|
||||
Card::EffectMonster {
|
||||
name: "Des Lacooda".to_owned(),
|
||||
effect: "Once per turn: You can change this card to face-down Defense Position. When this card is Flip Summoned: Draw 1 card.".to_owned(),
|
||||
atk: 500,
|
||||
def: 600,
|
||||
level: 3,
|
||||
r#type: "Zombie".to_owned(),
|
||||
attribute: "EARTH".to_owned(),
|
||||
}
|
||||
];
|
||||
let mut cards = all_cards.clone();
|
||||
let mut search_text = String::new();
|
||||
|
||||
loop {
|
||||
refresh(&mut terminal, &cards, &search_text);
|
||||
}
|
||||
let cards: CardInfo =
|
||||
serde_json::from_reader(std::io::BufReader::new(std::fs::File::open("cards.json")?))?;
|
||||
println!("{} cards read", cards.data.len());
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn refresh(term: &mut Terminal, cards: &Vec<Card>, search_text: &str) -> Result<(), io::Error> {
|
||||
let mut list = selectable_list(
|
||||
search_text,
|
||||
cards
|
||||
.iter()
|
||||
.map(|c| ListItem::new(format!("{c:?}")))
|
||||
.collect::<Vec<_>>(),
|
||||
None,
|
||||
);
|
||||
term.draw(|mut frame| {
|
||||
frame.render_widget(list, frame.size());
|
||||
})?;
|
||||
Ok(())
|
||||
#[derive(Debug, Deserialize, PartialEq, Eq, Clone)]
|
||||
struct CardInfo {
|
||||
data: Vec<Card>,
|
||||
}
|
||||
|
||||
pub fn selectable_list<'a>(
|
||||
title: &'a str,
|
||||
content: Vec<ListItem<'a>>,
|
||||
selected: Option<usize>,
|
||||
) -> List<'a> {
|
||||
List::new(content)
|
||||
.block(
|
||||
Block::default()
|
||||
.title(title)
|
||||
.borders(Borders::TOP | Borders::RIGHT | Borders::LEFT),
|
||||
)
|
||||
.highlight_style(Style::default().fg(Color::LightGreen))
|
||||
.highlight_symbol(">")
|
||||
#[derive(Debug, Deserialize, PartialEq, Eq, Clone)]
|
||||
struct CardBase {
|
||||
//#[serde(rename = "type", deserialize_with = "split_types")]
|
||||
//card_type: Vec<String>,
|
||||
name: String,
|
||||
#[serde(rename = "desc")]
|
||||
text: String,
|
||||
}
|
||||
|
||||
fn split_types<'de, D: Deserializer<'de>>(deserializer: D) -> Result<Vec<String>, D::Error> {
|
||||
struct SplittingVisitor;
|
||||
|
||||
impl<'de> Visitor<'de> for SplittingVisitor {
|
||||
type Value = Vec<String>;
|
||||
|
||||
fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
formatter.write_str("a string")
|
||||
}
|
||||
|
||||
fn visit_str<E: serde::de::Error>(self, v: &str) -> Result<Self::Value, E> {
|
||||
Ok(v.split_whitespace()
|
||||
.filter(|t| t != &"Card")
|
||||
.map(str::to_owned)
|
||||
.collect())
|
||||
}
|
||||
}
|
||||
deserializer.deserialize_any(SplittingVisitor)
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, PartialEq, Eq, Clone)]
|
||||
struct Monster {
|
||||
// None for ?
|
||||
atk: Option<i32>,
|
||||
attribute: String,
|
||||
#[serde(rename = "race")]
|
||||
r#type: String,
|
||||
// None for ? or link monsters
|
||||
def: Option<i32>,
|
||||
// also includes rank
|
||||
level: Option<u8>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, PartialEq, Eq, Clone)]
|
||||
#[serde(tag = "type")]
|
||||
enum Card {
|
||||
#[serde(rename = "Spell Card")]
|
||||
SpellCard {
|
||||
name: String,
|
||||
#[serde(rename = "desc")]
|
||||
text: String,
|
||||
#[serde(alias = "Spell Card", alias = "Trap Card")]
|
||||
Backrow {
|
||||
#[serde(flatten)]
|
||||
base: CardBase,
|
||||
},
|
||||
#[serde(rename = "Skill Card")]
|
||||
Skill {
|
||||
#[serde(flatten)]
|
||||
base: CardBase,
|
||||
},
|
||||
#[serde(
|
||||
rename = "Effect Monster",
|
||||
alias = "Effect Monster",
|
||||
alias = "Flip Effect Monster",
|
||||
alias = "Union Effect Monster"
|
||||
alias = "Fusion Monster",
|
||||
alias = "Gemini Monster",
|
||||
alias = "Link Monster",
|
||||
alias = "Normal Monster",
|
||||
alias = "Normal Tuner Monster",
|
||||
alias = "Pendulum Effect Fusion Monster",
|
||||
alias = "Pendulum Effect Monster",
|
||||
alias = "Pendulum Effect Ritual Monster",
|
||||
alias = "Pendulum Flip Effect Monster",
|
||||
alias = "Pendulum Normal Monster",
|
||||
alias = "Pendulum Tuner Effect Monster",
|
||||
alias = "Ritual Effect Monster",
|
||||
alias = "Ritual Monster",
|
||||
alias = "Spirit Monster",
|
||||
alias = "Synchro Monster",
|
||||
alias = "Synchro Pendulum Effect Monster",
|
||||
alias = "Synchro Tuner Monster",
|
||||
alias = "Token",
|
||||
alias = "Toon Monster",
|
||||
alias = "Tuner Monster",
|
||||
alias = "Union Effect Monster",
|
||||
alias = "XYZ Monster",
|
||||
alias = "XYZ Pendulum Effect Monster"
|
||||
)]
|
||||
EffectMonster {
|
||||
name: String,
|
||||
#[serde(rename = "desc")]
|
||||
effect: String,
|
||||
atk: i32,
|
||||
def: i32,
|
||||
level: i32,
|
||||
attribute: String,
|
||||
#[serde(rename = "race")]
|
||||
r#type: String,
|
||||
Monster {
|
||||
#[serde(flatten)]
|
||||
base: CardBase,
|
||||
#[serde(flatten)]
|
||||
monster: Monster,
|
||||
#[serde(default, rename = "linkval")]
|
||||
link_rating: u8,
|
||||
#[serde(default)]
|
||||
linkmarkers: Vec<String>,
|
||||
},
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_spell() {
|
||||
let s = r#"
|
||||
@ -112,9 +123,13 @@ fn test_spell() {
|
||||
let coffin: Card = serde_json::from_str(s).unwrap();
|
||||
assert_eq!(
|
||||
coffin,
|
||||
Card::SpellCard {
|
||||
Card::Backrow {
|
||||
base: CardBase {
|
||||
card_type: vec!["Spell".to_owned()],
|
||||
name: "The Cheerful Coffin".to_owned(),
|
||||
text: "Discard up to 3 Monster Cards from your hand to the Graveyard.".to_owned()
|
||||
text: "Discard up to 3 Monster Cards from your hand to the Graveyard."
|
||||
.to_owned()
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
@ -136,14 +151,22 @@ fn test_monster() {
|
||||
let munch: Card = serde_json::from_str(s).unwrap();
|
||||
assert_eq!(
|
||||
munch,
|
||||
Card::EffectMonster {
|
||||
Card::Monster {
|
||||
base: CardBase {
|
||||
card_type: vec!["Effect".to_owned(), "Monster".to_owned()],
|
||||
name: "Des Lacooda".to_owned(),
|
||||
effect: "Once per turn: You can change this card to face-down Defense Position. When this card is Flip Summoned: Draw 1 card.".to_owned(),
|
||||
atk: 500,
|
||||
def: 600,
|
||||
level: 3,
|
||||
text: "Once per turn: You can change this card to face-down Defense Position. When this card is Flip Summoned: Draw 1 card.".to_owned(),
|
||||
},
|
||||
monster: Monster {
|
||||
atk: Some(500),
|
||||
def: Some(600),
|
||||
level: Some(3),
|
||||
r#type: "Zombie".to_owned(),
|
||||
attribute: "EARTH".to_owned(),
|
||||
}
|
||||
},
|
||||
link_rating: 0,
|
||||
linkmarkers: vec![]
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user