mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-30 01:02:26 +00:00
Make use of the targetable_with_hotkey flag for SoF+
This commit is contained in:
parent
2d1999c961
commit
820f99067d
@ -2,6 +2,7 @@ EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
|||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
== 12/09/2014 ==
|
== 12/09/2014 ==
|
||||||
Trevius: (RoF+) Implemented Hero's Forge Armor Models for Items. To use, set herosforgemodel field in the item table to a model number such as 63 (for example).
|
Trevius: (RoF+) Implemented Hero's Forge Armor Models for Items. To use, set herosforgemodel field in the item table to a model number such as 63 (for example).
|
||||||
|
demonstar55: SoF+ swarm pets will no longer be F8able (without a hack!)
|
||||||
|
|
||||||
== 12/08/2014 ==
|
== 12/08/2014 ==
|
||||||
Secrets: Added a feature that allows an EQ client to log in directly to World without having to enter the LoginServer, provided the 'password' field is set in WorldServer.
|
Secrets: Added a feature that allows an EQ client to log in directly to World without having to enter the LoginServer, provided the 'password' field is set in WorldServer.
|
||||||
|
|||||||
@ -363,6 +363,7 @@ union
|
|||||||
uint32 DestructibleUnk7;
|
uint32 DestructibleUnk7;
|
||||||
uint8 DestructibleUnk8;
|
uint8 DestructibleUnk8;
|
||||||
uint32 DestructibleUnk9;
|
uint32 DestructibleUnk9;
|
||||||
|
bool targetable_with_hotkey;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -3706,7 +3706,7 @@ namespace RoF
|
|||||||
Bitfields->showhelm = emu->showhelm;
|
Bitfields->showhelm = emu->showhelm;
|
||||||
Bitfields->trader = 0;
|
Bitfields->trader = 0;
|
||||||
Bitfields->targetable = 1;
|
Bitfields->targetable = 1;
|
||||||
Bitfields->targetable_with_hotkey = (emu->IsMercenary ? 0 : 1);
|
Bitfields->targetable_with_hotkey = emu->targetable_with_hotkey ? 1 : 0;
|
||||||
Bitfields->showname = ShowName;
|
Bitfields->showname = ShowName;
|
||||||
|
|
||||||
// Not currently found
|
// Not currently found
|
||||||
|
|||||||
@ -3706,7 +3706,7 @@ namespace RoF2
|
|||||||
Bitfields->showhelm = emu->showhelm;
|
Bitfields->showhelm = emu->showhelm;
|
||||||
Bitfields->trader = 0;
|
Bitfields->trader = 0;
|
||||||
Bitfields->targetable = 1;
|
Bitfields->targetable = 1;
|
||||||
Bitfields->targetable_with_hotkey = (emu->IsMercenary ? 0 : 1);
|
Bitfields->targetable_with_hotkey = emu->targetable_with_hotkey ? 1 : 0;
|
||||||
Bitfields->showname = ShowName;
|
Bitfields->showname = ShowName;
|
||||||
|
|
||||||
// Not currently found
|
// Not currently found
|
||||||
|
|||||||
@ -2383,7 +2383,7 @@ namespace SoD
|
|||||||
Bitfields->anon = emu->anon;
|
Bitfields->anon = emu->anon;
|
||||||
Bitfields->showhelm = emu->showhelm;
|
Bitfields->showhelm = emu->showhelm;
|
||||||
Bitfields->targetable = 1;
|
Bitfields->targetable = 1;
|
||||||
Bitfields->targetable_with_hotkey = (emu->IsMercenary ? 0 : 1);
|
Bitfields->targetable_with_hotkey = emu->targetable_with_hotkey ? 1 : 0;
|
||||||
Bitfields->statue = 0;
|
Bitfields->statue = 0;
|
||||||
Bitfields->trader = 0;
|
Bitfields->trader = 0;
|
||||||
Bitfields->buyer = 0;
|
Bitfields->buyer = 0;
|
||||||
|
|||||||
@ -1889,7 +1889,7 @@ namespace SoF
|
|||||||
eq->beard = emu->beard;
|
eq->beard = emu->beard;
|
||||||
eq->targetable = 1; //New Field - Toggle Targetable on or off - 0 = off, 1 = on
|
eq->targetable = 1; //New Field - Toggle Targetable on or off - 0 = off, 1 = on
|
||||||
eq->NPC = emu->NPC;
|
eq->NPC = emu->NPC;
|
||||||
eq->targetable_with_hotkey = 1;//New Field - Toggle Targetable on or off - 0 = off, 1 = on
|
eq->targetable_with_hotkey = emu->targetable_with_hotkey ? 1 : 0; //New Field - Toggle Targetable on or off - 0 = off, 1 = on
|
||||||
eq->x = emu->x;
|
eq->x = emu->x;
|
||||||
eq->deltaX = emu->deltaX;
|
eq->deltaX = emu->deltaX;
|
||||||
eq->deltaY = emu->deltaY;
|
eq->deltaY = emu->deltaY;
|
||||||
|
|||||||
@ -2668,7 +2668,7 @@ namespace Underfoot
|
|||||||
Bitfields->anon = emu->anon;
|
Bitfields->anon = emu->anon;
|
||||||
Bitfields->showhelm = emu->showhelm;
|
Bitfields->showhelm = emu->showhelm;
|
||||||
Bitfields->targetable = 1;
|
Bitfields->targetable = 1;
|
||||||
Bitfields->targetable_with_hotkey = (emu->IsMercenary ? 0 : 1);
|
Bitfields->targetable_with_hotkey = emu->targetable_with_hotkey ? 1 : 0;
|
||||||
Bitfields->statue = 0;
|
Bitfields->statue = 0;
|
||||||
Bitfields->trader = 0;
|
Bitfields->trader = 0;
|
||||||
Bitfields->buyer = 0;
|
Bitfields->buyer = 0;
|
||||||
|
|||||||
@ -600,6 +600,9 @@ void Mob::TemporaryPets(uint16 spell_id, Mob *targ, const char *name_override, u
|
|||||||
if(npc_dup != nullptr)
|
if(npc_dup != nullptr)
|
||||||
npca->GiveNPCTypeData(npc_dup);
|
npca->GiveNPCTypeData(npc_dup);
|
||||||
|
|
||||||
|
if (IsClient())
|
||||||
|
npca->no_target_hotkey = 1;
|
||||||
|
|
||||||
entity_list.AddNPC(npca, true, true);
|
entity_list.AddNPC(npca, true, true);
|
||||||
summon_count--;
|
summon_count--;
|
||||||
}
|
}
|
||||||
@ -696,6 +699,9 @@ void Mob::TypesTemporaryPets(uint32 typesid, Mob *targ, const char *name_overrid
|
|||||||
if(npc_dup != nullptr)
|
if(npc_dup != nullptr)
|
||||||
npca->GiveNPCTypeData(npc_dup);
|
npca->GiveNPCTypeData(npc_dup);
|
||||||
|
|
||||||
|
if (IsClient())
|
||||||
|
npca->no_target_hotkey = 1;
|
||||||
|
|
||||||
entity_list.AddNPC(npca, true, true);
|
entity_list.AddNPC(npca, true, true);
|
||||||
summon_count--;
|
summon_count--;
|
||||||
}
|
}
|
||||||
@ -883,6 +889,9 @@ void Mob::WakeTheDead(uint16 spell_id, Mob *target, uint32 duration)
|
|||||||
if(make_npc != nullptr)
|
if(make_npc != nullptr)
|
||||||
npca->GiveNPCTypeData(make_npc);
|
npca->GiveNPCTypeData(make_npc);
|
||||||
|
|
||||||
|
if (IsClient())
|
||||||
|
npca->no_target_hotkey = 1;
|
||||||
|
|
||||||
entity_list.AddNPC(npca, true, true);
|
entity_list.AddNPC(npca, true, true);
|
||||||
|
|
||||||
//the target of these swarm pets will take offense to being cast on...
|
//the target of these swarm pets will take offense to being cast on...
|
||||||
|
|||||||
@ -4772,6 +4772,7 @@ Merc* Merc::LoadMerc(Client *c, MercTemplate* merc_template, uint32 merchant_id,
|
|||||||
npc_type->npc_id = 0; //NPC ID has to be 0, otherwise db gets all confuzzled.
|
npc_type->npc_id = 0; //NPC ID has to be 0, otherwise db gets all confuzzled.
|
||||||
npc_type->class_ = merc_template->ClassID;
|
npc_type->class_ = merc_template->ClassID;
|
||||||
npc_type->maxlevel = 0; //We should hard-set this to override scalerate's functionality in the NPC class when it is constructed.
|
npc_type->maxlevel = 0; //We should hard-set this to override scalerate's functionality in the NPC class when it is constructed.
|
||||||
|
npc_type->no_target_hotkey = 1;
|
||||||
|
|
||||||
Merc* merc = new Merc(npc_type, c->GetX(), c->GetY(), c->GetZ(), 0);
|
Merc* merc = new Merc(npc_type, c->GetX(), c->GetY(), c->GetZ(), 0);
|
||||||
|
|
||||||
|
|||||||
@ -923,7 +923,8 @@ void Mob::FillSpawnStruct(NewSpawn_Struct* ns, Mob* ForWho)
|
|||||||
|
|
||||||
ns->spawn.invis = (invisible || hidden) ? 1 : 0; // TODO: load this before spawning players
|
ns->spawn.invis = (invisible || hidden) ? 1 : 0; // TODO: load this before spawning players
|
||||||
ns->spawn.NPC = IsClient() ? 0 : 1;
|
ns->spawn.NPC = IsClient() ? 0 : 1;
|
||||||
ns->spawn.IsMercenary = (IsMerc() || no_target_hotkey) ? 1 : 0;
|
ns->spawn.IsMercenary = IsMerc() ? 1 : 0;
|
||||||
|
ns->spawn.targetable_with_hotkey = no_target_hotkey ? 0 : 1; // opposite logic!
|
||||||
|
|
||||||
ns->spawn.petOwnerId = ownerid;
|
ns->spawn.petOwnerId = ownerid;
|
||||||
|
|
||||||
|
|||||||
@ -269,7 +269,7 @@ public:
|
|||||||
void AddLootDrop(const Item_Struct*dbitem, ItemList* itemlistconst, int16 charges, uint8 minlevel, uint8 maxlevel, bool equipit, bool wearchange = false);
|
void AddLootDrop(const Item_Struct*dbitem, ItemList* itemlistconst, int16 charges, uint8 minlevel, uint8 maxlevel, bool equipit, bool wearchange = false);
|
||||||
virtual void DoClassAttacks(Mob *target);
|
virtual void DoClassAttacks(Mob *target);
|
||||||
void CheckSignal();
|
void CheckSignal();
|
||||||
inline bool IsTargetableWithHotkey() const { return no_target_hotkey; }
|
inline bool IsNotTargetableWithHotkey() const { return no_target_hotkey; }
|
||||||
int32 GetNPCHPRegen() const { return hp_regen + itembonuses.HPRegen + spellbonuses.HPRegen; }
|
int32 GetNPCHPRegen() const { return hp_regen + itembonuses.HPRegen + spellbonuses.HPRegen; }
|
||||||
inline const char* GetAmmoIDfile() const { return ammo_idfile; }
|
inline const char* GetAmmoIDfile() const { return ammo_idfile; }
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user