Pay out for kill bonuses.

This commit is contained in:
Condorra 2023-02-10 22:30:37 +11:00
parent f930d67562
commit 28f4e38e4c

View File

@ -130,7 +130,7 @@ impl TaskHandler for AttackTaskHandler {
} }
} }
pub async fn consider_xp_gain_for(trans: &DBTrans, by_item: &mut Item, for_item: &Item) -> DResult<()> { pub async fn consider_reward_for(trans: &DBTrans, by_item: &mut Item, for_item: &Item) -> DResult<()> {
if by_item.item_type != "player" { if by_item.item_type != "player" {
return Ok(()); return Ok(());
} }
@ -157,10 +157,20 @@ pub async fn consider_xp_gain_for(trans: &DBTrans, by_item: &mut Item, for_item:
Some(r) => r Some(r) => r
}; };
user.experience.xp_change_for_this_reroll += xp_gain as i64; user.experience.xp_change_for_this_reroll += xp_gain as i64;
// Now consider kill bonuses...
if for_item.item_type == "npc" {
if let Some(npc) = npc_by_code().get(for_item.item_code.as_str()) {
if let Some(bonus) = &npc.kill_bonus {
user.credits += bonus.payment;
trans.queue_for_session(&session, Some(&format!("{}\nYour wristpad beeps for a credit of {} for that.\n", bonus.msg, bonus.payment))).await?;
}
}
}
trans.save_user_model(&user).await?; trans.save_user_model(&user).await?;
trans.queue_for_session(&session, Some(&format!("You gained {} experience points!\n", xp_gain))).await?; trans.queue_for_session(&session, Some(&format!("You gained {} experience points!\n", xp_gain))).await?;
Ok(()) Ok(())
} }
@ -182,7 +192,7 @@ pub async fn handle_death(trans: &DBTrans, whom: &mut Item) -> DResult<()> {
if let Some((atype, acode)) = attacker.split_once("/") { if let Some((atype, acode)) = attacker.split_once("/") {
if let Some(aitem) = trans.find_item_by_type_code(atype, acode).await? { if let Some(aitem) = trans.find_item_by_type_code(atype, acode).await? {
let mut new_aitem = (*aitem).clone(); let mut new_aitem = (*aitem).clone();
consider_xp_gain_for(trans, &mut new_aitem, &whom).await?; consider_reward_for(trans, &mut new_aitem, &whom).await?;
stop_attacking_mut(trans, &mut new_aitem, whom, true).await?; stop_attacking_mut(trans, &mut new_aitem, whom, true).await?;
trans.save_item_model(&new_aitem).await?; trans.save_item_model(&new_aitem).await?;
} }