From b1fecab1b04adae681eb78aad40e331fc7b65787 Mon Sep 17 00:00:00 2001 From: Condorra Date: Sun, 11 Feb 2024 22:21:51 +1100 Subject: [PATCH] Infest the sewers with crocodiles + minor NPC fixups --- .../src/static_content/npc/sewer_npcs.rs | 14 +++- .../src/static_content/npc/sewer_npcs.yaml | 36 ++++++++++ .../src/static_content/possession_type.rs | 1 + .../static_content/possession_type/whip.rs | 67 +++++++++++++++++++ 4 files changed, 115 insertions(+), 3 deletions(-) diff --git a/blastmud_game/src/static_content/npc/sewer_npcs.rs b/blastmud_game/src/static_content/npc/sewer_npcs.rs index 9957bf98..1f617eb8 100644 --- a/blastmud_game/src/static_content/npc/sewer_npcs.rs +++ b/blastmud_game/src/static_content/npc/sewer_npcs.rs @@ -37,7 +37,7 @@ pub fn npc_list() -> Vec { use NPCSayType::FromFixedList; let radiant_predator_stdsay = NPCSayInfo { say_code: "babble", - frequency_secs: 120, + frequency_secs: 30, talk_type: FromFixedList(vec![ "I hunger for flesh.", "The darkness is my ally.", @@ -64,7 +64,7 @@ pub fn npc_list() -> Vec { }; let stinkfiend_stdsay = NPCSayInfo { say_code: "babble", - frequency_secs: 120, + frequency_secs: 30, talk_type: FromFixedList(vec![ "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!", @@ -162,6 +162,7 @@ pub fn npc_list() -> Vec { ) }).collect(), player_consents: vec!(ConsentType::Fight), + intrinsic_weapon: Some(PossessionType::Fangs), message_handler: None, wander_zones: vec!["melbs_sewers".to_owned()], ..Default::default() @@ -175,7 +176,7 @@ pub fn npc_list() -> Vec { ..Pronouns::default_inanimate() }, 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(), spawn_location: format!("room/melbs_sewers_{}", &spawn_loc), species: SpeciesType::Human, @@ -199,6 +200,13 @@ pub fn npc_list() -> Vec { ) }).collect(), player_consents: vec!(ConsentType::Fight), + spawn_possessions: vec![ + NPCSpawnPossession { + what: PossessionType::Dagger, + action_type: LocationActionType::Wielded, + wear_layer: 0, + }, + ], says: vec!(stinkfiend_stdsay.clone()), message_handler: None, wander_zones: vec![], // They defend their room. diff --git a/blastmud_game/src/static_content/npc/sewer_npcs.yaml b/blastmud_game/src/static_content/npc/sewer_npcs.yaml index a2a8dbd8..a35c5d9c 100644 --- a/blastmud_game/src/static_content/npc/sewer_npcs.yaml +++ b/blastmud_game/src/static_content/npc/sewer_npcs.yaml @@ -228,6 +228,42 @@ name: repulsive foul radiant predator gender: Male 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 code: stink_1 name: repulsive stinkfiend diff --git a/blastmud_game/src/static_content/possession_type.rs b/blastmud_game/src/static_content/possession_type.rs index 76749a57..e8fea471 100644 --- a/blastmud_game/src/static_content/possession_type.rs +++ b/blastmud_game/src/static_content/possession_type.rs @@ -411,6 +411,7 @@ pub enum PossessionType { // Weapons: Whips AntennaWhip, LeatherWhip, + Sjambok, // Weapons: Blades ButcherKnife, Dagger, diff --git a/blastmud_game/src/static_content/possession_type/whip.rs b/blastmud_game/src/static_content/possession_type/whip.rs index 7d69f4ca..6225f780 100644 --- a/blastmud_game/src/static_content/possession_type/whip.rs +++ b/blastmud_game/src/static_content/possession_type/whip.rs @@ -135,5 +135,72 @@ pub fn data() -> &'static Vec<(PossessionType, PossessionData)> { ..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() + } + ), )) }