damage types: phys, magic, fire, cold, poison
This commit is contained in:
parent
de0aa33107
commit
b6abfbce4a
4 changed files with 28 additions and 13 deletions
|
|
@ -74,7 +74,7 @@
|
||||||
"weight": 0.5,
|
"weight": 0.5,
|
||||||
"value": 100,
|
"value": 100,
|
||||||
"flags": ["CONSUMABLE", "DESTRUCTIBLE"],
|
"flags": ["CONSUMABLE", "DESTRUCTIBLE"],
|
||||||
"effects": { "particle": "*;#FFA500;200.0", "ranged": "10", "damage": "4d6;magic", "aoe": "2" },
|
"effects": { "particle": "*;#FFA500;200.0", "ranged": "10", "damage": "4d6;fire", "aoe": "2" },
|
||||||
"magic": { "class": "uncommon", "naming": "scroll" }
|
"magic": { "class": "uncommon", "naming": "scroll" }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -87,7 +87,7 @@
|
||||||
"effects": {
|
"effects": {
|
||||||
"particle_burst": "▓;*;~;#FFA500;#000000;500.0;#ffd381;60.0",
|
"particle_burst": "▓;*;~;#FFA500;#000000;500.0;#ffd381;60.0",
|
||||||
"ranged": "10",
|
"ranged": "10",
|
||||||
"damage": "8d6;magic",
|
"damage": "8d6;fire",
|
||||||
"aoe": "3"
|
"aoe": "3"
|
||||||
},
|
},
|
||||||
"magic": { "class": "rare", "naming": "scroll" }
|
"magic": { "class": "rare", "naming": "scroll" }
|
||||||
|
|
@ -363,7 +363,7 @@
|
||||||
"weight": 2,
|
"weight": 2,
|
||||||
"value": 300,
|
"value": 300,
|
||||||
"flags": ["CHARGES"],
|
"flags": ["CHARGES"],
|
||||||
"effects": { "ranged": "10", "damage": "8d6;magic", "aoe": "3" },
|
"effects": { "ranged": "10", "damage": "8d6;fire", "aoe": "3" },
|
||||||
"magic": { "class": "rare", "naming": "wand" }
|
"magic": { "class": "rare", "naming": "wand" }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -323,13 +323,13 @@
|
||||||
"id": "ant_soldier",
|
"id": "ant_soldier",
|
||||||
"name": "soldier ant",
|
"name": "soldier ant",
|
||||||
"renderable": { "glyph": "a", "fg": "#ca3f26", "bg": "#000000", "order": 1 },
|
"renderable": { "glyph": "a", "fg": "#ca3f26", "bg": "#000000", "order": 1 },
|
||||||
"flags": ["SMALL_GROUP"],
|
"flags": ["SMALL_GROUP", "POISON_RES"],
|
||||||
"level": 3,
|
"level": 3,
|
||||||
"bac": 3,
|
"bac": 3,
|
||||||
"speed": 18,
|
"speed": 18,
|
||||||
"attacks": [
|
"attacks": [
|
||||||
{ "name": "bites", "hit_bonus": 0, "damage": "2d4" },
|
{ "name": "bites", "hit_bonus": 0, "damage": "2d4" },
|
||||||
{ "name": "stings", "hit_bonus": 0, "damage": "3d4" }
|
{ "name": "stings", "hit_bonus": 0, "damage": "3d4;poison" }
|
||||||
],
|
],
|
||||||
"loot": { "table": "food", "chance": 0.05 }
|
"loot": { "table": "food", "chance": 0.05 }
|
||||||
},
|
},
|
||||||
|
|
@ -503,7 +503,7 @@
|
||||||
"id": "treant_small",
|
"id": "treant_small",
|
||||||
"name": "treant sapling",
|
"name": "treant sapling",
|
||||||
"renderable": { "glyph": "♠️", "fg": "#10570d", "bg": "#000000", "order": 1 },
|
"renderable": { "glyph": "♠️", "fg": "#10570d", "bg": "#000000", "order": 1 },
|
||||||
"flags": ["LARGE_GROUP", "GREEN_BLOOD"],
|
"flags": ["LARGE_GROUP", "GREEN_BLOOD", "FIRE_WEAK"],
|
||||||
"level": 2,
|
"level": 2,
|
||||||
"bac": 12,
|
"bac": 12,
|
||||||
"speed": 3,
|
"speed": 3,
|
||||||
|
|
|
||||||
|
|
@ -370,14 +370,17 @@ pub struct ProvidesHealing {
|
||||||
#[derive(Debug, PartialEq, Eq, Hash, Copy, Clone, Serialize, Deserialize)]
|
#[derive(Debug, PartialEq, Eq, Hash, Copy, Clone, Serialize, Deserialize)]
|
||||||
pub enum DamageType {
|
pub enum DamageType {
|
||||||
Physical,
|
Physical,
|
||||||
Magic,
|
Magic, // e.g. magic missiles, silvered weapons
|
||||||
|
Fire, // e.g. fireball
|
||||||
|
Cold, // e.g. cone of cold
|
||||||
|
Poison, // e.g. poison gas
|
||||||
Forced, // Bypasses any immunities. e.g. Hunger ticks.
|
Forced, // Bypasses any immunities. e.g. Hunger ticks.
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DamageType {
|
impl DamageType {
|
||||||
pub fn is_magic(&self) -> bool {
|
pub fn is_magic(&self) -> bool {
|
||||||
match self {
|
match self {
|
||||||
DamageType::Magic => true,
|
DamageType::Magic | DamageType::Fire | DamageType::Cold => true,
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,12 +90,21 @@ macro_rules! apply_flags {
|
||||||
"HERBIVORE" => $eb = $eb.with(Faction { name: "herbivore".to_string() }),
|
"HERBIVORE" => $eb = $eb.with(Faction { name: "herbivore".to_string() }),
|
||||||
"CARNIVORE" => $eb = $eb.with(Faction { name: "carnivore".to_string() }),
|
"CARNIVORE" => $eb = $eb.with(Faction { name: "carnivore".to_string() }),
|
||||||
// --- DAMAGE MODIFIERS ---
|
// --- DAMAGE MODIFIERS ---
|
||||||
|
"PHYS_IMMUNITY" => { damage_modifiers.insert(DamageType::Physical, DamageModifier::Immune); }
|
||||||
|
"PHYS_WEAK" => { damage_modifiers.insert(DamageType::Physical, DamageModifier::Weakness); }
|
||||||
|
"PHYS_RES" => { damage_modifiers.insert(DamageType::Physical, DamageModifier::Resistance); }
|
||||||
"MAGIC_IMMUNITY" => { damage_modifiers.insert(DamageType::Magic, DamageModifier::Immune); }
|
"MAGIC_IMMUNITY" => { damage_modifiers.insert(DamageType::Magic, DamageModifier::Immune); }
|
||||||
"MAGIC_WEAKNESS" => { damage_modifiers.insert(DamageType::Magic, DamageModifier::Weakness); }
|
"MAGIC_WEAK" => { damage_modifiers.insert(DamageType::Magic, DamageModifier::Weakness); }
|
||||||
"MAGIC_RESISTANCE" => { damage_modifiers.insert(DamageType::Magic, DamageModifier::Resistance); }
|
"MAGIC_RES" => { damage_modifiers.insert(DamageType::Magic, DamageModifier::Resistance); }
|
||||||
"PHYSICAL_IMMUNITY" => { damage_modifiers.insert(DamageType::Physical, DamageModifier::Immune); }
|
"FIRE_IMMUNITY" => { damage_modifiers.insert(DamageType::Fire, DamageModifier::Immune); }
|
||||||
"PHYSICAL_WEAKNESS" => { damage_modifiers.insert(DamageType::Physical, DamageModifier::Weakness); }
|
"FIRE_WEAK" => { damage_modifiers.insert(DamageType::Fire, DamageModifier::Weakness); }
|
||||||
"PHYSICAL_RESISTANCE" => { damage_modifiers.insert(DamageType::Physical, DamageModifier::Resistance); }
|
"FIRE_RES" => { damage_modifiers.insert(DamageType::Fire, DamageModifier::Resistance); }
|
||||||
|
"COLD_IMMUNITY" => { damage_modifiers.insert(DamageType::Cold, DamageModifier::Immune); }
|
||||||
|
"COLD_WEAK" => { damage_modifiers.insert(DamageType::Cold, DamageModifier::Weakness); }
|
||||||
|
"COLD_RES" => { damage_modifiers.insert(DamageType::Cold, DamageModifier::Resistance); }
|
||||||
|
"POISON_IMMUNITY" => { damage_modifiers.insert(DamageType::Poison, DamageModifier::Immune); }
|
||||||
|
"POISON_WEAK" => { damage_modifiers.insert(DamageType::Poison, DamageModifier::Weakness); }
|
||||||
|
"POISON_RES" => { damage_modifiers.insert(DamageType::Poison, DamageModifier::Resistance); }
|
||||||
// --- MOVEMENT MODES --- ( defaults to WANDER )
|
// --- MOVEMENT MODES --- ( defaults to WANDER )
|
||||||
"STATIC" => $eb = $eb.with(MoveMode { mode: Movement::Static }),
|
"STATIC" => $eb = $eb.with(MoveMode { mode: Movement::Static }),
|
||||||
"RANDOM_PATH" => $eb = $eb.with(MoveMode { mode: Movement::RandomWaypoint { path: None } }),
|
"RANDOM_PATH" => $eb = $eb.with(MoveMode { mode: Movement::RandomWaypoint { path: None } }),
|
||||||
|
|
@ -1058,6 +1067,9 @@ fn parse_damage_string(n: &str) -> (DamageType, DiceType) {
|
||||||
match tokens[1] {
|
match tokens[1] {
|
||||||
"physical" => DamageType::Physical,
|
"physical" => DamageType::Physical,
|
||||||
"magic" => DamageType::Magic,
|
"magic" => DamageType::Magic,
|
||||||
|
"fire" => DamageType::Fire,
|
||||||
|
"cold" => DamageType::Cold,
|
||||||
|
"poison" => DamageType::Poison,
|
||||||
_ => panic!("Unrecognised damage type in raws: {}", tokens[1]),
|
_ => panic!("Unrecognised damage type in raws: {}", tokens[1]),
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue