Implemented a Stop_Return feature (Accidental item handin prevention) that will be symmetrically used with plugin::return_items that I am currently running live testing on EZ before releasing to EQEmu. This does not hurt to have this in the source.

Fixed crash where 'attacker' validation is not being checked
Removed petition console spam that does not follow traditional logging and is useless
Made fix with SympatheticProcChances where it was checking for TempItem->Focus.Effect instead of TempItemAug->Focus.Effect
This commit is contained in:
akkadius 2014-08-19 10:55:29 -05:00
parent 43326c1804
commit a5020a68f0
9 changed files with 47 additions and 5 deletions

View File

@ -1,6 +1,10 @@
EQEMu Changelog (Started on Sept 24, 2003 15:50) EQEMu Changelog (Started on Sept 24, 2003 15:50)
------------------------------------------------------- -------------------------------------------------------
== 08/18/2014 == == 08/19/2014 ==
Akkadius: Implemented a Stop_Return feature (Accidental item handin prevention) that will be symmetrically used with plugin::return_items that I am currently running live testing on EZ before releasing to EQEmu. This does not hurt to have this in the source.
Akkadius: Fixed crash where 'attacker' validation is not being checked
Akkadius: Removed petition console spam that does not follow traditional logging and is useless
Akkadius: Made fix with SympatheticProcChances where it was checking for TempItem->Focus.Effect instead of TempItemAug->Focus.Effect== 08/18/2014 ==
Uleat: Fix for https://github.com/EQEmu/Server/issues/127 -- also activated a remarked action in doors.cpp to eliminate a memory leak. Uleat: Fix for https://github.com/EQEmu/Server/issues/127 -- also activated a remarked action in doors.cpp to eliminate a memory leak.
== 08/16/2014 == == 08/16/2014 ==

View File

@ -3569,12 +3569,12 @@ void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, cons
TryTriggerOnValueAmount(true); TryTriggerOnValueAmount(true);
//fade mez if we are mezzed //fade mez if we are mezzed
if (IsMezzed()) { if (IsMezzed() && attacker) {
mlog(COMBAT__HITS, "Breaking mez due to attack."); mlog(COMBAT__HITS, "Breaking mez due to attack.");
entity_list.MessageClose_StringID(this, true, 100, MT_WornOff, entity_list.MessageClose_StringID(this, true, 100, MT_WornOff,
HAS_BEEN_AWAKENED, GetCleanName(), attacker->GetCleanName()); HAS_BEEN_AWAKENED, GetCleanName(), attacker->GetCleanName());
BuffFadeByEffect(SE_Mez); BuffFadeByEffect(SE_Mez);
} }
//check stun chances if bashing //check stun chances if bashing
if (damage > 0 && ((skill_used == SkillBash || skill_used == SkillKick) && attacker)) { if (damage > 0 && ((skill_used == SkillBash || skill_used == SkillKick) && attacker)) {

View File

@ -2237,6 +2237,15 @@ void Client::AddMoneyToPP(uint64 copper, bool updateclient){
void Client::AddMoneyToPP(uint32 copper, uint32 silver, uint32 gold, uint32 platinum, bool updateclient){ void Client::AddMoneyToPP(uint32 copper, uint32 silver, uint32 gold, uint32 platinum, bool updateclient){
/* Set a timestamp in an entity variable for plugin check_handin.pl in return_items
This will stopgap players from items being returned if global_npc.pl has a catch all return_items
*/
struct timeval read_time;
char buffer[50];
gettimeofday(&read_time, 0);
sprintf(buffer, "%i.%i \n", read_time.tv_sec, read_time.tv_usec);
this->SetEntityVariable("Stop_Return", buffer);
int32 new_value = m_pp.platinum + platinum; int32 new_value = m_pp.platinum + platinum;
if(new_value >= 0 && new_value > m_pp.platinum) if(new_value >= 0 && new_value > m_pp.platinum)
m_pp.platinum += platinum; m_pp.platinum += platinum;

View File

@ -48,6 +48,15 @@ static uint32 MaxBankedRaidLeadershipPoints(int Level)
void Client::AddEXP(uint32 in_add_exp, uint8 conlevel, bool resexp) { void Client::AddEXP(uint32 in_add_exp, uint8 conlevel, bool resexp) {
/* Set a timestamp in an entity variable for plugin check_handin.pl in return_items
This will stopgap players from items being returned if global_npc.pl has a catch all return_items
*/
struct timeval read_time;
char buffer[50];
gettimeofday(&read_time, 0);
sprintf(buffer, "%i.%i \n", read_time.tv_sec, read_time.tv_usec);
this->SetEntityVariable("Stop_Return", buffer);
uint32 add_exp = in_add_exp; uint32 add_exp = in_add_exp;
if(!resexp && (XPRate != 0)) if(!resexp && (XPRate != 0))

View File

@ -200,6 +200,16 @@ bool Client::CheckLoreConflict(const Item_Struct* item) {
} }
bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5, bool attuned, uint16 to_slot) { bool Client::SummonItem(uint32 item_id, int16 charges, uint32 aug1, uint32 aug2, uint32 aug3, uint32 aug4, uint32 aug5, bool attuned, uint16 to_slot) {
/* Set a timestamp in an entity variable for plugin check_handin.pl in return_items
This will stopgap players from items being returned if global_npc.pl has a catch all return_items
*/
struct timeval read_time;
char buffer[50];
gettimeofday(&read_time, 0);
sprintf(buffer, "%i.%i \n", read_time.tv_sec, read_time.tv_usec);
this->SetEntityVariable("Recieved_Item", buffer);
// TODO: update calling methods and script apis to handle a failure return // TODO: update calling methods and script apis to handle a failure return
const Item_Struct* item = database.GetItem(item_id); const Item_Struct* item = database.GetItem(item_id);

View File

@ -298,7 +298,6 @@ void ZoneDatabase::RefreshPetitionsFromDB()
newpet->SetUnavails(atoi(row[11])); newpet->SetUnavails(atoi(row[11]));
newpet->SetSentTime2(atol(row[13])); newpet->SetSentTime2(atol(row[13]));
newpet->SetGMText(row[14]); newpet->SetGMText(row[14]);
std::cout << "Petition " << row[0] << " pettime = " << newpet->GetSentTime() << std::endl;
if (atoi(row[12]) == 1) newpet->SetCheckedOut(true); if (atoi(row[12]) == 1) newpet->SetCheckedOut(true);
else newpet->SetCheckedOut(false); else newpet->SetCheckedOut(false);
petition_list.AddPetition(newpet); petition_list.AddPetition(newpet);

View File

@ -5093,7 +5093,7 @@ int16 Client::GetSympatheticFocusEffect(focusType type, uint16 spell_id) {
if (IsValidSpell(proc_spellid)){ if (IsValidSpell(proc_spellid)){
ProcChance = GetSympatheticProcChances(spell_id, spells[TempItem->Focus.Effect].base[0], TempItemAug->ProcRate); ProcChance = GetSympatheticProcChances(spell_id, spells[TempItemAug->Focus.Effect].base[0], TempItemAug->ProcRate);
if(MakeRandomFloat(0, 1) <= ProcChance) if(MakeRandomFloat(0, 1) <= ProcChance)
SympatheticProcList.push_back(proc_spellid); SympatheticProcList.push_back(proc_spellid);

View File

@ -33,6 +33,7 @@ Copyright (C) 2001-2008 EQEMu Development Team (http://eqemulator.net)
#include "masterentity.h" #include "masterentity.h"
#include "../common/features.h" #include "../common/features.h"
#include "QuestParserCollection.h" #include "QuestParserCollection.h"
#include "mob.h"
TaskManager::TaskManager() { TaskManager::TaskManager() {

View File

@ -623,6 +623,16 @@ void Client::FinishTrade(Mob* tradingWith, ServerPacket* qspack, bool finalizer)
if(UpdateTasksOnDeliver(items, Cash, tradingWith->GetNPCTypeID())) { if(UpdateTasksOnDeliver(items, Cash, tradingWith->GetNPCTypeID())) {
if(!tradingWith->IsMoving()) if(!tradingWith->IsMoving())
tradingWith->FaceTarget(this); tradingWith->FaceTarget(this);
/* Set a timestamp in an entity variable for plugin check_handin.pl in return_items
This will stopgap players from items being returned if global_npc.pl has a catch all return_items
*/
struct timeval read_time;
char buffer[50];
gettimeofday(&read_time, 0);
sprintf(buffer, "%i.%i \n", read_time.tv_sec, read_time.tv_usec);
this->SetEntityVariable("Stop_Return", buffer);
} }
} }