comparison Main.lua @ 65:3f7a12a9163c

Ensure that reputation gains are attributed to the correct NPC ID and changed where within the NPC table they are stored.
author James D. Callahan III <jcallahan@curse.com>
date Thu, 26 Jul 2012 16:36:29 -0500
parents 2421a4d39909
children e84a1e960bed
comparison
equal deleted inserted replaced
64:2421a4d39909 65:3f7a12a9163c
580 580
581 do 581 do
582 local FLAGS_NPC = bit.bor(_G.COMBATLOG_OBJECT_TYPE_GUARDIAN, _G.COMBATLOG_OBJECT_CONTROL_NPC) 582 local FLAGS_NPC = bit.bor(_G.COMBATLOG_OBJECT_TYPE_GUARDIAN, _G.COMBATLOG_OBJECT_CONTROL_NPC)
583 local FLAGS_NPC_CONTROL = bit.bor(_G.COMBATLOG_OBJECT_AFFILIATION_OUTSIDER, _G.COMBATLOG_OBJECT_CONTROL_NPC) 583 local FLAGS_NPC_CONTROL = bit.bor(_G.COMBATLOG_OBJECT_AFFILIATION_OUTSIDER, _G.COMBATLOG_OBJECT_CONTROL_NPC)
584 584
585 -- This is used to record faction gains
586 local dead_npc_id
585 587
586 local function RecordNPCSpell(sub_event, source_guid, source_name, source_flags, dest_guid, dest_name, dest_flags, spell_id, spell_name) 588 local function RecordNPCSpell(sub_event, source_guid, source_name, source_flags, dest_guid, dest_name, dest_flags, spell_id, spell_name)
587 if not spell_id then 589 if not spell_id then
588 return 590 return
589 end 591 end
602 604
603 local COMBAT_LOG_FUNCS = { 605 local COMBAT_LOG_FUNCS = {
604 SPELL_AURA_APPLIED = RecordNPCSpell, 606 SPELL_AURA_APPLIED = RecordNPCSpell,
605 SPELL_CAST_START = RecordNPCSpell, 607 SPELL_CAST_START = RecordNPCSpell,
606 SPELL_CAST_SUCCESS = RecordNPCSpell, 608 SPELL_CAST_SUCCESS = RecordNPCSpell,
609 UNIT_DIED = function(sub_event, source_guid, source_name, source_flags, dest_guid, dest_name, dest_flags, spell_id, spell_name)
610 local unit_type, unit_idnum = ParseGUID(dest_guid)
611
612 if unit_type ~= private.UNIT_TYPES.NPC or not unit_idnum then
613 dead_npc_id = nil
614 return
615 end
616 dead_npc_id = unit_idnum
617 end,
607 } 618 }
608 619
609 620
610 function WDP:COMBAT_LOG_EVENT_UNFILTERED(event, time_stamp, sub_event, hide_caster, source_guid, source_name, source_flags, source_raid_flags, dest_guid, dest_name, dest_flags, dest_raid_flags, ...) 621 function WDP:COMBAT_LOG_EVENT_UNFILTERED(event, time_stamp, sub_event, hide_caster, source_guid, source_name, source_flags, source_raid_flags, dest_guid, dest_name, dest_flags, dest_raid_flags, ...)
611 local combat_log_func = COMBAT_LOG_FUNCS[sub_event] 622 local combat_log_func = COMBAT_LOG_FUNCS[sub_event]
613 if not combat_log_func then 624 if not combat_log_func then
614 return 625 return
615 end 626 end
616 combat_log_func(sub_event, source_guid, source_name, source_flags, dest_guid, dest_name, dest_flags, ...) 627 combat_log_func(sub_event, source_guid, source_name, source_flags, dest_guid, dest_name, dest_flags, ...)
617 end 628 end
618 end -- do-block 629
619
620
621 do
622 local DIPLOMACY_SPELL_ID = 20599 630 local DIPLOMACY_SPELL_ID = 20599
623 local MR_POP_RANK1_SPELL_ID = 78634 631 local MR_POP_RANK1_SPELL_ID = 78634
624 local MR_POP_RANK2_SPELL_ID = 78635 632 local MR_POP_RANK2_SPELL_ID = 78635
625 633
626 local REP_BUFFS = { 634 local REP_BUFFS = {
684 } 692 }
685 } 693 }
686 694
687 695
688 function WDP:COMBAT_TEXT_UPDATE(event, message_type, faction_name, amount) 696 function WDP:COMBAT_TEXT_UPDATE(event, message_type, faction_name, amount)
689 if message_type ~= "FACTION" or not action_data.npc_level then 697 if message_type ~= "FACTION" or not dead_npc_id then
690 return 698 return
691 end 699 end
692 UpdateFactionData() 700 UpdateFactionData()
693 701
694 if not faction_name or not faction_standings[faction_name] then 702 if not faction_name or not faction_standings[faction_name] then
695 return 703 return
696 end 704 end
697 local npc = NPCEntry(action_data.identifier) 705 local npc = NPCEntry(dead_npc_id)
698 706
699 if not npc then 707 if not npc then
700 return 708 return
701 end
702 local npc_stats = npc.encounter_data[InstanceDifficultyToken()].stats
703
704 if not npc_stats[action_data.npc_level] then
705 npc_stats[action_data.npc_level] = {}
706 end
707 local reputation_data = npc_stats[action_data.npc_level].reputations
708
709 if not reputation_data then
710 reputation_data = {}
711 npc_stats[action_data.npc_level].reputations = reputation_data
712 end 709 end
713 local modifier = 1 710 local modifier = 1
714 711
715 if _G.IsSpellKnown(DIPLOMACY_SPELL_ID) then 712 if _G.IsSpellKnown(DIPLOMACY_SPELL_ID) then
716 modifier = modifier + 0.1 713 modifier = modifier + 0.1
729 if not modded_faction or faction_name == modded_faction then 726 if not modded_faction or faction_name == modded_faction then
730 modifier = modifier + MODIFIERS[buff_label].modifier 727 modifier = modifier + MODIFIERS[buff_label].modifier
731 end 728 end
732 end 729 end
733 end 730 end
734 reputation_data[("%s:%s"):format(faction_name, faction_standings[faction_name])] = math.floor(amount / modifier) 731 npc.reputations = npc.reputations or {}
732 npc.reputations[("%s:%s"):format(faction_name, faction_standings[faction_name])] = math.floor(amount / modifier)
735 end 733 end
736 end -- do-block 734 end -- do-block
737 735
738 736
739 function WDP:ITEM_TEXT_BEGIN() 737 function WDP:ITEM_TEXT_BEGIN()