Infest the sewers with crocodiles + minor NPC fixups

This commit is contained in:
Condorra 2024-02-11 22:21:51 +11:00
parent 18f1bcf241
commit b1fecab1b0
4 changed files with 115 additions and 3 deletions

View File

@ -37,7 +37,7 @@ pub fn npc_list() -> Vec<NPC> {
use NPCSayType::FromFixedList; use NPCSayType::FromFixedList;
let radiant_predator_stdsay = NPCSayInfo { let radiant_predator_stdsay = NPCSayInfo {
say_code: "babble", say_code: "babble",
frequency_secs: 120, frequency_secs: 30,
talk_type: FromFixedList(vec![ talk_type: FromFixedList(vec![
"I hunger for flesh.", "I hunger for flesh.",
"The darkness is my ally.", "The darkness is my ally.",
@ -64,7 +64,7 @@ pub fn npc_list() -> Vec<NPC> {
}; };
let stinkfiend_stdsay = NPCSayInfo { let stinkfiend_stdsay = NPCSayInfo {
say_code: "babble", say_code: "babble",
frequency_secs: 120, frequency_secs: 30,
talk_type: FromFixedList(vec![ talk_type: FromFixedList(vec![
"This part of the sewers is mine, and all who enter die by my hand!", "This part of the sewers is mine, and all who enter die by my hand!",
"I hate surface dwellers so much. At least they're easy to kill!", "I hate surface dwellers so much. At least they're easy to kill!",
@ -162,6 +162,7 @@ pub fn npc_list() -> Vec<NPC> {
) )
}).collect(), }).collect(),
player_consents: vec!(ConsentType::Fight), player_consents: vec!(ConsentType::Fight),
intrinsic_weapon: Some(PossessionType::Fangs),
message_handler: None, message_handler: None,
wander_zones: vec!["melbs_sewers".to_owned()], wander_zones: vec!["melbs_sewers".to_owned()],
..Default::default() ..Default::default()
@ -175,7 +176,7 @@ pub fn npc_list() -> Vec<NPC> {
..Pronouns::default_inanimate() ..Pronouns::default_inanimate()
}, },
aliases: vec!["fiend".to_owned()], aliases: vec!["fiend".to_owned()],
aggression: 18, aggression: 21,
description: "A grotesquely mutant humanoid creature, with orange-tinged discoloured skin hanging loose on flesh, and distorted yet horrific features. It looks dangerous. The odour of this creature is so pungent you have to choke back the urge to vomit as it wafts your way".to_owned(), description: "A grotesquely mutant humanoid creature, with orange-tinged discoloured skin hanging loose on flesh, and distorted yet horrific features. It looks dangerous. The odour of this creature is so pungent you have to choke back the urge to vomit as it wafts your way".to_owned(),
spawn_location: format!("room/melbs_sewers_{}", &spawn_loc), spawn_location: format!("room/melbs_sewers_{}", &spawn_loc),
species: SpeciesType::Human, species: SpeciesType::Human,
@ -199,6 +200,13 @@ pub fn npc_list() -> Vec<NPC> {
) )
}).collect(), }).collect(),
player_consents: vec!(ConsentType::Fight), player_consents: vec!(ConsentType::Fight),
spawn_possessions: vec![
NPCSpawnPossession {
what: PossessionType::Dagger,
action_type: LocationActionType::Wielded,
wear_layer: 0,
},
],
says: vec!(stinkfiend_stdsay.clone()), says: vec!(stinkfiend_stdsay.clone()),
message_handler: None, message_handler: None,
wander_zones: vec![], // They defend their room. wander_zones: vec![], // They defend their room.

View File

@ -228,6 +228,42 @@
name: repulsive foul radiant predator name: repulsive foul radiant predator
gender: Male gender: Male
spawn_loc: 14q spawn_loc: 14q
- !KillerCroc
code: 1
name: leathery killer crocodile
spawn_loc: 9f
- !KillerCroc
code: 2
name: snapping killer crocodile
spawn_loc: 9g
- !KillerCroc
code: 3
name: prowling killer crocodile
spawn_loc: 6i
- !KillerCroc
code: 4
name: lurking killer crocodile
spawn_loc: 7i
- !KillerCroc
code: 5
name: silent killer crocodile
spawn_loc: 11i
- !KillerCroc
code: 6
name: smiling killer crocodile
spawn_loc: 12i
- !KillerCroc
code: 7
name: robust killer crocodile
spawn_loc: 9j
- !KillerCroc
code: 8
name: scaly killer crocodile
spawn_loc: 9k
- !KillerCroc
code: 9
name: ruthless killer crocodile
spawn_loc: 9l
- !Stinkfiend - !Stinkfiend
code: stink_1 code: stink_1
name: repulsive stinkfiend name: repulsive stinkfiend

View File

@ -411,6 +411,7 @@ pub enum PossessionType {
// Weapons: Whips // Weapons: Whips
AntennaWhip, AntennaWhip,
LeatherWhip, LeatherWhip,
Sjambok,
// Weapons: Blades // Weapons: Blades
ButcherKnife, ButcherKnife,
Dagger, Dagger,

View File

@ -135,5 +135,72 @@ pub fn data() -> &'static Vec<(PossessionType, PossessionData)> {
..Default::default() ..Default::default()
} }
), ),
(PossessionType::Sjambok,
PossessionData {
display: "sjambok",
details: "A flexible rod-like whip, tapered at one end, made of some kind of thick hide rolled into a cylinder. It looks like it would make a formidable whip",
aliases: vec!("whip"),
weight: 800,
weapon_data: Some(WeaponData {
uses_skill: SkillType::Whips,
raw_min_to_learn: 2.0,
raw_max_to_learn: 4.0,
normal_attack: WeaponAttackData {
start_messages: vec!(
Box::new(|attacker, victim|
format!("{} lines up {} sjambok for a strike on {}",
&attacker.display_for_sentence(1, true),
&attacker.pronouns.possessive,
&victim.display_for_sentence(1, false),
)
)
),
success_messages: vec!(
Box::new(|attacker, victim, part|
format!("{}'s sjambok lacerates {}'s {}",
&attacker.display_for_sentence(1, true),
&victim.display_for_sentence(1, false),
&part.display(victim.sex.clone())
)
)
),
mean_damage: 5.0,
stdev_damage: 3.0,
base_damage_type: DamageType::Slash,
crit_effects: vec![(0.05, EffectType::Bleed)],
other_damage_types: vec!((0.25, DamageType::Beat)),
..Default::default()
},
power_attack: Some(WeaponAttackData {
start_messages: vec!(
Box::new(|attacker, victim|
format!("{} bulges {} muscles for a power sjambok strike on {}",
&attacker.display_for_sentence(1, true),
&attacker.pronouns.possessive,
&victim.display_for_sentence(1, false),
)
)
),
success_messages: vec!(
Box::new(|attacker, victim, part|
format!("{}'s sjambok hits {}'s {} with great force",
&attacker.display_for_sentence(1, true),
&victim.display_for_sentence(1, false),
&part.display(victim.sex.clone())
)
)
),
mean_damage: 14.0,
stdev_damage: 5.0,
base_damage_type: DamageType::Slash,
crit_effects: vec![(0.3, EffectType::Bleed)],
other_damage_types: vec!((0.25, DamageType::Beat)),
..Default::default()
}),
..Default::default()
}),
..Default::default()
}
),
)) ))
} }