Heroes of Might and Magic Community
please log in.! Register | Today's Posts | Search! | FAQ/Rules | AvatarList | MemberList | Profile

<a href="http://www.game-advertising-online.com/" target=_blank>Game Advertising Online</a><br> banner requires iframes

Heroes 1 (Heroes 2 (Heroes 3 (Heroes 4 (Heroes 5 (Heroes 6 ()

Login:     Username:     Password:    
Heroes Community > Heroes 3.5 - WoG and Beyond > Thread: ERA scripts debugging and fixing
Thread: ERA scripts debugging and fixing [ This thread is 5 pages long: 1 2 (3) 4 5 ]
JimV
JimV


Responsible
Supreme Hero
posted May 08, 2012 12:31 PM
Edited by JimV at 13:37, 08 May 2012.

Thanks, Salamandre, I will try it.  My guess is that it is the total number of objects, and note that it doesn't happen under WoG 3.58f.  I was going to do several tests with various limits on the number of Garrisons added to the map, but finding a Garrisons script limit for one map would not necessarily work for all maps (due to creature spawning or other scripts).

Bug Report #4 (Den of Thieves) - this sounds like the same problem reported previously, which the correction to HE:A3 might fix.

Bug Report #5 (Halfling Dwellings/Neutral Towns) - I don't understand exactly what the problem is, but may after I do some testing.  (Note - no saved games were available for Bugs 5-7.)

Bug Report #6 (Dead War Machines without valid sprites) - I have seen similar things in TDS, caused by scripts which change creature type (BM:T) and don't change it back at the end of a battle.  So it should be fixable but I haven't worked on it yet.

Bug Report #7 (Scouting Events rarely occur) - 30 wog enhanced secondary skills has script code such as this:

...
!!VRy4:S0;                                    [set to 0]
!!VRy4&x1=1:R1199;                            [set random roll to 1.0% (12/1200)]
!!VRy4&x1=2:R799;                             [set random roll to 1.5% (12/800)]
!!VRy4&x1=3:R599;                             [set random roll to 2.0% (12/600)]
!!IFv7020&1000/y4=1:Q2/20/y3/1/z148023;
!!IFv7020&1000/y4=1:Q2/35/20/1^^;
!!HEv7020&y4=1:Id+20;                         [give 20 spell points]
!!IFv7020&1000/y4=2:Q2/20/y3/1/z148024;
...
Note the IFv7020 syntax, which I don't recognize.  I suspect a copy-and-paste error from the !!HEv7020 commands (or maybe it is new WoG 3.59 syntax?).  I did an edit/replace to change IFv7020 to IF (which affected both the Scouting and the Estates scripts), and now I get about a 2% hit rate for (Expert) Scouting events.

Update - Tried
!#UN:C4892718/1/183; 65000 objects allowed
This still gives a crash on re-loading a saved game, but a different sort of crash (Microsoft Visual C++ Runtime Error, Abnormal Termination).  The crash only happens with "tons" of Garrisons added, though.

Further Update - Actually, I think the new type of crash is due to the new Era.dll, which crashes differently than the one with which I started Garrison testing.  I think the UN:C command made no difference, in this case.

As a tentative fix, I have added a limit to the number of Garrisons which will be added:

(circa line 199)
!?FU10854;

!!VRv5:+1; [Add one to v5 frequency counter]

!!VRy1:S0 R2; [y1=0 to 2]
!!VRy2&y1<2:S0; [Standard Garrison]
!!VRy2&y1=2:S1; [Anti-magic Garrison]
!!VRy3&y1<2:Sx4; [Standard Garrison]
!!VRy3&y1=2:Sx4 +1; [Anti-magic Garrison]

[Place garrison if a valid space is found and depending]
[on v6 frequency variable: a higher value=less frequent (1=always place)]
!!UN&v5>=v6/v10<200:Ix1/x2/x3/33/y2/33/y3/-1/0; added 200 limit--JHV
!!VRv10&v5>=v6/v10<200:+1; count added Garrisons--JHV
!!VRv5&v5=v8:S0; [Reset frequency counter]

(at end of Garrisons script)
!#VRv10:S0; [Set v10 counter to 0--JHV]
!#DO10850/2/v1/1&v9=1/v7>1:P0;      [Do surface]
!#DO10850/2/v1/1&v2=1/v9=1/v7>1:P1; [Do underground if it has one]
!#IF:M^No. of Garrisons added = %V10.^; --JHV

Without this limit, the script adds 275 Garrisons to the random map (of the "1_Red_Quick" saved game).  I first set the limit to 250, and this did not crash on re-load.  I currently have the limit set to 200, to provide some margin for even larger (more surface area with more objects) maps.

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
Bersy
Bersy


Responsible
Supreme Hero
posted May 08, 2012 02:15 PM

Thanks for solution.

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
JimV
JimV


Responsible
Supreme Hero
posted May 10, 2012 01:13 PM
Edited by JimV at 13:14, 10 May 2012.

Bug Report #5 - after some testing of the Neutral Towns option under Era II and WoG 3.58f, I am still not completely sure what the issue is, but I noticed that the sequence of random numbers which is used to determine whether a Magic Garden (Fairies) will be converted to a Thatched Hut (Halfings) or Rogue Cave usually starts with a long series of numbers (about 15) which will produce Halfings instead of Rogues.  After that, the numbers change in favor of upgraded dwellings, but since Magic Gardens are done first, often no Rogue Caves are made.  I have added some code to use a time-based random value (VR:T) to randomize the start of the VR:R sequence, and with four Magic Gardens I now usually get three Thatched Huts and one Rogue Cave, which is the percentage which the script is aiming for.

All changed scripts so far are in "Era 2 WoG Script Updates.zip", in the XFiles folder here: https://www.box.com/s/1n069e3vc5vixc8l1zk5 .

(The ERM scripts should be extracted into Mods/WoG/Data/s.)

Summary of changes:

Neutral Towns - randomized the starting point of the sequence of random numbers which are used to determine whether a Neutral Town (Conflux) external dwelling will contain upgraded or non-upgraded creatures.

Enhanced Secondary Skills - replaced !!IFv7020 commands with !!IF commands.  This seems to restore the standard percentage of Scouting bonus events.

Garrisons - added a limit on the total number of added Garrisons (200).  A random map with 275 added Garrisons would crash when re-loaded.  Adding the limit stopped the crashing.

Random Heroes - the check for whether a candidate for a Random Hero already exists on the map in a Prison causes an error message in the rare case that the map contains an empty prison.  As suggested by Bersy, code was added to disable error messages when performing this check.

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
Bersy
Bersy


Responsible
Supreme Hero
posted May 10, 2012 02:47 PM

Thank you very much Jim. I will use these fixes in the next release. I hope it will be a bit more stable than the previous one.

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
JimV
JimV


Responsible
Supreme Hero
posted May 10, 2012 03:57 PM

I have two final (I think) comments on this round of updates:

1) I have tested removing the Angelic Alliance, the Cornucopia, and the Orb of Vulnerability with HE:A3.  As I suspected, the only bonuses which are not removed when these artifacts are removed are Primary Skill bonuses.  That is, Prayer is no longer cast at the start of a combat, resources are not added daily, and Dragons are immune to Curse.  However the PS bonuses of the AA are still active, and all the slots which the AA locks are still locked.  Due to the types of artifacts given by the Tavern Card game (pendants only, not including those with PS bonuses), this means HE:A3 can be used safely in that script.  I assume this is also true in other WoG scripts which use HE:A3.

2) Re Bug report #6 (Dead war machines are displayed as stroked pikeman in post-battle info): I am sure this comes from Enhanced War Machines II, because that script turns Catapults into Unused Creature type 124; however in my tests so far I have not reproduced the error, because the script (usually) changes the stacks back into Catapults before the end of the battle.  This slight glitch can be eliminated by the following small mod:  modify CPRSMALL.def by copying frame CPrS145M (the Catapult) onto frame CPrS124.  Note that this has already been done (by the WoG Team?) in TWCRPORT.def.

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
majaczek
majaczek


Famous Hero
Work at Magic Dimmension
posted May 10, 2012 05:42 PM
Edited by majaczek at 17:43, 10 May 2012.

So war machines II are incompatible with mods which adds creature under this number?
Terry Prachets Mod already replaces all "unused" creatures, and I also want to do it in one of my future mods before I'll resort to Amethyst.
I already plan in further future to cover creature indexes up to 255 (fixme: is hardcoded limit by variable type 65535 rather than 255?) So I perhaps have to resort using "unused" slots like normal creatures.
Yeah modders can probably avoid this one and use remaining three, but is there any easy way to free the usage of this creature type in this script? For example store position of the catapult in a variable (SN:W one? Or unclaimed v-variable?} And check for it alive (not destroyed)... Also another scripts just use magog creature type for catapult as a marker but I fear WM II does some check for this creature number....
If it can be done - great. If not users of those mods need to select WM I or WM III instead. Did you checked  any results with having normal creature with the number (it need the BAD-something def added)? I wonder if this trick in WM II can produce any problems separately from wrong graphics....

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
JimV
JimV


Responsible
Supreme Hero
posted May 10, 2012 07:32 PM

Use of creature #124 to turn a Catapult (#145) into another shooting machine is convenient and efficient in that properties are set once, using !#MA:x124 and !#EA124:B commands, and then simply switching the stack's creature type with BM:T is all that is necessary in combat.  However, the same switch could be done directly to the stack in battle, by calling functions which set or reset the stack properties using BM(stack) and EA(-stack-1) commands instead.

The problem, if any, would be if some of the Catapult special properties are hard-coded, similar to the Santa Gremlin's spell-casting ability, or the Magog's Fireball shots.  (Both the SG and Magog creature types are also used in War Machines scripts.)  This might be the reason that the WoG Team chose to use a different creature (124) to turn the Catapult into a shooter.

I can think of at least one special ability a Catapult has which cannot be removed by MA:X or EA:B:  immunity to Implosion.  There may be others.  Such abilties might or might not conflict with the use of a Catapult as a shooter.  Also, there might be UN:C hacks to fix prevent such problems.

So I think eliminating the use of #124 by War Machines II might be feasible, but has enough possible complications to be a bit beyond the scope I had in mind when I said script feature changes (as well as bug fixes) could be considered here.  (E.g., changing the Hell Barons speed increase from +30 to +10 in the Enhanced Monsters script is the sort of thing I had in mind, at least until I get a chance to finish the map/mod I was working on.)



 




 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
Bersy
Bersy


Responsible
Supreme Hero
posted May 11, 2012 03:18 AM
Edited by Bersy at 10:10, 11 May 2012.

Jim is right. We all have custom projects and real life tasks, so this topic is typically for fixing scripts, not improving.

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
majaczek
majaczek


Famous Hero
Work at Magic Dimmension
posted May 11, 2012 10:18 AM

Okay - I should avoid creID 143 or state that WM II is not compatible (or just write a fix myself). However  I still don't know what bugs would happen if WM II Catapult is used together with normal cre143 creatures in battle (could script affect the stack instead of catapult? Delete it after battle, change to catapults or change their properties?).
Ranged Sphere attack is already a flag, but shoot animation is hardcoded (but fixable with known UN:C code).
How already changing creid in battle works? Would it have to be switched back before battle ends (not changing it would make it permanent?)? Would it affect anything but hardcoded bonuses? It seems only way to acquire hardcoded-only abilities of another creatures (death stare, 3headed attack instead of all around, some spell immunities etc.)?
Also there would go tweak fix by mine about the two school-type WoG objects to check for unlimited SS and don't apply penalties with over-limit SS count if binary patc enabled (I would do if I would sit again on H3 scripts but it's indeed trivial to do)...

Any comments on merged_SU? I already know much of it have to be redone after ERA script fixes, but I would be happy about finding any ERA-SU inconsistencies in current form ... Currently it's just merge of code, one variable inconsistence fixed (where ERA got rid of minus y-var), one function conflict resolved and seems nothing more... I would be happy to provide stable ERA-SU hybrid since I intend to use it as base for mods and some SU features are crucial for playing (non-SU castle upgrades are balance mess, and SU ones are acceptable for example)... I would accept any help on it if anybody wants to help. I mostly mean bugs and mistakes in merging the code since on post-SU features I may work myself. Anyway  ANY help welcome.
PS: is it considered to use SN variables in fixed scripts? It would help to not claim more V-variables.
PPS: which SN:M slots are already claimed/used? I may want to reserve some slot for my use (to have indexed set of variables without messing with new v-indexes and without having overhead of string per variable associated with SN:W)...
PPPS: any porting of MoP works in near future?

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
Bersy
Bersy


Responsible
Supreme Hero
posted May 11, 2012 11:01 AM

Quote:
Any comments on merged_SU?

Yes. After Era 2.2 release one will have to test all the scripts in real game. I could ask SyDr probably (he already did it), but integrate Jim's fixes at first to be sure SU is up-to-date.

Quote:
PS: is it considered to use SN variables in fixed scripts? It would help to not claim more V-variables.

SN:W for single global variables and slot IDs, SN:M for arrays of data.

Quote:
PPS: which SN:M slots are already claimed/used? I may want to reserve some slot for my use (to have indexed set of variables without messing with new v-indexes and without having overhead of string per variable associated with SN:W)...

I didn't use any SN:M in basic package scripts. In fact, I prefer to allocate new slot at game start and save its ID in SN:W.

!?PI;
!!SN:M-1/100500/0/1 W^Bersy.HugeArr^/v1;

!?CM0;
!!SN:W^Bersy.HugeArr^/?y1 My1/100000/?y2;
!!IF:M^The 100001-th value is %Y2^;


Quote:
PPPS: any porting of MoP works in near future?

Seems never because:
-) MoP does everything that you could not port anything: custom closed formats, private code, direct assembler changes in exe, changing exe sections, private memory patches, private new language, private research results.
-) From the next version MoP does not use ERM/Era at all (Flat Assembler is used instead)

How do you think is it possible to port anything?

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
JimV
JimV


Responsible
Supreme Hero
posted May 11, 2012 11:12 AM
Edited by JimV at 11:17, 11 May 2012.

My opinions (worth in general what was paid for them):

Changing battle-stack creature-type was a powerful tool for the WoG Team scripters, who did not have UN:C and could not have applied it widely if they had due to memory protection.

If a changed battle-stack is not changed back to its original creature type when a battle ends, two glitches can result:

1) If the stack has been killed, the changed creature-type is used to find the icon to represent it in the summary screen - as was the case for Bug Report #6.

2) If the stack survives the battle, and if it is assigned to one of the winning Hero's troop slots, that troop slot will contain the changed creature type (not the original creature) after the battle.

Both these glitches have occurred in versions of "The Dragon Slaughter", but they are fixable and have been fixed in TDS.  (Mainly in the Henchman and Second Henchman scripts.)

Regarding the WoG Team's Script Update - see my comments in the TDS thread for details of my position which I will summarize as:  worthwhile, but too much duplication of effort to interest me since these days I spend more time making custom maps than playing random wogified maps.  If people report bugs with them and provide enough information so that I can understand the problem (the best way is to provide a saved game which reproduces the problem), I will investigate those cases when I have time - if someone with more talent and/or energy does not do so first.

P.S. As usual since I am a slow proof-reader, I did not see Bersy's post before submitting mine, and this was a (partial) reply to the previous post.

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
majaczek
majaczek


Famous Hero
Work at Magic Dimmension
posted May 11, 2012 02:55 PM

So we have to wait for ERA 2.2 release to look at merged_SU. Fair enough since the task is more prioritary and we already want to fixes you do reimported to merged_SU.

So only way of getting MoP fixes and features is MoP curiosity? Well if he didn't portback some features to ERA we always can ask for help if some of us (ie. Bersy) wants to maintain backporting provided he/she would get important info from the person.

@Changing creature type
Are you sure these are only glitches done by changing creature type? What about experience won? Any other changes to the creature with changed type in battle? i.e. something stack experience related or another ERM commands related?

Also I asked this in context of WM II script, so for example does the script assert the catapult is only creature with creID 143 assigned ?  

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
JimV
JimV


Responsible
Supreme Hero
posted May 11, 2012 04:17 PM

Creature experience is a good point.  However, note that experience is saved (outside of battles) by creature location (Hero troop slot, Garrison troop slot, Mine guard slot), not by creature number.  (See the EX receiver in ERM Help.)  In any case, as long as the original creature type is restored by the end of the battle, there is no glitch (that I know of).

Catapults are changed to Unused Creature #124 in WM II.  In WM I, they are changed to Magogs.  First Aid Tents are changed to Santa Gremlins so they can cast Resurrection in one or both scripts.

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
majaczek
majaczek


Famous Hero
Work at Magic Dimmension
posted May 11, 2012 07:48 PM
Edited by majaczek at 19:50, 11 May 2012.

Some of Stack Experience elements may work inside battles (mostly EA commands with negative indexes but i don't know about others).
By gained experience I mostly mentioned if slayed creature hasn't changed type back would it produce exp value of the original creature or those of type were changed (and if it is not dependent on creid at all how it works if stats of creature slayed is changed during battle).

Changing Tents to Santa Gremlins is bad idea since ERM help mentions you should change spell to one of similair type or AI won't know how to use it (SG use damage spell while ressurection is support spell) so the script really confudes AI (but ressurection casting may indeed be better than applying script fix after healing action as the latter would produce "heal" stacks not targetable for ressurection).
I don't know if it fit here but anybody tried adding flags and/or experience lines for creid assigned for ordinary war machines? I may intend to try write another war machine script using this features (however catapult would need assigned shooting projectile and I don't know if catapulting one count as such) - area attack is already a flag and spell cast after/before attack could be done via SE. But even if I would base the script on WM I which I probably do for leveling mechanism there's more abilities to check (and we can provide for example simple SE lines and tweak catapult SE level according to balistics and some other factor) - still giving all around attack for catapult once retaliation is fixed is interesting idea and doing santa guards for catapult seems funny (btw. How santa guards entries work? Especially the upgraded guard type one and creature chosen - is it able to support specific creature type independently of hero class or at least provide level 2+ creature?).
Any interesting ideas to improove the leveled or not ammo cart? (I need to sit and write some program or script because I lastly much think about writing a script for H3 while failing to sit to work at my university project of programming - i should do at least one of soon).

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
JimV
JimV


Responsible
Supreme Hero
posted May 14, 2012 07:42 PM

Possible Bug #8 or 9: missing characters in IF:M displays.

I'm writing a Blackjack (21) script for "The King in Yellow", and I just noticed that some characters are occasionally dropped from IF:M dialogs, when running under Era (installed as Era 2.1 but with the Era.dll supplied previously on this thread.  The second screen-shot below shows the missing "w" in "without":






When running the same map and script under WoG 3.58f, the character is not dropped:



I have over a dozen scripts in the map before this script, and this is the first that I have noticed missing characters.  However, the next IF:M in this script also drops the "j" in "judges".  This is the script:

!?OB90/85/0;  House of Cards
!!VRz-1:S^Welcome to Black Jack's House of Cards!
Black Jack's my name and Blackjack's my game!^;
!!VRz-2:S^Choose an option or Cancel to exit:^;
!!VRz-3:S^..\Data\Cards\black_joker.gif^;
!!VRz-4:S^..\Data\Cards\jack_of_spades.gif^;
!!VRz-5:S^..\Data\Cards\ace_of_spades.gif^;
!!VRz-6:S^..\Data\Cards\red_joker.gif^;
!!VRz-7:S^Learn the rules of Blackjack (aka "21").^;
!!VRz-8:S^Gamble (10,000 gold required).^;
!!IF:D7/-1/0/-2/-3/-4/-5/-6/0/0/0/0/-7/-8/0/0; [Set up custom dialogue box]
!!IF:F7/0/0/0/0/1; [Enable Cancel button]
!!IF:E1/7; [Display Custom Dialogue] selected option 1-4 in v1, -1 for Cancel
!!FU&v1=-1:E;

!!IF&v1=1:M^The objective is to accumulate a higher point total than the dealer, but without going over 21. You compute your score by adding the values of your individual cards.
The cards 2 through 10 have their face value, J, Q, and K are worth 10 points each, and the Ace is worth either 1 or 11 points (player's choice).

Different casinos have different variations of the rules.  These are ours:

At the start of a blackjack game, the players and the dealer receive two cards each. The players' cards are dealt face up, while the dealer has one face down and one face up.  The best possible blackjack hand is an opening deal of an ace with any ten-point card. This is called a "blackjack", or a natural 21, and the player holding this automatically wins double the player's bet.^;
!!IF&v1=1:M^The player goes first.  The player can keep his hand as it is (stand) or take more cards from the deck (hit), one at a time, until either the player judges that the hand has the best chance of winning, or until it goes over 21, in which case the player immediately loses.

Then it is the dealer's turn.  The dealer turns over his hidden hole card, and must follow these rules:

The dealer must hit if the value of the hand is lower than 17, otherwise the dealer must stand.  If the dealer hits and goes over 21 the player wins.  If the dealer stands and the player has a higher total (under 22), the player also wins.  Otherwise the dealer wins.  (The dealer wins all ties.)^;

(The "j" is also not dropped when running under WoG 3.58f.)

If no one else has reported this, then probably it is some installation or script error of mine.

I can supply a saved game if it would be useful.




 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
Salamandre
Salamandre


Honorable
Undefeatable Hero
posted May 14, 2012 07:58 PM
Edited by Salamandre at 20:02, 14 May 2012.

Is your script for ERA external to the map?
Because when running huge texts from Mymodname/data/s, I did not notice any missing letters. Never tested in internal.

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
JimV
JimV


Responsible
Supreme Hero
posted May 14, 2012 08:51 PM
Edited by JimV at 21:58, 14 May 2012.

The script was external in Data\s when I first ran it under Era.  I put it in a Timed Event to run it under WoG 3.58f.  After it worked under WoG 3.58f, I tried under Era again with the script in a Timed Event (and removed from Data\s).  It gave the same result (missing "w" and "j") under Era 2.1+ with the script internal (or external).

I am in the process of re-testing previous scripts to see if they have started to drop characters.  So far I have only see this happen in the above script.  I will try it under Era 1.8:  and ... no characters are dropped by the script under Era 1.8.

There is this difference when running under WoG 3.58f and Era 1.8:  not all of the maps scripts have been loaded into Timed Events, because they will require conversions to run in WoG 3.58f.  Eventually I will test with all scripts loaded in WoG 3.58f.

Update:  splitting the text into two separate IF:M commands (eliminating the scroll bar) removes the glitch.  Those are the only two long IF:M texts in the map, so that is probably why I have not seen the glitch before.  Searching memory for the phrase beginning with "without" or "judges" during the game generates numerous hits, but searching for " ithout" or " udges" (with a blank at the start) gives no hits, even when the glitch is being displayed.

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
Bersy
Bersy


Responsible
Supreme Hero
posted May 15, 2012 06:12 AM

Thank you for the report. There could be only one reason so far, I would be glad if you upload s saved game to check it for sure.

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
JimV
JimV


Responsible
Supreme Hero
posted May 15, 2012 09:57 AM

I have made a small random map, IFMglitch.h3m, and put the original long IF:M commands into it as instructions in a Timed Event.  So starting the map under Era 2 (on my system) will produce the glitch.  The map is stored in the XFiles folder at Box.net (https://www.box.com/s/1n069e3vc5vixc8l1zk5).

I like the version with the long dialogs split into shorter segments better than the original, so there is no need for urgency.

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
Salamandre
Salamandre


Honorable
Undefeatable Hero
posted May 15, 2012 10:13 AM

Started your test map, can't reproduce bug

 Send Instant Message | Send E-Mail | View Profile | Quote Reply | Link
[ This thread is 5 pages long: 1 2 (3) 4 5 ] < Prev Thread . . . Next Thread >
Post New Poll    Post New Topic    Post New Reply

Page compiled in 0.0873 seconds