From 2bee9067845c3245692bbf86f3f17efd0cebcc8c Mon Sep 17 00:00:00 2001 From: "Michael Cook (mackal)" Date: Mon, 6 Oct 2014 01:30:01 -0400 Subject: [PATCH] Slay Undead to String IDs (and better filtering) --- zone/attack.cpp | 24 +++++++++++++----------- zone/string_ids.h | 2 ++ 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/zone/attack.cpp b/zone/attack.cpp index a7a50a6cd..0b8cf07f1 100644 --- a/zone/attack.cpp +++ b/zone/attack.cpp @@ -4203,24 +4203,26 @@ void Mob::TryCriticalHit(Mob *defender, uint16 skill, int32 &damage, ExtraAttack } #endif //BOTS - float critChance = 0.0f; bool IsBerskerSPA = false; //1: Try Slay Undead - if(defender && defender->GetBodyType() == BT_Undead || defender->GetBodyType() == BT_SummonedUndead || defender->GetBodyType() == BT_Vampire){ - + if (defender && (defender->GetBodyType() == BT_Undead || + defender->GetBodyType() == BT_SummonedUndead || defender->GetBodyType() == BT_Vampire)) { int16 SlayRateBonus = aabonuses.SlayUndead[0] + itembonuses.SlayUndead[0] + spellbonuses.SlayUndead[0]; - if (SlayRateBonus) { - - critChance += (float(SlayRateBonus)/100.0f); - critChance /= 100.0f; - - if(MakeRandomFloat(0, 1) < critChance){ + float slayChance = static_cast(SlayRateBonus) / 10000.0f; + if (MakeRandomFloat(0, 1) < slayChance) { int16 SlayDmgBonus = aabonuses.SlayUndead[1] + itembonuses.SlayUndead[1] + spellbonuses.SlayUndead[1]; - damage = (damage*SlayDmgBonus*2.25)/100; - entity_list.MessageClose(this, false, 200, MT_CritMelee, "%s cleanses %s target!(%d)", GetCleanName(), this->GetGender() == 0 ? "his" : this->GetGender() == 1 ? "her" : "its", damage); + damage = (damage * SlayDmgBonus * 2.25) / 100; + if (GetGender() == 1) // female + entity_list.FilteredMessageClose_StringID(this, false, 200, + MT_CritMelee, FilterMeleeCrits, FEMALE_SLAYUNDEAD, + GetCleanName(), itoa(damage)); + else // males and neuter I guess + entity_list.FilteredMessageClose_StringID(this, false, 200, + MT_CritMelee, FilterMeleeCrits, MALE_SLAYUNDEAD, + GetCleanName(), itoa(damage)); return; } } diff --git a/zone/string_ids.h b/zone/string_ids.h index 56e1c4043..41e0960b0 100644 --- a/zone/string_ids.h +++ b/zone/string_ids.h @@ -163,6 +163,8 @@ #define CANNOT_WAKE 555 //%1 tells you, 'I am unable to wake %2, master.' #define GUILD_NAME_IN_USE 711 //You cannot create a guild with that name, that guild already exists on this server. #define GM_GAINXP 1002 //[GM] You have gained %1 AXP and %2 EXP (%3). +#define MALE_SLAYUNDEAD 1007 //%1's holy blade cleanses his target!(%2) +#define FEMALE_SLAYUNDEAD 1008 //%1's holy blade cleanses her target!(%2) #define FINISHING_BLOW 1009 //%1 scores a Finishing Blow!! #define ASSASSINATES 1016 //%1 ASSASSINATES their victim!! #define CRIPPLING_BLOW 1021 //%1 lands a Crippling Blow!(%2)