Skip to content
Gl0 edited this page Jul 25, 2018 · 32 revisions

How to make and remove custom events for Shinrameter.

Events files are located in "ShinraMeter\resources\config\events". Depending on what class you are logged into, it will load a different events file. events-common.xml will always be loaded and will serve as a way to tell you if things like Hurricane or Enrage are currently on the boss, this file will notify you no matter what class you are logged into. But if you main mystic, you'll want to edit events-mystic.xml to your liking.

Buff/Debuff lists

You can find a list of buffs/debuffs here: https://raw.githubusercontent.com/neowutran/TeraDpsMeterData/master/hotdot/hotdot-EU-EN.tsv (or you can use any other region file from https://github.com/neowutran/TeraDpsMeterData/tree/master/hotdot or even from ./resources/data/hotdot directory of your meter)

Enable/Disable event

Since V1.60 you can disable any event by adding active="false" attribute to it. If no active on event level is specified - one from <events> node will be used, if there is no active attribute even there - default is active="true".

To remove an unwanted beep

Look in your class file (or common), copy the abnormality codes and look it up in the above files until you find what it is, and remove any unwanted sounds. To fully remove an event, remove everything between and including and the very next .

To add an event

I'll have to explain the different kinds of events you can create.

abnormality events: "Added", "Removed", "MissingDuringFight", "Ending"

  • Added: When a buff or debuff is added to the boss, yourself, or a party buff such as Energy Stars (set by whether you put "Self", "Boss", "MyBoss", or "Party" as the target), the meter will beep and send you a message.

  • Removed: When a buff or debuff ends and is no longer applicable, the meter can send you a beep and a message.

  • MissingDuringFight: If you start a fight or have recently resurrected and you don't have a certain buff on you, such as Ninja's Focus, or a Complete Crystalbind.

  • Ending (available since 1.79): Same as MissingDuringFight, but triggered only if abnormality exist and going to end soon, but won't trigger if abnormality is missing. Can be used for enrage ending notification, for example.

cooldown reset event

Triggered when specified skill cooldown has reset, should look like

	<cooldown ingame="true" active="true" skill_id="71000">
		<actions>
			<notify>
				<balloon title_text="{skill_name} reset" body_text="{skill_name}" display_time="3000" />
				<beeps>
					<beep frequency="185" duration="500"/>
				</beeps>
			</notify>
		</actions>
	</cooldown>

Since 2.12 you can use skill_id="0" to trigger event on any skill reset and use {skill_id} placeholder to see exact skill id that triggered it.

How to create an event.

This is what a completed abnormality event looks like:

	<abnormality ingame="true" remaining_seconds_before_trigger="0" rewarn_timeout_seconds="0" trigger="MissingDuringFight" target="Self">
		<abnormalities>
			<abnormality>10154030</abnormality>
		</abnormalities>
		<actions>
			<notify>
				<balloon title_text="{abnormality_name}" body_text="{abnormality_name}" display_time="3000" />
					<beeps>
						<beep frequency="220" duration="500"/>
					</beeps>
			</notify>
		</actions>
	</abnormality>

You can change the:

  • remaining_seconds_before_trigger="0" - notify when X seconds remaining before abnormality ends, applied to "MissingDuringFight" and "Ending" events

  • rewarn_timeout_seconds="30" - applied only for "MissingDuringFight" and "Ending" events, delay next check for X seconds after notification

  • trigger to "Added", "Removed", or "MissingDuringFight" as whichever you want.

  • target between "Self", "Boss", "MyBoss" (If there are multiple bosses around you at the same time - you may want to be notified only about "your" boss's debuffs. "MyBoss" events triggers only for the boss that you hit last) , or "Party" depending on what the buff will be affecting.

  • "stack" : filter for all abnormality events: now you can specify which stack count is required for each abnormality to trigger. For example if you add stack in "abnormality missing" event (should look like <abnormality stack=13>101300</abnormality>) - event will continue warning you about traverse cut debuff even if you place it on boss, but it doesn't have full stacks. Same thing can be done in "abnormality added" event - you can make it trigger if someone receive more than X stacks of some debuff, but don't trigger on lower stacks. Default to "0"

  • find an abnormality in the list (see https://github.com/neowutran/ShinraMeter/wiki/Events#buffdebuff-lists ), then change the number inbetween to the desired one.

  • message that the meter will send you, or you can delete the entire line that starts with "" to not receive a message. The title_text is what shows up at the top of the notification, I'd recommend leaving this the same. But body_text is what is contained in the message, {abnormality_name} will automatically name whatever is in , but after that you can put something like "{abnormality_name} has been put on the boss! Quick, use Fire Avalanche/Burning Heart!" Other macro supported: {player_name} - name of the player, who is missing buff and {time_left} - remaining time left for ending buff. Onto the display_time, this is in milliseconds, so 3000 will display the message for 3 seconds, if you want it to be up for 10 seconds, change it to 10000.

  • The final thing to change is whether you want it to beep, not beep, or play music or use text-to-speech. An easy way to turn off sound - to delete everything inside <notify> and </notify> except <balloon .../> section.

  • Ignore Classes Since 2.50 you can use ignore_classes attribute to disable abnormality event for specific classes. For example ignore_classes="Priest,Mystic"

Global events configurations

  • "active" attribute. Value "false" or "true"

  • "priority" attribute. Value: integer, biggest -> most important event. example 'priority="5"'. Default value is "5" In case of multiple events triggered in the same time (we trigger maximum one notification per second) you can specify which event would be shown by adding this attribute.

  • "area_boss_blacklist" block -> disable an event for some area or boss

example:

<area_boss_blacklist>
	<blacklist area_id="713" />
	<blacklist area_id="813" />
	<blacklist area_id="432" />
	<blacklist area_id="431" />
	<blacklist area_id="433" />		
</area_boss_blacklist>
  • You can specify exact boss_id there, if you want to disable event not for the whole dungeon but for specific boss only. (Note, that event will be disabled if you see this boss fighting, even if you are fighting another boss.)

Sounds configuration:

There are 3 ways of sound notification: beeps, music and text-to-speech:

Beeps

Here is an example of what you would have it look like if you wanted to be notified by beeps:

<beeps>
	<beep frequency="440" duration="500"/>
</beeps>

You can add silence between beeps (using frequency="0"), meter play beeps in separate threads - so you can set up delayed beep.

Music

Here is an example of what you would have it look like if you wanted to be notified by mp3 sound:

<music file="C:\MyMusic\foo.mp3" volume="100" duration="2000"/>

Remember that duration="" is in milliseconds, so 2000 would be 2 seconds. Volume="" is 0-100, so 100 would be if you were listening to it on Windows Media Player at 100% volume.

Text to speech

Here is an example of what you would have it look like if you wanted to be notified by spoken text:

<text_to_speech text="Contagion" />

or more complex one, containing info about which voice to use (here are default values, except meter is using current UI culture by default):

<text_to_speech text="{abnormality_name} on {player_name}" voice_gender="Female" voice_age="Adult" culture="en-US" voice_position="0" volume="30" rate="0" />
  • text - what should be spoken. Note that for localized buff and player names can be pronounced only by voices, that are supporting used character set ("en" voice can't say anything written in Cyrillic, for example).
  • voice_gender - gender of selected voice ("Female", "Male" or "Neutral")
  • voice_age - age of selected voice ("Child", "Teen", "Adult" or "Senior")
  • culture - localization of selected voice, should be in the same format as ui_culture.
  • voice_position - index (zero based) of selected voice if you have more than one installed.
  • rate - speed of speech (-10 to +10)
  • volume - speech volume

You can omit any parameter except "text".

Restore defaults

If at any point your event file gets corrupted or you mess up, you can just delete the entire file and it will be recreated the next time you open ShinraMeter with latest default settings.

Some sample

Enrage notifier

<!-- Enrage is ending -->
	<abnormality active="true" priority="8" ingame="true" rewarn_timeout_seconds="6" remaining_seconds_before_trigger="12" trigger="Ending" target="Boss">
		<abnormalities>
			<abnormality>8888888</abnormality>
		</abnormalities>
		<actions>
			<notify>
				<balloon title_text="{abnormality_name} is ending" body_text="{abnormality_name} {time_left} left" display_time="3000" />
				<text_to_speech text="{abnormality_name} ending in {time_left} seconds" voice_gender="Female" voice_age="Adult" culture="en-US" voice_position="0" volume="30" rate="0"/>			
			</notify>
		</actions>
	</abnormality>