Removed my bookmark comments and cleaned up itemtick for cases where there are no tick items.

This commit is contained in:
Tabasco 2013-05-05 17:53:34 -05:00
parent 824b101831
commit f983d19e01
27 changed files with 11 additions and 72 deletions

View File

@ -1102,7 +1102,6 @@ bool IsShortDurationBuff(uint16 spell_id)
return false;
}
//DCBOOKMARK
const char* GetSpellName(int16 spell_id)
{
return( spells[spell_id].name );

View File

@ -459,7 +459,6 @@ void EQW::ResolveBug(const char *id) {
safe_delete_array(query);
}
//DCBOOKMARK
void EQW::SendMessage(uint32 type, const char *msg) {
zoneserver_list.SendEmoteMessage(0, 0, 0, type, msg);
}

View File

@ -716,7 +716,6 @@ void ZSList::GetZoneIDList(vector<uint32> &zones) {
}
//DCBOOKMARK
void ZSList::WorldShutDown(uint32 time, uint32 interval)
{
if( time > 0 ) {

View File

@ -318,7 +318,6 @@ bool Mob::CheckHitChance(Mob* other, SkillType skillinuse, int Hand, int16 chanc
if(skillinuse == ARCHERY)
chancetohit -= (chancetohit * RuleR(Combat, ArcheryHitPenalty)) / 100.0f;
//DCBOOKMARK
chancetohit = mod_hit_chance(chancetohit, skillinuse, attacker);
// Chance to hit; Max 95%, Min 30%
@ -399,7 +398,6 @@ bool Mob::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte)
if (!ghit) { //if they are not using a garunteed hit discipline
bonus = 2.0 + skill/60.0 + (GetDEX()/200);
bonus *= riposte_chance;
//DCBOOKMARK
bonus = mod_riposte_chance(bonus, attacker);
RollTable[0] = bonus + (itembonuses.HeroicDEX / 25); // 25 heroic = 1%, applies to ripo, parry, block
}
@ -439,7 +437,6 @@ bool Mob::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte)
if (!ghit) { //if they are not using a garunteed hit discipline
bonus = 2.0 + skill/35.0 + (GetDEX()/200);
//DCBOOKMARK
bonus = mod_block_chance(bonus, attacker);
RollTable[1] = RollTable[0] + (bonus * block_chance);
}
@ -492,7 +489,6 @@ bool Mob::AvoidDamage(Mob* other, int32 &damage, bool CanRiposte)
if (!ghit) { //if they are not using a garunteed hit discipline
bonus = 2.0 + skill/60.0 + (GetDEX()/200);
bonus *= parry_chance;
//DCBOOKMARK
bonus = mod_parry_chance(bonus, attacker);
RollTable[2] = RollTable[1] + bonus;
}
@ -567,7 +563,6 @@ void Mob::MeleeMitigation(Mob *attacker, int32 &damage, int32 minhit)
int armor = 0;
float weight = 0.0;
//DCBOOKMARK
float monkweight = RuleI(Combat, MonkACBonusWeight);
monkweight = mod_monk_weight(monkweight, attacker);
@ -653,7 +648,6 @@ void Mob::MeleeMitigation(Mob *attacker, int32 &damage, int32 minhit)
}
mitigation_rating *= 0.847;
//DCBOOKMARK
mitigation_rating = mod_mitigation_rating(mitigation_rating, attacker);
if(attacker->IsClient())
@ -665,7 +659,6 @@ void Mob::MeleeMitigation(Mob *attacker, int32 &damage, int32 minhit)
attack_rating = (attacker->GetATK() + (attacker->GetSkill(OFFENSE)*1.345) + ((attacker->GetSTR()-66) * 0.9));
}
//DCBOOKMARK
attack_rating = attacker->mod_attack_rating(attack_rating, this);
float d = 10.0;
@ -1246,7 +1239,6 @@ bool Client::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, b
else
damage = MakeRandomInt(min_hit, max_hit);
//DCBOOKMARK
damage = mod_client_damage(damage, skillinuse, Hand, weapon, other);
mlog(COMBAT__DAMAGE, "Damage calculated to %d (min %d, max %d, str %d, skill %d, DMG %d, lv %d)",
@ -1487,7 +1479,6 @@ void Client::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_
if (killerMob->IsNPC()) {
parse->EventNPC(EVENT_SLAY, killerMob->CastToNPC(), this, "", 0);
//DCBOOKMARK
mod_client_death_npc(killerMob);
uint16 emoteid = killerMob->GetEmoteID();
@ -1506,7 +1497,6 @@ void Client::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_
killerMob->CastToClient()->SetDuelTarget(0);
entity_list.DuelMessage(killerMob,this,false);
//DCBOOKMARK
mod_client_death_duel(killerMob);
} else {
@ -1880,7 +1870,6 @@ bool NPC::Attack(Mob* other, int Hand, bool bRiposte, bool IsStrikethrough, bool
damage = (max_dmg+eleBane);
}
//DCBOOKMARK
damage = mod_npc_damage(damage, skillinuse, Hand, &weapon_inst, other);
int32 hate = damage;
@ -2137,7 +2126,6 @@ void NPC::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_ski
if (kr->members[i].member != NULL) { // If Group Member is Client
parse->EventNPC(EVENT_KILLED_MERIT, this, kr->members[i].member, "killed", 0);
//DCBOOKMARK
mod_npc_killed_merit(kr->members[i].member);
if(RuleB(TaskSystem, EnableTaskSystem))
@ -2181,7 +2169,6 @@ void NPC::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_ski
Client *c = kg->members[i]->CastToClient();
parse->EventNPC(EVENT_KILLED_MERIT, this, c, "killed", 0);
//DCBOOKMARK
mod_npc_killed_merit(c);
if(RuleB(TaskSystem, EnableTaskSystem))
@ -2229,7 +2216,6 @@ void NPC::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_ski
/* Send the EVENT_KILLED_MERIT event */
parse->EventNPC(EVENT_KILLED_MERIT, this, give_exp_client, "killed", 0);
//DCBOOKMARK
mod_npc_killed_merit(give_exp_client);
if(RuleB(TaskSystem, EnableTaskSystem))
@ -2363,7 +2349,6 @@ void NPC::Death(Mob* killerMob, int32 damage, uint16 spell, SkillType attack_ski
Mob *oos = killerMob->GetOwnerOrSelf();
parse->EventNPC(EVENT_DEATH, this, oos, "", 0);
//DCBOOKMARK
mod_npc_killed(oos);
uint16 emoteid = this->GetEmoteID();
@ -3457,7 +3442,7 @@ void Mob::CommonDamage(Mob* attacker, int32 &damage, const uint16 spell_id, cons
if (damage > 0 && ((skill_used == BASH || skill_used == KICK) && attacker))
{
// NPCs can stun with their bash/kick as soon as they recieve it.
// Clients can stun mobs under level 56 with their bash/kick when they get level 55 or greater. -- DCBOOKMARK for rules
// Clients can stun mobs under level 56 with their bash/kick when they get level 55 or greater.
if( attacker->IsNPC() || (attacker->IsClient() && attacker->GetLevel() >= RuleI(Combat, ClientStunLevel) && GetLevel() < RuleI(Spells, BaseImmunityLevel)) )
{
if (MakeRandomInt(0,99) < (RuleI(Character, NPCBashKickStunChance)) || attacker->IsClient())

View File

@ -326,7 +326,6 @@ Client::Client(EQStreamInterface* ieqs)
}
MaxXTargets = 5;
XTargetAutoAddHaters = true;
//DCBOOKMARK
LoadAccountFlags();
}
@ -845,7 +844,7 @@ void Client::ChannelMessageReceived(uint8 chan_num, uint8 language, uint8 lang_s
safe_delete(pack);
}
//DCBOOKMARK - Return true to proceed, false to return
//Return true to proceed, false to return
if(!mod_client_message(message, chan_num)) { return; }
// Garble the message based on drunkness
@ -2343,7 +2342,7 @@ bool Client::CheckIncreaseSkill(SkillType skillid, Mob *against_who, int chancem
if( against_who->SpecAttacks[IMMUNE_AGGRO] || against_who->IsClient() ||
GetLevelCon(against_who->GetLevel()) == CON_GREEN )
{
//DCBOOKMARK - false by default
//false by default
return mod_can_increase_skill(skillid, against_who);
}
}
@ -2357,7 +2356,6 @@ bool Client::CheckIncreaseSkill(SkillType skillid, Mob *against_who, int chancem
Chance = 1; // Make it always possible
Chance = (Chance * RuleI(Character, SkillUpModifier) / 100);
//DCBOOKMARK
Chance = mod_increase_skill_chance(Chance, against_who);
if(MakeRandomFloat(0, 99) < Chance)
@ -2728,7 +2726,6 @@ bool Client::BindWound(Mob* bindmob, bool start, bool fail){
max_percent = 70 + 10 * maxHPBonus;
}
//DCBOOKMARK
max_percent = mod_bindwound_percent(max_percent, bindmob);
int max_hp = bindmob->GetMaxHP()*max_percent/100;
@ -2750,7 +2747,6 @@ bool Client::BindWound(Mob* bindmob, bool start, bool fail){
bindhps += bindhps*bindBonus / 100;
//DCBOOKMARK
bindhps = mod_bindwound_hp(bindhps, bindmob);
//if the bind takes them above the max bindable
@ -7624,7 +7620,6 @@ some day.
return 0;
}
//DCBOOKMARK
void Client::LoadAccountFlags()
{
char errbuf[MYSQL_ERRMSG_SIZE];
@ -7675,6 +7670,8 @@ void Client::TickItemCheck()
{
int i;
if(zone->tick_items.empty()) { return; }
//Scan equip slots for items
for(i = 0; i <= 21; i++)
{

View File

@ -1133,7 +1133,6 @@ public:
void DuplicateLoreMessage(uint32 ItemID);
void GarbleMessage(char *, uint8);
//DCBOOKMARK
void TickItemCheck();
void TryItemTick(int slot);
int16 GetActSTR() { return( min(GetMaxSTR(), GetSTR()) ); }
@ -1466,7 +1465,6 @@ private:
struct XTarget_Struct XTargets[XTARGET_HARDCAP];
//DCBOOKMARK
Timer ItemTickTimer;
std::map<std::string,std::string> accountflags;
};

View File

@ -1415,7 +1415,6 @@ int Client::CalcHaste() {
h += spellbonuses.hastetype3;
h += ExtraHaste; //GM granted haste.
//DCBOOKMARK
h = mod_client_haste(h);
if (spellbonuses.inhibitmelee){

View File

@ -2076,7 +2076,6 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app)
}
}
//DCBOOKMARK
int r;
bool tryaug = false;
ItemInst* clickaug = 0;
@ -2147,7 +2146,7 @@ void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app)
return;
}
}
else if (tryaug) //DCBOOKMARK
else if (tryaug)
{
if (clickaug->GetCharges() == 0)
{
@ -2662,7 +2661,6 @@ void Client::Handle_OP_Consider(const EQApplicationPacket *app)
con->faction = FACTION_DUBIOUS;
}
//DCBOOKMARK
mod_consider(tmob, con);
QueuePacket(outapp);
@ -3260,7 +3258,6 @@ void Client::Handle_OP_ItemLinkClick(const EQApplicationPacket *app)
if((response).size() > 0)
{
//DCBOOKMARK
if( !mod_saylink(response, silentsaylink) ) { return; }
if(this->GetTarget() && this->GetTarget()->IsNPC())
@ -7778,7 +7775,6 @@ void Client::Handle_OP_EnvDamage(const EQApplicationPacket *app)
if(GetHP() <= 0)
{
//DCBOOKMARK
mod_client_death_env();
Death(0, 32000, SPELL_UNKNOWN, HAND_TO_HAND);

View File

@ -646,7 +646,6 @@ bool Client::Process() {
CalcBonuses();
}
//DCBOOKMARK
if(ItemTickTimer.Check())
{
TickItemCheck();

View File

@ -1888,7 +1888,6 @@ void EntityList::QueueClientsStatus(Mob* sender, const EQApplicationPacket* app,
void EntityList::DuelMessage(Mob* winner, Mob* loser, bool flee) {
LinkedListIterator<Client*> iterator(client_list);
//DCBOOKMARK
if(winner->GetLevelCon(winner->GetLevel(), loser->GetLevel()) > 2)
{
parse->EventPlayer(EVENT_DUEL_WIN, winner->CastToClient(), loser->GetName(), loser->CastToClient()->CharacterID());

View File

@ -290,7 +290,6 @@ void Client::SetEXP(uint32 set_exp, uint32 set_aaxp, bool isrezzexp) {
if(check_level > maxlevel) {
check_level = maxlevel;
//DCBOOKMARK
if(RuleB(Character, KeepLevelOverMax))
{
set_exp = GetEXPForLevel(GetLevel()+1);

View File

@ -376,7 +376,6 @@ void NPC::AddLootTable() {
}
}
//DCBOOKMARK
void NPC::AddLootTable(uint32 ldid) {
if (npctype_id != 0) { // check if it's a GM spawn
database.AddLootTableToNPC(this,ldid, &itemlist, &copper, &silver, &gold, &platinum);

View File

@ -4675,7 +4675,6 @@ FACTION_VALUE Mob::GetSpecialFactionCon(Mob* iOther) {
}
}
//DCBOOKMARK
bool Mob::HasSpellEffect(int effectid)
{
int i;

View File

@ -789,7 +789,6 @@ public:
inline void SetEmoteID(uint16 emote) { emoteid = emote; }
inline uint16 GetEmoteID() { return emoteid; }
//DCBOOKMARK
bool HasSpellEffect(int effectid);
int mod_effect_value(int effect_value, uint16 spell_id, int effect_type, Mob* caster);
float mod_hit_chance(float chancetohit, SkillType skillinuse, Mob* attacker);

View File

@ -1895,7 +1895,7 @@ void NPC::ModifyNPCStat(const char *identifier, const char *newValue)
if(id == "special_attacks")
{
//DCBOOKMARK - Added reset flag.
//Added reset flag.
NPCSpecialAttacks(val.c_str(), 0, 1);
return;
}
@ -2416,7 +2416,6 @@ bool NPC::IsFactionListAlly(uint32 other_faction) {
return(CheckNPCFactionAlly(other_faction) == FACTION_ALLY);
}
//DCBOOKMARK
int NPC::GetScore()
{
int lv = min(70, (int)GetLevel());

View File

@ -454,7 +454,6 @@ public:
void PrintOutQuestItems(Client* c);
//DCBOOKMARK
uint32 GetSpawnKillCount();
int GetScore();
void mod_prespawn(Spawn2 *sp);

View File

@ -234,7 +234,6 @@ void Mob::MakePoweredPet(uint16 spell_id, const char* pettype, int16 petpower, c
if (petpower == -1) {
if (this->IsClient()) {
act_power = CastToClient()->GetFocusEffect(focusPetPower, spell_id);
//DCBOOKMARK
act_power = CastToClient()->mod_pet_power(act_power, spell_id);
}
}

View File

@ -834,7 +834,7 @@ uint16 QuestManager::scribespells(uint8 max_level, uint8 min_level) {
spells[curspell].classes[initiator->GetPP().class_-1] <= max_level && //maximum level
spells[curspell].classes[initiator->GetPP().class_-1] >= min_level && //minimum level
spells[curspell].skill != 52 &&
( RuleB(Spells, UseCHAScribeHack) && spells[curspell].effectid[EFFECT_COUNT - 1] != 10 ) //DCBOOKMARK
( RuleB(Spells, UseCHAScribeHack) && spells[curspell].effectid[EFFECT_COUNT - 1] != 10 )
)
{
if (book_slot == -1) //no more book slots
@ -874,7 +874,7 @@ uint16 QuestManager::traindiscs(uint8 max_level, uint8 min_level) {
spells[curspell].classes[initiator->GetPP().class_-1] <= max_level && //maximum level
spells[curspell].classes[initiator->GetPP().class_-1] >= min_level && //minimum level
spells[curspell].skill != 52 &&
( RuleB(Spells, UseCHAScribeHack) && spells[curspell].effectid[EFFECT_COUNT - 1] != 10 ) //DCBOOKMARK
( RuleB(Spells, UseCHAScribeHack) && spells[curspell].effectid[EFFECT_COUNT - 1] != 10 )
)
{
if(IsDiscipline(curspell)){

View File

@ -220,7 +220,6 @@ bool Spawn2::Process() {
currentnpcid = npcid;
NPC* npc = new NPC(tmp, this, x, y, z, heading, FlyMode3);
//DCBOOKMARK
npc->mod_prespawn(this);
npcthis = npc;
@ -342,7 +341,6 @@ void Spawn2::DeathReset(bool realdeath)
//zero out our NPC since he is now gone
npcthis = NULL;
//DCBOOKMARK
if(realdeath) { killcount++; }
//if we have a valid spawn id

View File

@ -71,7 +71,6 @@ public:
bool NPCPointerValid() { return (npcthis!=NULL); }
void SetNPCPointer(NPC* n) { npcthis = n; }
void SetTimer(uint32 duration) { timer.Start(duration); }
//DCBOOKMARK
uint32 GetKillCount() { return killcount; }
protected:
friend class Zone;
@ -94,7 +93,6 @@ private:
bool enabled;
EmuAppearance anim;
bool IsDespawned;
//DCBOOKMARK
uint32 killcount;
};

View File

@ -48,7 +48,6 @@ int Mob::GetKickDamage() {
int32 mindmg = 1;
ApplySpecialAttackMod(KICK, dmg,mindmg);
//DCBOOKMARK
dmg = mod_kick_damage(dmg);
return(dmg);
@ -70,7 +69,6 @@ int Mob::GetBashDamage() {
int32 mindmg = 1;
ApplySpecialAttackMod(BASH, dmg, mindmg);
//DCBOOKMARK
dmg = mod_bash_damage(dmg);
return(dmg);
@ -287,7 +285,6 @@ void Client::OPCombatAbility(const EQApplicationPacket *app) {
int32 min_dmg = 0;
DoAnim(anim2HSlashing);
//DCBOOKMARK
max_dmg = mod_frenzy_damage(max_dmg);
if (GetLevel() < 51)
@ -500,7 +497,7 @@ int Mob::MonkSpecialAttack(Mob* other, uint8 unchecked_type)
}
}
//DCBOOKMARK -- This can potentially stack with changes to kick damage
//This can potentially stack with changes to kick damage
ht = ndamage = mod_monk_special_damage(ndamage, skill_type);
DoSpecialAttackDamage(other, skill_type, ndamage, min_dmg, ht, reuse);
@ -675,7 +672,6 @@ void Mob::RogueBackstab(Mob* other, bool min_damage, int ReuseTime)
ndamage = -5;
}
//DCBOOKMARK
ndamage = mod_backstab_damage(ndamage);
DoSpecialAttackDamage(other, BACKSTAB, ndamage, min_hit, hate, ReuseTime);
@ -897,7 +893,6 @@ void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Item
bool dobonus = false;
if(GetClass() == RANGER && GetLevel() > 50)
{
//DCBOOKMARK
int bonuschance = RuleI(Combat, ArcheryBonusChance);
bonuschance = mod_archery_bonus_chance(bonuschance, RangeWeapon);
@ -954,7 +949,6 @@ void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Item
TotalDmg += other->GetAdditionalDamage(this, 0, true, ARCHERY);
TotalDmg += (itembonuses.HeroicDEX / 10) + (TotalDmg * other->GetSkillDmgTaken(ARCHERY) / 100) + GetSkillDmgAmt(ARCHERY);
//DCBOOKMARK
TotalDmg = mod_archery_damage(TotalDmg, dobonus);
TryCriticalHit(other, ARCHERY, TotalDmg);
@ -974,7 +968,7 @@ void Mob::DoArcheryAttackDmg(Mob* other, const ItemInst* RangeWeapon, const Item
TryWeaponProc(RangeWeapon, other, 11);
}
//DCBOOKMARK - Arrow procs because why not?
//Arrow procs because why not?
if((Ammo != NULL) && GetTarget() && other && (other->GetHP() > -10))
{
TryWeaponProc(Ammo, other, 11);
@ -1126,7 +1120,6 @@ uint16 Mob::GetThrownDamage(int16 wDmg, int32& TotalDmg, int& minDmg)
if(MaxDmg < minDmg)
MaxDmg = minDmg;
//DCBOOKMARK
MaxDmg = mod_throwing_damage(MaxDmg);
return MaxDmg;

View File

@ -2809,7 +2809,6 @@ int Mob::CalcSpellEffectValue(uint16 spell_id, int effect_id, int caster_level,
mlog(SPELLS__BARDS, "Effect value %d altered with bard modifier of %d to yeild %d", oval, mod, effect_value);
}
//DCBOOKMARK
effect_value = mod_effect_value(effect_value, spell_id, spells[spell_id].effectid[effect_id], caster);
return(effect_value);

View File

@ -440,7 +440,6 @@ bool Mob::DoCastSpell(uint16 spell_id, uint16 target_id, uint16 slot,
return(true);
}
//DCBOOKMARK
cast_time = mod_cast_time(cast_time);
// ok we know it has a cast time so we can start the timer now
@ -2373,7 +2372,6 @@ int Mob::CalcBuffDuration(Mob *caster, Mob *target, uint16 spell_id, int32 caste
IsBlindSpell(spell_id))
res += 1;
//DCBOOKMARK
res = mod_buff_duration(res, caster, target, spell_id);
mlog(SPELLS__CASTING, "Spell %d: Casting level %d, formula %d, base_duration %d: result %d",
@ -2479,7 +2477,6 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2,
return -1;
}
//DCBOOKMARK
int modval = mod_spell_stack(spellid1, caster_level1, caster1, spellid2, caster_level2, caster2);
if(modval < 2) { return(modval); }
@ -4139,7 +4136,6 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use
resist_chance += resist_modifier;
resist_chance += target_resist;
//DCBOOKMARK
resist_chance = mod_spell_resist(resist_chance, level_mod, resist_modifier, target_resist, resist_type, spell_id, caster);
//Do our min and max resist checks.

View File

@ -1016,7 +1016,6 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
}
}
//DCBOOKMARK
chance = mod_tradeskill_chance(chance, spec);
if (((spec->tradeskill==75) || GetGM() || (chance > res)) || MakeRandomInt(0, 99) < AAChance){
@ -1111,7 +1110,6 @@ void Client::CheckIncreaseTradeskill(int16 bonusstat, int16 stat_modifier, float
}
}
//DCBOOKMARK
chance_stage2 = mod_tradeskill_skillup(chance_stage2);
if (chance_stage2 > MakeRandomFloat(0, 99)) {

View File

@ -252,7 +252,6 @@ int32 Client::TributeItem(uint32 slot, uint32 quantity) {
//figure out what its worth
int32 pts = inst->GetItem()->Favor;
//DCBOOKMARK
pts = mod_tribute_item_value(pts);
if(pts < 1) {

View File

@ -1166,7 +1166,6 @@ bool Zone::Init(bool iStaticZone) {
LogFile->write(EQEMuLog::Status, "Init Finished: ZoneID = %d, Time Offset = %d", zoneid, zone->zone_time.getEQTimeZone());
//DCBOOKMARK
LoadTickItems();
//MODDING HOOK FOR ZONE INIT
@ -1491,7 +1490,6 @@ bool Zone::Process() {
}
}
//DCBOOKMARK
if(hotzone_timer.Check()) { UpdateHotzone(); }
return true;
@ -2672,7 +2670,6 @@ void Zone::ReloadWorld(uint32 Option){
}
}
//DCBOOKMARK
void Zone::LoadTickItems()
{
char errbuf[MYSQL_ERRMSG_SIZE];

View File

@ -70,7 +70,6 @@ struct ZoneEXPModInfo {
float AAExpMod;
};
//DCBOOKMARK
struct item_tick_struct {
uint32 itemid;
uint32 chance;
@ -263,7 +262,6 @@ public:
LinkedList<NPC_Emote_Struct*> NPCEmoteList;
//DCBOOKMARK
void LoadTickItems();
uint32 GetSpawnKillCount(uint32 in_spawnid);
void UpdateHotzone();