Release EDDI - Windows app for immersion and more

Status
Thread Closed: Not open for further replies.
I've noticed when entering signal sources that EDDI doesn't say what it is properly. EDDI says "$USS_TYPECONVOY" and not "Convoy Dispersal Pattern". Seems to happen with all signal sources Ie come across. Haven't had a chance to send in a log yet
 
Last edited:
I tested for roughly 4 hours straight and found no issues with EDDI standalone, as a plugin to VA, or whilst running EDDI the HCS Voice Pack Astra 2.0 Guardians. I did encounter some issues with EDDI and the HCS Voice Pack Multi-Crew, where EDDI would not speak when asked things like "Tell me about this system" though the commands were recognized. Since EDDI did correctly recite the expected voice responses while not using the Multi-Crew profile, I am assuming the conflict was with the profile from HCS and not with EDDI specifically.
 
Elite doesn't provide the star's class anywhere in the journal unless it is unknown and then scanned with a detailed surface scanner, so if it isn't in EDDB then EDDI can't report on it.

If you find such a star you can add it's information directly to EDDB by clicking the 'Fix it on ROSS' link at the bottom of the relevant EDDB page.

EDDI should unset the stellar class if it isn't known; I'll take a look at this and fix it.

I've been playing with the warning system a bit and it looks like a lot of Spectral Classes are missing or wrong in EDDB (or is it EDDP). Yesterday I added the Spectral Class of LAWD 27 to EDDB but today still now warning.

Just now I was at Aulin and it also doesn't seem to have a Spectral Class in EDDB.
I tested when jumping from Ross 640 (a White Dwarf (SC = D) and the warning was given). After that a straight jump to Aulin. According to the screeninfo when counting down the jump it's SC = K, I had VA read out the SC during the jump and it said "D" (old value of the last system) but despite this no warning was given (I expected a warning, albeit a false one).
To cut a long story short I made a request (in the bug section) for Frontier to put the Spectral Class in the FSDjump event of the journal.
 
Last edited:
Here's my "Bounty awarded" script.


{Pause(3000)}
{OneOf(
"You destroyed a ship of the {(event.faction)} fleet.",
"You just killed some {(event.faction)} scumbag.",
"You broke his space ship.",
"Those {(event.faction)} scum will have to float their way home.",
"Apology accepted you {(event.faction)} scum.",
"Frying tonight.. {(event.faction)} ships.",
"Those {(event.faction)} ships explode very nicely.",
"The {(event.faction)} pilot just ejected.",
"You certainly punched his ticket.",
"That guy should have been more respectful.",
"We got 'em, yeah!. We got 'em.",
"That pilot won't be getting his bounty vouchers any time soon.",
"{(event.faction)}.. Don't send anymore of your ships after me.",
"{(event.faction)}.. One of your pilots is missing.",
"{(event.faction)}.. There were no survivors from that ship.",
"{(event.faction)}.. I hope your escape pods malfunction. "
)}

{Pause(1500)}

{if len(event.rewards) = 1:
{OneOf("Bounty voucher","Voucher","Bounty")} of {Humanise(event.reward)} credits received from {P(event.rewards[0].faction)}
|elif len(event.rewards) > 1:
{len(event.rewards)} {OneOf("Bounty vouchers","Vouchers","Bounties")} received for a total of {Humanise(event.reward)} credits
}
{if event.shared:
to share between yourself and your wing-mates
}.

{Pause(1500)}

{F("Damage check")}
Please continue, i'm enjoying your scripts...

By the way jgm i'm testing 2.0.13 with no crashes so far in 3/4 hours of play.
 
...Also where is a good place to post our Coddle scripts.. I've done a few good ones and would be keen to swap / share scripts.

OK here's my version of the "Docking granted" script. In the original it gives the position of the landing pad like "Landing pad 5 is at 7 O'clock near as you enter with the green lights on your right." but I find that a bit distracting myself because I was keeping track of the green lights more then usual and sometimes looking for pad 7 instead of 5 :)

Before EDDI 2 I made a VA-command that when I told it the number of the landing pad it would reply. I divided the station in three sections, Near, Mid and Far and the response just gives me this section and a "mind your speed" warning if the pad is close to the entrance. I translated this to an EDDI 2 script and here it is:

Code:
{set station to StationDetails(event.station)}
{if station.model = "Coriolis Starport" || station.model = "Orbis Starport" || station.model = "Ocellus Starport" || station.model = "Unknown Starport":
    {Pause(8000)}
    Landing pad {event.landingpad} is 
    {if event.landingpad = 1:
        close to the entrance. Mind your speed Joshua.
    |elif event.landingpad = 2:
        in the mid section of the station.
    |elif event.landingpad = 3:
        in the far section of the station.
    |elif event.landingpad = 4:
        in the far section of the station.
    |elif event.landingpad = 5:
        close to the entrance. Mind your speed Joshua
    |elif event.landingpad = 6:
        in the mid section of the station.
    |elif event.landingpad = 7:
        in the mid section of the station.
    |elif event.landingpad = 8:
        in the far section of the station.
    |elif event.landingpad = 9:
        close to the entrance. Mind your speed Joshua
    |elif event.landingpad = 10:
        in the far section of the station.
    |elif event.landingpad = 11:
        close to the entrance. Mind your speed Joshua
    |elif event.landingpad = 12:
        in the mid section of the station.
    |elif event.landingpad = 13:
        in the mid section of the station.
    |elif event.landingpad = 14:
        in the far section of the station.
    |elif event.landingpad = 15:
        in the far section of the station.
    |elif event.landingpad = 16:
        close to the entrance. Mind your speed Joshua
    |elif event.landingpad = 17:
        in the mid section of the station.
    |elif event.landingpad = 18:
        in the far section of the station.
    |elif event.landingpad = 19:
        in the far section of the station.
    |elif event.landingpad = 20:
        close to the entrance. Mind your speed Joshua
    |elif event.landingpad = 21:
        in the mid section of the station.
    |elif event.landingpad = 22:
        in the mid section of the station.
    |elif event.landingpad = 23:
        in the far section of the station.
    |elif event.landingpad = 24:
        close to the entrance. Mind your speed Joshua
    |elif event.landingpad = 25:
        in the far section of the station.
    |elif event.landingpad = 26:
        close to the entrance. Mind your speed Joshua
    |elif event.landingpad = 27:
        in the mid section of the station.
    |elif event.landingpad = 28:
        in the mid section of the station.
    |elif event.landingpad = 29:
        in the far section of the station.
    |elif event.landingpad = 30:
        in the far section of the station.
    |elif event.landingpad = 31:
        close to the entrance. Mind your speed Joshua
    |elif event.landingpad = 32:
        in the mid section of the station.
    |elif event.landingpad = 33:
        in the far section of the station.
    |elif event.landingpad = 34:
        in the far section of the station.
    |elif event.landingpad = 35:
        close to the entrance. Mind your speed Joshua
    |elif event.landingpad = 36:
        in the mid section of the station.
    |elif event.landingpad = 37:
        in the mid section of the station.
    |elif event.landingpad = 38:
        in the far section of the station.
    |elif event.landingpad = 39:
        close to the entrance. Mind your speed Joshua
    |elif event.landingpad = 40:
        in the far section of the station.
    |elif event.landingpad = 41:
        close to the entrance. Mind your speed Joshua
    |elif event.landingpad = 42:
        in the mid section of the station.
    |elif event.landingpad = 43:
        in the mid section of the station.
    |elif event.landingpad = 44:
        in the far section of the station.
    |elif event.landingpad = 45:
        in the far section of the station.
    }
}
 
I'm having difficulties with two short commands that used to work fine under 1.4. I'm not sure the issues are EDDI related but I'll post here in the hope I can pick your collective brains.

First, this is my "clear the pad" command which acknowledges by sending text to EDDI to read out in his/her voice, lifts the ship for 4.5 seconds, retracts the landing gear, then announces completion again by sending text to EDDI. I've used this command for a very long time and in fact updated it for EDDI 2 to change the way it passes text to EDDI. The issue with this script is it often takes a good 10 seconds or more to actually read back the passed text when it used to respond immediately under 1.4. Sometimes it works but I usually get the delay now. Have I coded something incorrectly?

Set Text [Script] to 'Aye Sir!'
Execute external plugin, 'EDDI 2.0.11' and wait for return
Press R key and hold for 4.5 seconds and release
Pause 0.08 seconds
Press L key and hold for 0.08 seconds and release
Set Text [Script] to 'helm is yours sir'
Execute external plugin, 'EDDI 2.0.11' and wait for return

The EDDI line context is Say and the text variable is Script.

The other is a simple say time command. Pre-EDDI 2 the command would simply say its line then read the time, but now VA doesn't read the time at all. I don't think this is due to EDDI but i would appreciate some feedback anyway. This command has not changed since I updated EDDI however I of course updated VA to the latest version to be compatible with the new EDDI:

Set integer [RandomSound] value as random from 1 to 2
Execute command, 'Silentcheck'
Begin Integer Compare : [RandomSound] Equals 1
Play sound, '{VA_SOUNDS}\Ripley Galactic\KICS 4\Audio\KICS_TheTimeIsNow.mp3' (and wait until it completes)
Say, '{TIME}'
Else
Play sound, '{VA_SOUNDS}\Ripley Galactic\KICS 4\Audio\KICS_AtTheSoundOfTheTone.mp3' (and wait until it completes)
Say, '{TIME}' (and wait until it completes)
Play sound, '{VA_SOUNDS}\Ripley Galactic\KICS 4\Audio\KICS_TimeTone.mp3'
End Condition

As you can see this is a legacy KICS command but when executed, all I hear is "At the sound of the tone, the time will be..." then nothing. This worked fine with EDDI 1.4/last VA version. Any helpful suggestions would be greatly appreciated.
 
Last edited:
I'm having difficulties with two short commands that used to work fine under 1.4. I'm not sure the issues are EDDI related but I'll post here in the hope I can pick your collective brains.

First, this is my "clear the pad" command which acknowledges by sending text to EDDI to read out in his/her voice, lifts the ship for 4.5 seconds, retracts the landing gear, then announces completion again by sending text to EDDI. I've used this command for a very long time and in fact updated it for EDDI 2 to change the way it passes text to EDDI. The issue with this script is it often takes a good 10 seconds or more to actually read back the passed text when it used to respond immediately under 1.4. Sometimes it works but I usually get the delay now. Have I coded something incorrectly?

Set Text [Script] to 'Aye Sir!'
Execute external plugin, 'EDDI 2.0.11' and wait for return
Press R key and hold for 4.5 seconds and release
Pause 0.08 seconds
Press L key and hold for 0.08 seconds and release
Set Text [Script] to 'helm is yours sir'
Execute external plugin, 'EDDI 2.0.11' and wait for return

The EDDI line context is Say and the text variable is Script.

The other is a simple say time command. Pre-EDDI 2 the command would simply say its line then read the time, but now VA doesn't read the time at all. I don't think this is due to EDDI but i would appreciate some feedback anyway. This command has not changed since I updated EDDI however I of course updated VA to the latest version to be compatible with the new EDDI:

Set integer [RandomSound] value as random from 1 to 2
Execute command, 'Silentcheck'
Begin Integer Compare : [RandomSound] Equals 1
Play sound, '{VA_SOUNDS}\Ripley Galactic\KICS 4\Audio\KICS_TheTimeIsNow.mp3' (and wait until it completes)
Say, '{TIME}'
Else
Play sound, '{VA_SOUNDS}\Ripley Galactic\KICS 4\Audio\KICS_AtTheSoundOfTheTone.mp3' (and wait until it completes)
Say, '{TIME}' (and wait until it completes)
Play sound, '{VA_SOUNDS}\Ripley Galactic\KICS 4\Audio\KICS_TimeTone.mp3'
End Condition

As you can see this is a legacy KICS command but when executed, all I hear is "At the sound of the tone, the time will be..." then nothing. This worked fine with EDDI 1.4/last VA version. Any helpful suggestions would be greatly appreciated.

For the first one, your issue is probably that you also have the Undocked script running. This contains some sizeable pauses to avoid the background noises and speech. Your best bet is to disable the default Undocked script and write your own in VoiceAttack for whatever purposes you want.

No idea on the second one I'm afraid. Nothing looks immediately wrong; it's odd that it says the "at the sound of the tone" but not the time tone at the end, certainly.
 
I've been playing with the warning system a bit and it looks like a lot of Spectral Classes are missing or wrong in EDDB (or is it EDDP). Yesterday I added the Spectral Class of LAWD 27 to EDDB but today still now warning.

Just now I was at Aulin and it also doesn't seem to have a Spectral Class in EDDB.
I tested when jumping from Ross 640 (a White Dwarf (SC = D) and the warning was given). After that a straight jump to Aulin. According to the screeninfo when counting down the jump it's SC = K, I had VA read out the SC during the jump and it said "D" (old value of the last system) but despite this no warning was given (I expected a warning, albeit a false one).
To cut a long story short I made a request (in the bug section) for Frontier to put the Spectral Class in the FSDjump event of the journal.

If you add it in EDDB it will trickle through to EDDI, just might take a couple of days depending on when data is dumped/transferred/uploaded/etc.
 
I've noticed when entering signal sources that EDDI doesn't say what it is properly. EDDI says "$USS_TYPECONVOY" and not "Convoy Dispersal Pattern". Seems to happen with all signal sources Ie come across. Haven't had a chance to send in a log yet

I haven't really looked at USS drops, I'll see what information is available to make that a bit more legible.
 
Another script..

Undocked

Triggered when your ship undocks from a station or outpost

{Pause(5000)}

{OneOf(
"Let's get out of here.",
"I guess it's time to leave..",
"Punch it Chewie. Emergancy full power boost to engines.",
"Mind the gap. Aim for the door, Aim for the door. ",
"I've got a bad feeling about this.",
"Fly casual, as not to attract the attention of their lazer turrets.",
"Space,The final frontier, these are the jur knees of the starship Enterprise. It's five year mission to seek out new forms of life and new civilisations, To boldy go where no one, has gone before. "
)}.

{Pause(5000)}

{F("Limpet check")}

{F("Damage check")}
 
There have been a fair few changes internally between 2.0.11 and what will be 2.0.13, so I'm requesting beta testers for this release. If you are interested then please download http://www.mcdee.net/elite/EDDI-beta.exe. Note that the it will report itself as version 2.0.12.

The biggest internal changes have been around the speech subsystem, where there have been on-going reports of crashes that I haven't been able to track down. I've put a lot more defensive code in place as well as a new exception reporting system, so even if it does still crash I should be able to track down root cause. It also provides various enhancements that people have asked for but caused more code disruption than I would normally have liked in a minor release. All of this leads me to be a little wary, hence the beta status of this for the moment. Once I have some feedback on how it's going I'll re-evaluate promoting this to being an official release.

If you do want to give this a test, please drop a note here to say you're testing it, and another when you either see a crash or you play for a significant chunk of time (several active hours) without a crash. This will allow me to gauge how well the code is holding up. Also, if you do have a crash please use the 'Send EDDI logs to developers' button on EDDI's UI to send over your logs for investigation. Thank you.

The full changelog is as follows:

  • Fix issue where engineer rank journal message without rank would cause a crash
  • Allow non-string sample events for testing scripts
  • Add sample galnet news event for testing
  • Do not throw spurious errors when shutting down
  • Avoid bug in journal where superpower promotions are logged as combat promotions
  • Update shield resistances with booster stats when exporting ship
  • Add body information to speech responder
  • Add system main star stellar class and age to VoiceAttack variables
  • Fix commander progress "trade" rating
  • Disable "distort voice on damage" effect until we can find a better distortion process
  • Add separate exception logging system
  • Fix incorrect name for Type-7 when exporting to Coriolis
  • Send raw ship JSON directly to Coriolis for import rather than use local processing
  • Update 'Jumping' script: add warning if jumping to known white dwarf or neutron star
  • Update 'Body scanned' script: fix typo where 'higher' was written 'higer'

I have downloaded the Beta. One thing I noticed is faction is no longer an available variable under the Mission Completed event. This may have already been posted, I did notice someone opened an issue on your Github page.

Also, just a suggestion. I have noticed several people sharing code snippets for EDDI in this thread. We may want to branch off into a dedicated code snippet thread for that, this one is getting a little unwieldy (at time of this writing, it was up to 63 pages and this is post #934). Just a thought. Thanks!!!
 
Last edited:
Here's my "Bounty awarded" script.


{Pause(3000)}
{OneOf(
"You destroyed a ship of the {(event.faction)} fleet.",
"You just killed some {(event.faction)} scumbag.",
"You broke his space ship.",
"Those {(event.faction)} scum will have to float their way home.",
"Apology accepted you {(event.faction)} scum.",
"Frying tonight.. {(event.faction)} ships.",
"Those {(event.faction)} ships explode very nicely.",
"The {(event.faction)} pilot just ejected.",
"You certainly punched his ticket.",
"That guy should have been more respectful.",
"We got 'em, yeah!. We got 'em.",
"That pilot won't be getting his bounty vouchers any time soon.",
"{(event.faction)}.. Don't send anymore of your ships after me.",
"{(event.faction)}.. One of your pilots is missing.",
"{(event.faction)}.. There were no survivors from that ship.",
"{(event.faction)}.. I hope your escape pods malfunction. "
)}

{Pause(1500)}

{if len(event.rewards) = 1:
{OneOf("Bounty voucher","Voucher","Bounty")} of {Humanise(event.reward)} credits received from {P(event.rewards[0].faction)}
|elif len(event.rewards) > 1:
{len(event.rewards)} {OneOf("Bounty vouchers","Vouchers","Bounties")} received for a total of {Humanise(event.reward)} credits
}
{if event.shared:
to share between yourself and your wing-mates
}.

{Pause(1500)}

{F("Damage check")}

Very nice. I've tweaked it to add a comment for when no bounty is awarded & to further increase the randomness of the responses. :)

{set insult to OneOf("scum", "scumbag", "fool", "scoundrel", "low-life", "loser", "villain", "excrement", "nasty piece of work", "baddie", "rascal", "scal-a-wag", "good-for-nothing", "ne'er-do-well", "crook", "slob", "second rate pilot")}
{set killdescription to OneOf("destroyed", "exterminated", "extinguished", "terminated", "brought to justice", "killed")}


{set shouldhavebeen1 to OneOf("a little", "")}
{set shouldhavebeen2 to OneOf("more respectful", "more humble", "less arrogant", "less overconfident", "less conceited", "faster", "better shielded", "better armed", "better prepared")}
{set shouldhavebeen to cat(shouldhavebeen1,shouldhavebeen2)}


{set oneofus to OneOf("You", "We")}
{set oneofus2 to OneOf("me", "us", "the commander")}
{set thethat to OneOf("The", "That")}
{set insultoptional to OneOf("you {insult}", "")}
{set insultoptionalfaction to OneOf("you {(event.faction)} {insult}", "")}
{set factionoptional to OneOf("{(event.faction)}", "")}


{Pause(3000)}
{OneOf(
"{oneofus} certainly punched that {insult}'s ticket.",
"{oneofus} just {killdescription} a ship of the {(event.faction)} fleet.",
"{oneofus} just {killdescription} some {factionoptional} {insult}.",
"Apology accepted {insultoptionalfaction}.",
"Apology denied {insultoptionalfaction}.",
"Superiority established {insultoptionalfaction}.",
"{thethat} {insult} should have been {shouldhavebeen}.",
"{thethat} {factionoptional} {insult} will have to float home.",
"{thethat} {factionoptional} {insult} just ejected.",
"{thethat} {factionoptional} ship has jettisoned an escape pod.",
"Those {(event.faction)} ships explode very nicely.",
"{(event.faction)}.. Don't send anymore of your {insult}s after {oneofus2}.",
"{factionoptional} escape pod detected.",
"{P(event.target)} {killdescription}.",
"{P(event.target)} will have to float home.",
"{P(event.target)} should have been {shouldhavebeen}.",
"{P(event.target)} has jettisoned an escape pod.",
"{P(event.target)}.. I hope your escape pod malfunctions {insultoptional}. ",
"{P(event.target)} I would insult you but nature did a better job.",
"",
)}


{Pause(1500)}


{if len(event.rewards) = 1:
{OneOf("Bounty voucher","Voucher","Bounty")} of {Humanise(event.reward)} credits
{OneOf("awarded", "received", "earned", "acquired", "collected")}
from {P(event.rewards[0].faction)}
|elif len(event.rewards) > 1:
{len(event.rewards)} {OneOf("Bounty vouchers","Vouchers","Bounties")}
{OneOf("awarded", "received", "earned", "acquired", "collected")}
for a total of {Humanise(event.reward)} credits
}


{if len(event.rewards) >= 1 && event.shared:
to share between yourself and your wing-mates
}.


{if len(event.rewards) = 0 || len(event.rewards) = "":
We didn't
{OneOf("get", "receive", "earn", "acquire", "gain", "collect")}
a
{OneOf("bounty voucher","voucher","bounty")}
for that kill.
}


{Pause(1500)}


{F("Damage check")}
 
Last edited:
Wow that's real cool..

Here is a new one I call it the "I don't like this station function"

I
{OneOf(
"don't like this station.",
"hate this place.",
"think you should turn the ship around and get out of here.",
"think this is an awful place.",
"think this place sucks."
)}

{F("Honorific")}

It's
{OneOf(
"dirty. It smells bad and It's buzzing with flies.",
"a stinking, disgusting Hell hole filled with lowlife scum.",
"full of low lifes and dodgy types.",
"a pigsty. ",
"nasty. it's plain real nasty."
)}

Those {system.faction}

{OneOf(
" don't care.",
" can't be bothered.",
" don't give a fig.",
" are so untrustworthy.",
" smell bad.",
" I don't like them at all.",
" i hate them, I really do."
)}

{if system.allegiance = "Federation":

They are just

{OneOf(
"the slaves of the Federation corporations. ",
"drones sent from the Federation.",
"the yes men of the Federation.",
"Federation dogs.",
"subservient to the Federation. "
)}

|elif system.allegiance = "Empire":

{OneOf(
"slaves from the ",
"toys of ",
"serfs from the ",
"the dreggs of the ",
"subservient to the "
)}

Empire.

}

That they can be trusted to

{OneOf(
" manage ",
" run ",
" look after ",
" oversee "
)}

a {station.model} station

{OneOf(
"is beyond belief.",
"is crazy.",
"just goes to show you what idiot fools the corporations are.",
"is insane.",
"is outrageus."
)}

{F("Honorific")} let's

{OneOf(
"get out of here, before we rott along with the rest of the inhabitants.",
"not dock here. It's bad news this place.",
"Just make it quick, we should not stay here any longer than we need to.",
"Hold our noses tightly shut to avoid the stench of this place.",
"just turn around and leave. While we still can."
)}


 
For the first one, your issue is probably that you also have the Undocked script running. This contains some sizeable pauses to avoid the background noises and speech. Your best bet is to disable the default Undocked script and write your own in VoiceAttack for whatever purposes you want.

No idea on the second one I'm afraid. Nothing looks immediately wrong; it's odd that it says the "at the sound of the tone" but not the time tone at the end, certainly.

Thanks! That makes perfect sense. I really appreciate the help.
 
I have a question about the commander variables for use in Voice Attack. In your VA instruction sheet, for the {INT:RANK rating} variable (where RANK is combat, trade, etc.), you state that the lowest rank is 0 and the highest, Elite, is 9. However, if you look at the progression, for example Combat:

0Harmless
1Mostly Harmless
2Novice
3Competent
4Expert
5Master
6Dangerous
7Deadly
8Elite

Elite counts out as 8, not 9. Is this an error in your instructions? Or, am I miscounting somehow. I currently cannot test it due to my highest rank being Tycoon in Exploration. Let me know, thanks!!
 
I have a question about the commander variables for use in Voice Attack. In your VA instruction sheet, for the {INT:RANK rating} variable (where RANK is combat, trade, etc.), you state that the lowest rank is 0 and the highest, Elite, is 9. However, if you look at the progression, for example Combat:

0Harmless
1Mostly Harmless
2Novice
3Competent
4Expert
5Master
6Dangerous
7Deadly
8Elite

Elite counts out as 8, not 9. Is this an error in your instructions? Or, am I miscounting somehow. I currently cannot test it due to my highest rank being Tycoon in Exploration. Let me know, thanks!!

github → link
Code:
..
 public static readonly CombatRating Elite = new CombatRating("Elite", 8, "Elite");
..
and
Code:
..
 public static readonly TradeRating Elite = new TradeRating("Elite", 8, "Elite");
..

main Journal.123456789876.01.log
Code:
..
{ "timestamp":"2016-11-27T17:13:47Z", "event":"Rank", "Combat":8, "Trade":8,../*← Elite*/

2 options:
error in the description ( {INT:Combat rating}: the combat rating of the commander, with 0 being Harmless and 9 being Elite ) link
for VA- numbered from 1 to 9, but then rank 0?

0Harmless1
1Mostly Harmless2
2Novice3
3Competent4
4Expert5
5Master6
6Dangerous7
7Deadly8
8Elite9

 
Status
Thread Closed: Not open for further replies.
Back
Top Bottom