mirror of
https://github.com/EQEmu/Server.git
synced 2026-04-15 04:32:28 +00:00
Fix for spell target det crash. Also added a command line arg to world ignore_db that lets you ignore the db conversion process for servers that dont need it.
This commit is contained in:
parent
fc5266e115
commit
0c7a861caf
@ -187,6 +187,7 @@ int main(int argc, char** argv) {
|
|||||||
database.LoadLogSettings(Log.log_settings);
|
database.LoadLogSettings(Log.log_settings);
|
||||||
Log.StartFileLogs();
|
Log.StartFileLogs();
|
||||||
|
|
||||||
|
bool ignore_db = false;
|
||||||
if (argc >= 2) {
|
if (argc >= 2) {
|
||||||
char tmp[2];
|
char tmp[2];
|
||||||
if (strcasecmp(argv[1], "help") == 0 || strcasecmp(argv[1], "?") == 0 || strcasecmp(argv[1], "/?") == 0 || strcasecmp(argv[1], "-?") == 0 || strcasecmp(argv[1], "-h") == 0 || strcasecmp(argv[1], "-help") == 0) {
|
if (strcasecmp(argv[1], "help") == 0 || strcasecmp(argv[1], "?") == 0 || strcasecmp(argv[1], "/?") == 0 || strcasecmp(argv[1], "-?") == 0 || strcasecmp(argv[1], "-h") == 0 || strcasecmp(argv[1], "-help") == 0) {
|
||||||
@ -271,6 +272,9 @@ int main(int argc, char** argv) {
|
|||||||
std::cout << "Usage: world startzone zoneshortname" << std::endl;
|
std::cout << "Usage: world startzone zoneshortname" << std::endl;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
else if(strcasecmp(argv[1], "ignore_db") == 0) {
|
||||||
|
ignore_db = true;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
std::cerr << "Error, unknown command line option" << std::endl;
|
std::cerr << "Error, unknown command line option" << std::endl;
|
||||||
return 1;
|
return 1;
|
||||||
@ -284,8 +288,10 @@ int main(int argc, char** argv) {
|
|||||||
Log.Out(Logs::General, Logs::World_Server, "HTTP world service disabled.");
|
Log.Out(Logs::General, Logs::World_Server, "HTTP world service disabled.");
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.Out(Logs::General, Logs::World_Server, "Checking Database Conversions..");
|
if(!ignore_db) {
|
||||||
database.CheckDatabaseConversions();
|
Log.Out(Logs::General, Logs::World_Server, "Checking Database Conversions..");
|
||||||
|
database.CheckDatabaseConversions();
|
||||||
|
}
|
||||||
Log.Out(Logs::General, Logs::World_Server, "Loading variables..");
|
Log.Out(Logs::General, Logs::World_Server, "Loading variables..");
|
||||||
database.LoadVariables();
|
database.LoadVariables();
|
||||||
Log.Out(Logs::General, Logs::World_Server, "Loading zones..");
|
Log.Out(Logs::General, Logs::World_Server, "Loading zones..");
|
||||||
|
|||||||
@ -1467,14 +1467,14 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce
|
|||||||
// target required for these
|
// target required for these
|
||||||
case ST_Undead: {
|
case ST_Undead: {
|
||||||
if(!spell_target || (
|
if(!spell_target || (
|
||||||
spell_target->GetBodyType() != BT_SummonedUndead
|
mob_body != BT_SummonedUndead
|
||||||
&& spell_target->GetBodyType() != BT_Undead
|
&& mob_body != BT_Undead
|
||||||
&& spell_target->GetBodyType() != BT_Vampire
|
&& mob_body != BT_Vampire
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
//invalid target
|
//invalid target
|
||||||
Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target of body type %d (undead)", spell_id, spell_target->GetBodyType());
|
Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target of body type %d (undead)", spell_id, mob_body);
|
||||||
Message_StringID(13,SPELL_NEED_TAR);
|
Message_StringID(13,SPELL_NEED_TAR);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1483,11 +1483,10 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce
|
|||||||
}
|
}
|
||||||
|
|
||||||
case ST_Summoned: {
|
case ST_Summoned: {
|
||||||
uint8 body_type = spell_target?spell_target->GetBodyType():0;
|
if(!spell_target || (mob_body != BT_Summoned && mob_body != BT_Summoned2 && mob_body != BT_Summoned3))
|
||||||
if(!spell_target || (body_type != BT_Summoned && body_type != BT_Summoned2 && body_type != BT_Summoned3))
|
|
||||||
{
|
{
|
||||||
//invalid target
|
//invalid target
|
||||||
Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target of body type %d (summoned)", spell_id, body_type);
|
Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target of body type %d (summoned)", spell_id, mob_body);
|
||||||
Message_StringID(13,SPELL_NEED_TAR);
|
Message_StringID(13,SPELL_NEED_TAR);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1497,12 +1496,11 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce
|
|||||||
|
|
||||||
case ST_SummonedPet:
|
case ST_SummonedPet:
|
||||||
{
|
{
|
||||||
uint8 body_type = spell_target ? spell_target->GetBodyType() : 0;
|
|
||||||
if(!spell_target || (spell_target != GetPet()) ||
|
if(!spell_target || (spell_target != GetPet()) ||
|
||||||
(body_type != BT_Summoned && body_type != BT_Summoned2 && body_type != BT_Summoned3 && body_type != BT_Animal))
|
(mob_body != BT_Summoned && mob_body != BT_Summoned2 && mob_body != BT_Summoned3 && mob_body != BT_Animal))
|
||||||
{
|
{
|
||||||
Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target of body type %d (summoned pet)",
|
Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target of body type %d (summoned pet)",
|
||||||
spell_id, body_type);
|
spell_id, mob_body);
|
||||||
|
|
||||||
Message_StringID(13, SPELL_NEED_TAR);
|
Message_StringID(13, SPELL_NEED_TAR);
|
||||||
|
|
||||||
@ -1526,7 +1524,7 @@ bool Mob::DetermineSpellTargets(uint16 spell_id, Mob *&spell_target, Mob *&ae_ce
|
|||||||
if(!spell_target || mob_body != target_bt)
|
if(!spell_target || mob_body != target_bt)
|
||||||
{
|
{
|
||||||
//invalid target
|
//invalid target
|
||||||
Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target of body type %d (want body Type %d)", spell_id, spell_target->GetBodyType(), target_bt);
|
Log.Out(Logs::Detail, Logs::Spells, "Spell %d canceled: invalid target of body type %d (want body Type %d)", spell_id, mob_body, target_bt);
|
||||||
if(!spell_target)
|
if(!spell_target)
|
||||||
Message_StringID(13,SPELL_NEED_TAR);
|
Message_StringID(13,SPELL_NEED_TAR);
|
||||||
else
|
else
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user