Jump to content

Explosive weight vs explosive power in TNT math error in warheads.lua (2.5.6) carried over into 2.7?


PetRock

Recommended Posts

So just to begin, I started writing for this post in 2.5.6. With the release of 2.7, we have discovered that the warheads.lua file is now gone/hidden (and with a LOT of changes to the “Scripts” folder) and the values and formatting has been changed so drastically that we can no longer determine where or how the game engine gets the numerical data to crunch the values and make the explosions happen in 2.7 at this time. This may be a good thing if this is the beginning of the process to overhaul the legacy weapons data tables for the incoming new damage model from the WW2 side of the house. Where we are now concerned is that with how opaque the non-encrypted files are now, it is nigh impossible to see how the game engine works and/or what values change what. We fully understand that there have been serious concerns about piracy, but encrypting files just to obfuscate them is not something I can support - I really hope that is not the direction ED wants to go. Because we now can't see what's going on under the hood, I hope that the old 2.5.6 math values that prompted this post were not just carried over whole to 2.7 as I believe they do not take explosive weight vs. explosive power into effect. Recently there have been other inconsistencies brought to light in other parts of the data luas that are no longer visible:

 

We are going to do some more testing of 2.5.6 vs. 2.7 to see what has been changed per the changelog notes of:

 

“Weapons. Fixed Mk-81, Mk-82, GBU-27 and LUU-19 masses, fixed mass of numerous payloads with BRU-42 rack.”

 

When I have more information, I will update this post with what is found in our testing.

 

 @NineLine @BIGNEWY @Chizh, any information you could provide would be greatly appreciated and I hope that a lot the changes in 2.7 are just the first part of the process of moving to the more advanced damage model being pioneered on the WW2 side of the house. If nothing else, good luck on this endeavor - it will bring a lot of new depth to the game and I am one of the few who loves bringing home a damaged bird through good systems knowledge.

 

@Iron_physik since you expressed interest from the hoggit thread for when I posted this and also have better access to better primary sources on explosives.

 

FYI I wanted to have more sources to support the values we were seeing for the Mk-80s but with 2.7 coming out, I need to publish this now while we can still go back to 2.5.6 as needed to show our work of what we are finding.

 

Original post for 2.5.6 follows:

 

Before you read any further, I want all to know that this is not an attempt to diminish the hard work of the Eagle Dynamics team – the following is an observation from members of the DCS Hoggit and Operation Enduring Odyssey community that want to bring their observations to the development team in good faith to help them improve the game we all love so much. Bugs and/or errors happen and we are all human. There must be untold thousands of lines of code for DCS and this error has been missed; hiding in the forest of other things that need to be done.

 

During the development work for Hoggit: Syria at War (SAW), the devs noticed that there may be some significant inconsistencies, bugs, or typos in the warheads LUA file located at …DCSWorld/Scripts/Database/Weapons (in 2.5.6). I am bringing these findings to everyone’s attention because I believe it will be critical for the errors found here to be resolved during the development of the enhanced damage models that Eagle Dynamics is working on before it is rolled out to the rest of the sim. If not, due to how inconsistent some of the math/values or assumptions that are used, it may be difficult or impossible to get consistent weapons performance across all systems and platforms in a transparent and objective way in the new model.

 

This was discovered in the process of some of our members building a script to deal with the anemic performance of many of the “dumb iron” bombs, which will be heavily utilized on SAW due to the 80s era theme. It has been commented by the user base for a long time that the “FAB bombs seem to perform better than their Mk 80s series counterparts, but both are underpowered,” so that is where I started looking.

 

FAB Table:

warheads["FAB_100"] = simple_warhead(100.0); -- Explosive 45 kg + fragments bonus

warheads["FAB_250"] = simple_warhead(200.0); -- Explosive 100 kg + fragments bonus

warheads["FAB_500"] = simple_warhead(500.0); -- Explosive 200 kg + fragments bonus

warheads["FAB_1500"] = simple_warhead(1400.0); -- Explosive 700 kg + fragments bonus

 

Mk 80s Table:

warheads["Mk_81"] = simple_warhead(90.0); -- Explosive 45 kg + fragments bonus

warheads["Mk_82"] = simple_warhead(180.0); -- Explosive 89 kg + fragments bonus

warheads["Mk_83"] = simple_warhead(400.0); -- Explosive 202 kg + fragments bonus

warheads["Mk_84"] = simple_warhead(850.0); -- Explosive 428 kg + fragments bonus

 

From this field, we can see that most (if not all) of the general-purpose bombs use the “simple_warhead” script call for telling the DCS engine to “make this size explosion here” and from the “-- comments,” we can infer the meaning behind the #s value, which is the explosive content of the bomb in pounds. We know it’s the explosive content in pounds because various public documents support these approximate values as seen in the weapons.lua table. [1] [2]

 

With almost all bombs, the total weight of the bomb does not reflect the actual explosive power of the bomb. It is instead the weight and composition of the explosive filler, hereafter referred to as Nominal Explosive Weight (NEW).

Looking at the small section of the tables above, you will notice some math errors or incorrect values for NEW – the FAB-250/62 should have ~220lbs of NEW per sources which is not reflected in the data field – it’s short by about 20lbs[2]. Where this gets more complicated is that while most Russian sources list their bombs explosive power in equivalent TNT weight (it is much harder for a not Russian speaker like me to find data on their actual compounds and their relative potency in English language documents), US/NATO weapons are more accessible and they list the name and weight of the compound inside (NEW), so that that is where I continued my research into what the values were of what I was seeing in the warheads.lua table.

 

A lot of the explosive fillers that we know are used in US/NATO weapons are significantly more powerful than TNT for equivalent weight, and while the values of the NEW in the warheads table in DCS are approximately accurate, without factoring in their actual explosive power and instead using just their weight, they are robbing a lot of the explosive impact that these weapons should have.

 

Composition H6, which is the primary explosive filler for the Mk-80 weapons during the DCS timeframe setting has an equivalent explosivity to TNT of ~ 1:1.33 for weight. [3]

 

This means that for the Mk80 series the math should be: 

 

warheads["Mk_82"] = simple_warhead((180.0*1.33)=239.4);

 

Even using the values in the table instead of the public record values (197# NEW vs 180#) we are short ~ 60lbs of equivalent TNT weight for this bomb – a not insignificant amount (240 - 180 = 60).

 

 

Now where this gets compounded and where I think a lot of the community noticed that the Mk 80 series bombs “feel a bit wimpy” compared to their Russian counterparts, is this one line near the top of the warheads.lua:

 

local explosivePercent = 0.4

 

Yes that’s right – the explosive power of most “simple_warhead” explosion script calls are then multiplied by .4 (40%). Why this value is in the LUA is unknown to us; there are no comments associated with it, but it causes a significant compounding error when you factor in that the Mk-80s are undervalued on their explosive content twice vs. once for the FAB bombs as far as we can tell at this time.

 

(180*0.4) = 72 instead of (240*0.4) = 96. That’s 31% less explosive than it should be, even with the unknown .4 multiplier reason (and there could be a very good reason for it), but because of the compounding math error, we are getting 40% of 69% of what should be there (27.6%) instead of 40% across the board.

 

When we became aware of this error, some quick testing was done by some of the OEO group @instigator and @VMFA-169 | wheelyjoe by calling for a “simple_warhead” explosion in the Mission Editor of the correct size accounting for the .4 multiplier and proper explosive equivalent value and we saw much more realistic and expected effects on appropriate targets, all without any major changes or work around the existing damage modeling. That doesn’t mean that there isn’t still a lot of stuff missing in the DCS damage model, fragmentation and other effects are still missing. However, we believe that player satisfaction will be much better with these adjusted values because we will have much more believable effects on our targets.

 

Bringing this all up to ED’s and now everyone else’s attention, it’s up to ED on what they want to do about it. We would be more than happy to explain in more detail what our observations are and how we came to the conclusions that we did and share our suggestions, but it is clear that a lot of the weapons tables, and warheads in particular, need a normalization and QC pass before it can undermine the new damage model that is being worked on for the rest of DCS.

 

In closing I want to thank the advanced LUA code-fu experts from the Operation Enduring Odyssey community @instigator and @VMFA-169 | wheelyjoe, and from the Hoggit Discord @Amloris, @Froggy 2-2 | Leltch, and @Arctic Fox (Rose 1-2) for helping me wrap my non-coder brain around what I was seeing in the LUAs (when I should have been asleep) and frankly doing all the real heavy lifting on finding and confirming our suspicions through testing. My small part in this is just trying to put our findings into words that hopefully everyone can understand while they continue the hard work of building kickass missions for the multiplayer community of DCS.

 

References:

[1] "http://www.designation-systems.net/usmilav/asetds/u-b.html," 4th February 2007. [Online]. Available: https://web.archive.org/web/20070204002314/http://www.designation-systems.net/usmilav/asetds/u-b.html#_BLU. [Accessed 2021].

[2] "WeaponSystems.net," [Online]. Available: https://weaponsystems.net/system/870-FAB+M62. [Accessed 2021].

[3] Wikipedia, "TNT equivalent," [Online]. Available: https://en.wikipedia.org/wiki/TNT_equivalent. [Accessed 2021].

 

 

 


Edited by PetRock
words
  • Like 2
  • Thanks 12
Link to comment
Share on other sites

grafik.png

Bombs MK.80 series:

grafik.png

grafik.png

grafik.png

grafik.png

 

 

Bombs old series:

grafik.png

grafik.png

grafik.png

grafik.png

grafik.png

grafik.png

grafik.png

grafik.png

 

To prove the source below is 100% public (rule 1.16) here the link to it uploaded to wikipedia by the US army:

 

https://commons.wikimedia.org/w/index.php?title=File%3ATm_9_1300_214_U_S_Military_Explosives.pdf&page=314

 

grafik.png

 

Average RE factors of all explosives underlined in %

 

TNT: 1

Amatol: 99,4

Comp B: 130

Comp H6: 128

Tritonal: 120,5


Edited by Iron_physik
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

18 minutes ago, NineLine said:

Thanks guys, I will highlight this issue with the team.

Thank you. I know this isn't going to be super high on the list of things that need to be done right now, especially with the 2.7 roll out, but if there is anything more we can provide or explain, we would be happy to help as able.


Edited by PetRock
words
Link to comment
Share on other sites

2 minutes ago, PetRock said:

we would be happy to help as able.

+1

 

I've got more docs on US weapons warheads

 

 

weapons I have primary sources on:

 

  • 127mm HVAR
  • 127mm Zuni
  • 70mm FFAR
  • 70mm Hydra
  • AIM-9 family
  • AIM-7 family
  • more Bombs
  • Gun projectiles of pretty much any caliber you can think of (.50 to 406mm Naval projectiles)
  • and more miscelanous data

 

I also got some data on some non US weapons

 

Some german bombs and projectiles for example.

Link to comment
Share on other sites

  • ED Team

The official response to hiding the LUA files is due to multiplayer cheating. 

 

That said, I understand that some of you guys have been using this to fix issues that have been waiting for official fixes for a long time. Please PM me with a link to any issue (proper report on the forums), weapon related your things is wrong, and needs fixing ASAP, and I will make sure they are reported or responded to as fast as we can.

 

Thanks.

  • Thanks 3

64Sig.png
Forum RulesMy YouTube • My Discord - NineLine#0440• **How to Report a Bug**

1146563203_makefg(6).png.82dab0a01be3a361522f3fff75916ba4.png  80141746_makefg(1).png.6fa028f2fe35222644e87c786da1fabb.png  28661714_makefg(2).png.b3816386a8f83b0cceab6cb43ae2477e.png  389390805_makefg(3).png.bca83a238dd2aaf235ea3ce2873b55bc.png  216757889_makefg(4).png.35cb826069cdae5c1a164a94deaff377.png  1359338181_makefg(5).png.e6135dea01fa097e5d841ee5fb3c2dc5.png

Link to comment
Share on other sites

40 minutes ago, NineLine said:

The official response to hiding the LUA files is due to multiplayer cheating. 

that makes little to no sense considering that most servers run the integrity check so that people cant modify their main files to gain a advantage with explosive power of bombs for example. a integrity check that even jumps to false alerts at minor changes in texture files.

 

I will be brutally honest

it currently sounds more like a bad excuse than a valid reason, so can you specify what is meant by "multiplayer cheating"

 

40 minutes ago, NineLine said:

Please PM me with a ling to any issue (proper report on the forums), weapon related your things is wrong, and needs fixing ASAP, and I will make sure they are reported or responded to as fast as we can.

 

How do you think this will work?

 

if we cant check the Lua to see if something wrong, then how are we supposed to report it without prior knowledge of things being wrong or not?

 

 


Edited by Iron_physik
  • Like 4
  • Thanks 3
Link to comment
Share on other sites

This does seem like it will degrade future bug reports, and prevent user made fixes from sanity checking their own modeling. 

 

I look at things like this in the stock DCS weapons modeling: https://gfycat.com/genuinerealisticblacklab

Where a 2,000lb bomb with 900-1000lb of explosive material only destroys the object it directly impacts and its just to obviously wrong  (it didn't even scratch the AA truck 6 feet away across the street!).  If its going to be made even harder for users/servers to generate their own fixes around this poor modeling then it absolutely needs to be fixed in base game DCS, for the sake of everyone.  The data on MK-XX bomb series is very publicly available (hell it was linked above) and provides the base warhead for like 50%+ of the A/G weapons in game, that would be a good place to start. 


Edited by Alesia_Aisela
Link to comment
Share on other sites

Just looking at the server list available on the website here, there are only 134 servers that have more than 1 player at the time of this writing (assuming all servers are dedicated, so ones with 3+/XX player counts). Many are password protected and have integrity check enabled (two methods to restrict behavior deemed unwelcome by the server administrators).

 

Don't get me wrong, I would love to see the multiplayer community an order of magnitude larger; cracking down on user modifications that enhance enjoyment isn't a good strategy.


Edited by Arbitrary
clarifying server count
Link to comment
Share on other sites

13 minutes ago, NineLine said:

All I can say is there are cheats beyond the knowledge of the common player, and protecting these things can make sure that MP is kept in check, I will pass long concerns though.

The thing is, the way to fix that is to make sure it is caught by IC, and no offence to the mainly-MP segment (I'm part of that) but… it's not actually all that important on the scale of things to begin with. This explanation sounds an awful lot like fixing breaking a critically important ability to fix the game for a huge number of players just to fail to address an issue that affects very few, if any at all.

 

It is not only completely out of proportion, but it does far more harm than anything, and in particular, it doesn't actually fix the thing it is supposed to fix.

It only breaks things — for us players and for you, the developers. That doesn't really seem like a very… you know… good idea.


Edited by Tippis
  • Like 9

❧ ❧ Inside you are two wolves. One cannot land; the other shoots friendlies. You are a Goon. ❧ ❧

Link to comment
Share on other sites

On 4/19/2021 at 1:54 PM, NineLine said:

The official response to hiding the LUA files is due to multiplayer cheating. 

 

That said, I understand that some of you guys have been using this to fix issues that have been waiting for official fixes for a long time. Please PM me with a link to any issue (proper report on the forums), weapon related your things is wrong, and needs fixing ASAP, and I will make sure they are reported or responded to as fast as we can.

 

Thanks.

 

Hello 9L,

 

Well I can't say that this news isn't incredibly disappointing. I know cheating is an arms race and getting into the nitty gritty of what vector the cheating was using could reveal more options/openings for other attacks. However, as others have pointed out, modifying these files already triggered an Integrity Check failure which for the general user base should be what catches people trying to unfairly adjust stuff. I can't speak to how DCS works inside the already encrypted side, but to me, the clearly better solution would be making the existing Integrity Check system more advanced/effective, especially for the mod community, rather than blanket encrypting/obfuscating more of the code.

 

I am not being hyperbolic when I say this approach is going to kill the mod community in DCS - full stop. This approach is far and away one of the most restrictive stances compared to the rest of the industry, even in our niche of flight sims. The A-4E Community Mod could not have been created under the 2.7 encryption scope. The F-5 RWR would still be broken, even if you wanted to play single player and were willing to take the IC bust. The list of things that would be completely broken without the user community being able to even implement their own fixes while awaiting an official fix would be too long to list here. I don't enjoy saying this at all, but the de-facto stance now is that ED does not support modding and will only accept bug fixes that can be submitted via trackfiles.

 

Regardless, I still have 2 questions that need to be answered:

 

1: is the numerical value in this line of code in the warheads.lua supposed to be TNT in lbs? (underlined/bolded) If not, what does it stand for and how was it derived?

warheads["Mk_81"] = simple_warhead(90.0); -- Explosive 45 kg + fragments bonus

 

2: are these values still present in 2.7 and will there be a review of these values if they are in fact TNT in lbs?


Edited by PetRock
words
  • Like 5
Link to comment
Share on other sites

Is there anyway that ED could host the database files where it is externally accessible in such a way that it cannot interact with the game but that we still have visibility into the structure and values? Something like GitHub or ED hosted site?

 

Reiterating what others have pointed out, losing visibility into the values and structure of those files is crippling to modding and trying to troubleshoot potential bugs. I'm far more concerned about the latter than any impact potential cheaters could have. 

  • Like 6
Link to comment
Share on other sites

I'll also step in and say hiding all the lua files is a poor move that's going to kill a modding community that's only just now starting to come out with good, complex content that improves the base game.

 

Harnessing your playerbase to make quality content for you, especially in niche and technically complex genres like flight sims is part of how you do good community management and keep your players invested and coming back to buy more modules. If you lock away all the lua that defines the systems and objects in the game you're never going to get another High Digit Sams, splash damage mod, SRS, french pack, etc.

 

Modders add value to your game and drive more sales, don't lock them out. Find a better way to address the cheating concerns, because as it stands you always have the option to go back to hiding everything if cheating *does* become a problem, but to do it prematurely without anyone complaining about it is just burning goodwill with the community for no gain.

  • Like 12
Link to comment
Share on other sites

The 'prevent cheating' angle is a cover story. Nobody's buying that. It's to stop people going into the lua's and fixing DCS patch after patch. Some of the best updates to DCS have come from modders, not ED. Encrypting files hastens the demise of DCS. 

  • Like 7

Intel i5-8600k | EVGA RTX 3070 | Windows 10 | 32GB RAM @3600 MHz | 500 GB Samsung 850 SSD

Link to comment
Share on other sites

I just don’t understand how encrypting the game files will “prevent cheating” when integrity check triggers at the smallest change in the core game files. There is obviously some other motive behind ED’s decision. This move only hurts the modding community and hurts DCS as a whole. With these new changes, it seriously inhibits the modding community and restricts the scope of mods. I personally use many mods such as high digit sams and the A-4E mod and know a few members of the modding community and this change only sets out to prevent new mods like these from being created and possibly even making mods unusable at some point in the future.


Sent from my iPhone using Tapatalk

  • Like 2
Link to comment
Share on other sites

On 4/20/2021 at 3:59 AM, NineLine said:

All I can say is there are cheats beyond the knowledge of the common player, and protecting these things can make sure that MP is kept in check, I will pass long concerns though.

 

How is it to prevent cheating when lots of the simulation code is ran client side? It's absolutely trivial to inject a dll and start messing around with the client side simulation.


Edited by JNelson
  • Like 4
Link to comment
Share on other sites

  • ED Team

I know it's not gonna be the answer you want, but right now this is what we have decided is the best for DCS going forward. I will talk to the team about concerns as far as modding and bug reporting. Sorry guys.

I have asked for:

  1. Modding use, another solution to work with this
  2. being able to see the values some other way or form for testing

Our intent certainly isn't to stop modding or hide mistakes, I can understand some jumping to that, but I promise, it's not about that.

  • Like 1
  • Thanks 2

64Sig.png
Forum RulesMy YouTube • My Discord - NineLine#0440• **How to Report a Bug**

1146563203_makefg(6).png.82dab0a01be3a361522f3fff75916ba4.png  80141746_makefg(1).png.6fa028f2fe35222644e87c786da1fabb.png  28661714_makefg(2).png.b3816386a8f83b0cceab6cb43ae2477e.png  389390805_makefg(3).png.bca83a238dd2aaf235ea3ce2873b55bc.png  216757889_makefg(4).png.35cb826069cdae5c1a164a94deaff377.png  1359338181_makefg(5).png.e6135dea01fa097e5d841ee5fb3c2dc5.png

Link to comment
Share on other sites

On 4/19/2021 at 3:54 PM, NineLine said:

fix issues that have been waiting for official fixes for a long time.

The problem is that we arent just using this to fix issues. Being a PvP player, I never use it for that actually, as it breaks IC (although I understand that a lot of people do use it for that and I totally understand). In fact, id say overall, thats in many cases secondary to the fact that we use them to find the issues in the first place. Doing this makes bug reports incredibly hard. In addition, from personal experience (and im sure countless PvP squadrons would agree), the missile files specifically were very useful to find out how the missiles work. Whats the seeker FoV? What is the motor burn profile? What is the seeker LOS rate? And so on. These values are incredibly helpful. We can also modify them and see the effect in game so we can get a better idea of how this stuff works. Same for the warheard etc values for those doing A2G stuff. Has MP cheating really been that much of a problem to warrant this?

As near_blind suggested above, making even a simple way to view the files, perhaps an in-game "database" that you can view like the encyclopedia, without them having an effect on game is much better than just hiding them like this.


Edited by dundun92
  • Like 7
  • Thanks 1

Eagle Enthusiast, Fresco Fan. Patiently waiting for the F-15E. Clicky F-15C when?

HP Z400 Workstation

Intel Xeon W3680 (i7-980X) OC'd to 4.0 GHz, EVGA GTX 1060 6GB SSC Gaming, 24 GB DDR3 RAM, 500GB Crucial MX500 SSD. Thrustmaster T16000M FCS HOTAS, DIY opentrack head-tracking. I upload DCS videos here https://www.youtube.com/channel/UC0-7L3Z5nJ-QUX5M7Dh1pGg

 

Link to comment
Share on other sites

7 hours ago, NineLine said:

I know it's not gonna be the answer you want, but right now this is what we have decided is the best for DCS going forward. I will talk to the team about concerns as far as modding and bug reporting. Sorry guys.

I have asked for:

  1. Modding use, another solution to work with this
  2. being able to see the values some other way or form for testing

Our intent certainly isn't to stop modding or hide mistakes, I can understand some jumping to that, but I promise, it's not about that.

I think the problem everyone has is that there are more people talking about modding and how to mod the game than there have been discussions concerning cheaters (that this decision would actually stop) by probably an order of magnitude. If this is some decision being driven because of something in the russian, chinese, etc. communities that we're not seeing, communicate that to us. As it stands we're given an explanation that makes little sense with no detail, which feels like the old ED's shitty community management rather than the new approach we've all come to love. Sell us on why this is something that's necessary.


Edited by Hextopia
mobile
  • Like 1
Link to comment
Share on other sites

8 hours ago, NineLine said:

I can understand some jumping to that, but I promise, it's not about that.

oh ffs

 

Then how about telling us what it is about instead of hiding behind a "iTS nOt ABuOt THat!" or a "MUltIPlayEr ChEaTiNg".

 

 

 

So far all we got was some lame excuses and trying to hide behind reasons that are highly unbelievable at best

so please, for once

be transparant and give us the full line of reasoning behind that change that screws so many of us over so badly.

I mean at least have the courtesy to take us out for dinner before considering to fiffle with our butts like that.

 

 


Edited by Iron_physik
  • Like 2
Link to comment
Share on other sites

8 hours ago, NineLine said:

I know it's not gonna be the answer you want, but right now this is what we have decided is the best for DCS going forward. I will talk to the team about concerns as far as modding and bug reporting. Sorry guys.

I have asked for:

  1. Modding use, another solution to work with this
  2. being able to see the values some other way or form for testing

Our intent certainly isn't to stop modding or hide mistakes, I can understand some jumping to that, but I promise, it's not about that.

>Our intent certainly isn't to stop modding or hide mistakes, I can understand some jumping to that, but I promise, it's not about that.

 

While I don't want to jump to that... the hell else are you doing? If you've found other issues fix them. Don't go and hide (known broken) values with the aim of "fixing cheating". You have a total of 1975 players online, 1136 of those are server bots, leaving just over 800 players. The top 157 of those are in the top 5 severs, none of which are PvP, meaning cheating is effectively menaingless.

In the nicest way possible how the fuck is hiding those values for the good of the communuity? Between liberation (using my weapon damage fix) with 430 online members, PGaW and SaW from Hoggit (a total of 6700 online members) all using my shitty damage fix script there are likely more players using my half assed fix (from an engineer come aviator) than there are being "saved" from cheating.

 

I see nothing having been done here to do anything but hurt the community and drive more away. These are the things that keep people playing the near-30-year-old-sim desipte DCS having a lions share of a small community and will drive them away the second an alterative is available.

  • Like 7
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...