/****************************************************************** ** Encounter Information ** ** By: Hendrix ** ** Version .1 ** ******************************************************************/ ;Collections to store Damage amount Given/received and type of damage per hit variable collection:int DamageGivenCollect variable collection:int DamageTakenCollect variable collection:int HighHitCollect ;Collections to store the start and stop of combat variable collection:int TimeStartCollect variable collection:bool CombatStartedCollect ;Variables needed to figure out when combat is over variable int TimeEnd ;Collections to store heal information. variable collection:int HealGivenCollect variable collection:int HealReceivedCollect ;Index to store resists variable index:string ResistPersonIndex variable index:string ResistTypeIndex function trigger_setup() { ; Your Spirit Strike I hits Mob Name for XX damage ; Mob Name hits you for XX damage AddTrigger mydmgadd "Your @ATTACK@ hits @SOMEONEELSE@ for @DAMAGE@ damage" AddTrigger dmgadd "@SOMEONE@ hits @SOMEONEELSE@ for @DAMAGE@ damage" ;Triggers to add damage to each person's damage list ;AddTrigger dmgadd "@SOMEONE@ hits @SOMEONEELSE@ for @DAMAGE@ points of @TYPE@ damage." ;AddTrigger dmgadd "@SOMEONE@ hit @SOMEONEELSE@ for @DAMAGE@ points of @TYPE@ damage." ;Trigger to check for a miss AddTrigger miss "@SOMEONE@ tries to @TYPE@ @SOMEONEELSE@, but @BUT@." AddTrigger miss "@SOMEONE@ try to @TYPE@ @SOMEONEELSE@, but @BUT@." ;Trigger to calculate how much heals are being used AddTrigger heal "@SOMEONE@ heals @SOMEONEELSE@ for @DAMAGE@ hit points." ;Trigger to end combat AddTrigger endcombat "You gain bonus experience for defeating the encounter!" } function main() { ;Initialization of our triggers and variables call trigger_setup ;temp variable to store temp stuff variable string tempvar ;Main loop Do { if ${QueuedCommands} ProcessQueued else WaitFrame if ${CombatStartedCollect.Element[Group]} && ${Math.Calc[${System.TickCount} - ${TimeEnd}]} > 5000 { call endcombat } } while 1 } atom mydmgadd(string Line, string Type, string SomeoneElse, int Damage) { call dmgadd "${Line}" "Your" "${SomeoneElse}" ${Damage} "${Type}" } atom dmgadd(string Line, string Someone, string SomeoneElse, int Damage, string Type) { ;check for power damage if ${Type.Equal[power]} return ;set end time TimeEnd:Set[${System.TickCount}] ;call our name manipulation/timer start function call namemanip "${Someone}" "${SomeoneElse}" ${Damage} ;get the return from our manipulation function Someone:Set[${Return.Token[1,"~"]}] SomeoneElse:Set[${Return.Token[2,"~"]}] ;Check for key (name) if exists add damage, if not create it. if ${DamageGivenCollect.Key["${Someone}"](exists)} DamageGivenCollect:Set["${Someone}",${DamageGivenCollect.Element["${Someone}"]:Inc[${Damage}]}] else DamageGivenCollect:Set["${Someone}",${Damage}] ;Check for key (name) if exists add damage, if not create it. if ${DamageReceivedCollect.Key["${SomeoneElse}"](exists)} DamageReceivedCollect:Set["${SomeoneElse}",${DamageReceivedCollect.Element["${SomeoneElse}"]:Inc[${Damage}]}] else DamageReceivedCollect:Set["${SomeoneElse}",${Damage}] ;check for highest hit so far if ${HighHitCollect.Key["${Someone}"](exists)} { if ${HighHitCollect.Element[${Someone}]} < ${Damage} HighHitCollect:Set["${Someone}",${Damage}] } else HighHitCollect:Set["${Someone}",${Damage}] } atom heal(string Line, string Someone, string SomeoneElse, int Damage) { ;call our name manipulation/timer start function call namemanip "${Someone}" "${SomeoneElse}" ;get the return from out manipulation function Someone:Set[${Return.Token[1,"~"]}] SomeoneElse:Set[${Return.Token[2,"~"]}] ;Check for key (name) if exists add damage, if not create it. if ${HealGivenCollect.Key["${Someone}"](exists)} HealGivenCollect:Set["${Someone}",${HealGivenCollect.Element["${Someone}"]:Inc[${Damage}]}] else HealGivenCollect:Set["${Someone}",${Damage}] ;Check for key (name) if exists add damage, if not create it. if ${HealReceivedCollect.Key["${SomeoneElse}"](exists)} HealReceivedCollect:Set["${SomeoneElse}",${HealReceivedCollect.Element["${SomeoneElse}"]:Inc[${Damage}]}] else HealReceivedCollect:Set["${SomeoneElse}",${Damage}] } atom miss(string line, string Someone, string Type, string SomeoneElse, string But) { ;set end time TimeEnd:Set[${System.TickCount}] ;call our name manipulation/timer start function call namemanip "${Someone}" "${SomeoneElse}" ;get the return from out manipulation function Someone:Set[${Return.Token[1,"~"]}] SomeoneElse:Set[${Return.Token[2,"~"]}] ;check to see if it is a miss or a resist. If resist add it to resist index. if ${But.Right[6].Equal[resist]} || ${But.Right[7].Equal[resists]} { ResistPersonIndex:Insert[${SomeoneElse}] ResistTypeIndex:Insert[${Type}] } } atom namemanip(string Someone, string SomeoneElse, int Damage) { ;Make someone equal your characters name if you caused damage if ${Someone.Left[3].Equal[YOU]} Someone:Set[${Me.Name}] ;Check to see if You are SomeoneElse if ${SomeoneElse.Left[3].Equal[YOU]} SomeoneElse:Set[${Me.Name}] ;checks if spell was cause of damage if ${Someone.Find[']} Someone:Set[${Someone.Token[1,']}] ;checks if we crited to a melee hit if ${Someone.Right[10].Equal[critically]} Someone:Set[${Someone.Left[${Math.Calc[${Someone.Length} - 11]}]}] ;Pet check stuff if ${Actor[${Someone}].IsAPet} { if ${Actor[${Someone}].IsMyPet} Someone:Set[${Me.Name}] else Someone:Set[${Actor[${Someone}].Guild.Token[1,']}] } ;checking for timers to start dps calculation. if !${CombatStartedCollect.Key["${Someone}"](exists)} { if !${CombatStartedCollect.Key[Group](exists)} { CombatStartedCollect:Set[Group,TRUE] TimeStartCollect:Set[Group,${System.TickCount}] } CombatStartedCollect:Set["${Someone}",TRUE] TimeStartCollect:Set["${Someone}",${System.TickCount}] } ;check for highest hit so far if ${HighHitCollect.Key[Group](exists)} { if ${HighHitCollect.Element[Group]} < ${Damage} HighHitCollect:Set[Group,${Damage}] } else HighHitCollect:Set[Group,${Damage}] return "${Someone}" ~ "${SomeoneElse}" } atom endcombat() { }