comparison Main.lua @ 171:40624eb09591 1.0.21

Since many NPCs are for some reason flagged as VEHICLE, allow that in NPC-only checks.
author James D. Callahan III <jcallahan@curse.com>
date Tue, 16 Oct 2012 15:13:10 -0500
parents 5f6d5a1a62e1
children 7354ae12d0f1
comparison
equal deleted inserted replaced
170:3b1f1e47897c 171:40624eb09591
375 end 375 end
376 return tonumber(item_link:match("item:(%d+)")) 376 return tonumber(item_link:match("item:(%d+)"))
377 end 377 end
378 378
379 379
380 local function UnitTypeIsNPC(unit_type)
381 return unit_type == private.UNIT_TYPES.NPC or unit_type == private.UNIT_TYPES.VEHICLE
382 end
383
384
380 local ParseGUID 385 local ParseGUID
381 do 386 do
382 local UNIT_TYPE_BITMASK = 0x007 387 local UNIT_TYPE_BITMASK = 0x007
383 388
384 function ParseGUID(guid) 389 function ParseGUID(guid)
868 current_target_id = nil 873 current_target_id = nil
869 return 874 return
870 end 875 end
871 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID("target")) 876 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID("target"))
872 877
873 if not unit_idnum or unit_type ~= private.UNIT_TYPES.NPC then 878 if not unit_idnum or not UnitTypeIsNPC(unit_type) then
874 return 879 return
875 end 880 end
876 current_target_id = unit_idnum 881 current_target_id = unit_idnum
877 882
878 local npc = NPCEntry(unit_idnum) 883 local npc = NPCEntry(unit_idnum)
1092 if not spell_id then 1097 if not spell_id then
1093 return 1098 return
1094 end 1099 end
1095 local source_type, source_id = ParseGUID(source_guid) 1100 local source_type, source_id = ParseGUID(source_guid)
1096 1101
1097 if not source_id or source_type ~= private.UNIT_TYPES.NPC then 1102 if not source_id or not UnitTypeIsNPC(source_type) then
1098 return 1103 return
1099 end 1104 end
1100 1105
1101 if bit.band(FLAGS_NPC_CONTROL, source_flags) == FLAGS_NPC_CONTROL and bit.band(FLAGS_NPC, source_flags) ~= 0 then 1106 if bit.band(FLAGS_NPC_CONTROL, source_flags) == FLAGS_NPC_CONTROL and bit.band(FLAGS_NPC, source_flags) ~= 0 then
1102 local encounter_data = NPCEntry(source_id).encounter_data[InstanceDifficultyToken()] 1107 local encounter_data = NPCEntry(source_id).encounter_data[InstanceDifficultyToken()]
1112 SPELL_CAST_START = RecordNPCSpell, 1117 SPELL_CAST_START = RecordNPCSpell,
1113 SPELL_CAST_SUCCESS = function(sub_event, source_guid, source_name, source_flags, dest_guid, dest_name, dest_flags, spell_id, spell_name) 1118 SPELL_CAST_SUCCESS = function(sub_event, source_guid, source_name, source_flags, dest_guid, dest_name, dest_flags, spell_id, spell_name)
1114 if spell_id == HEAL_BATTLE_PETS_SPELL_ID then 1119 if spell_id == HEAL_BATTLE_PETS_SPELL_ID then
1115 local unit_type, unit_idnum = ParseGUID(source_guid) 1120 local unit_type, unit_idnum = ParseGUID(source_guid)
1116 1121
1117 if unit_type == private.UNIT_TYPES.NPC and unit_idnum then 1122 if unit_idnum and UnitTypeIsNPC(unit_type) then
1118 NPCEntry(unit_idnum).stable_master = true 1123 NPCEntry(unit_idnum).stable_master = true
1119 end 1124 end
1120 end 1125 end
1121 RecordNPCSpell(sub_event, source_guid, source_name, source_flags, dest_guid, dest_name, dest_flags, spell_id, spell_name) 1126 RecordNPCSpell(sub_event, source_guid, source_name, source_flags, dest_guid, dest_name, dest_flags, spell_id, spell_name)
1122 end, 1127 end,
1124 if dest_guid ~= _G.UnitGUID("target") then 1129 if dest_guid ~= _G.UnitGUID("target") then
1125 return 1130 return
1126 end 1131 end
1127 local unit_type, unit_idnum = ParseGUID(dest_guid) 1132 local unit_type, unit_idnum = ParseGUID(dest_guid)
1128 1133
1129 if unit_type ~= private.UNIT_TYPES.NPC or not unit_idnum then 1134 if not unit_idnum or not UnitTypeIsNPC(unit_type) then
1130 reputation_npc_id = nil 1135 reputation_npc_id = nil
1131 private.harvesting = nil 1136 private.harvesting = nil
1132 return 1137 return
1133 end 1138 end
1134 reputation_npc_id = unit_idnum 1139 reputation_npc_id = unit_idnum
1556 1561
1557 function WDP:UpdateMerchantItems(event_name) 1562 function WDP:UpdateMerchantItems(event_name)
1558 if not current_merchant or event_name == "MERCHANT_SHOW" then 1563 if not current_merchant or event_name == "MERCHANT_SHOW" then
1559 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID("target")) 1564 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID("target"))
1560 1565
1561 if unit_type ~= private.UNIT_TYPES.NPC or not unit_idnum then 1566 if not unit_idnum or not UnitTypeIsNPC(unit_type) then
1562 return 1567 return
1563 end 1568 end
1564 merchant_standing = select(2, UnitFactionStanding("target")) 1569 merchant_standing = select(2, UnitFactionStanding("target"))
1565 current_merchant = NPCEntry(unit_idnum) 1570 current_merchant = NPCEntry(unit_idnum)
1566 current_merchant.sells = current_merchant.sells or {} 1571 current_merchant.sells = current_merchant.sells or {}
1676 if current_action.spell_label ~= "MIND_CONTROL" then 1681 if current_action.spell_label ~= "MIND_CONTROL" then
1677 return 1682 return
1678 end 1683 end
1679 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID("pet")) 1684 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID("pet"))
1680 1685
1681 if unit_type ~= private.UNIT_TYPES.NPC or not unit_idnum then 1686 if not unit_idnum or not UnitTypeIsNPC(unit_type) then
1682 return 1687 return
1683 end 1688 end
1684 NPCEntry(unit_idnum).mind_control = true 1689 NPCEntry(unit_idnum).mind_control = true
1685 table.wipe(current_action) 1690 table.wipe(current_action)
1686 end 1691 end
2025 2030
2026 if not unit_idnum or (required_type and unit_type ~= required_type) then 2031 if not unit_idnum or (required_type and unit_type ~= required_type) then
2027 return 2032 return
2028 end 2033 end
2029 2034
2030 if unit_type == private.UNIT_TYPES.NPC then 2035 if UnitTypeIsNPC(unit_type) then
2031 NPCEntry(unit_idnum)[field] = true 2036 NPCEntry(unit_idnum)[field] = true
2032 elseif unit_type == private.UNIT_TYPES.OBJECT then 2037 elseif unit_type == private.UNIT_TYPES.OBJECT then
2033 DBEntry("objects", unit_idnum)[field] = true 2038 DBEntry("objects", unit_idnum)[field] = true
2034 UpdateDBEntryLocation("objects", unit_idnum) 2039 UpdateDBEntryLocation("objects", unit_idnum)
2035 end 2040 end