Bug Reports (snapshot builds)
Post MTG Forge Related Programming Questions Here
Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins
Re: Bug Reports (snapshot builds)
by friarsol » 19 Jan 2016, 18:18
I took a quick lock the other day. I think Triggers use something different than the conditions that are built for Abilities and Statics for some reason. We can probably just use a generic CheckSVar on the conditional.Agetian wrote:Tbh I'm not very well-versed in the trigger-related code, so I'm probably not the best guy to take a look at this... It looks like the conditional code is not implemented for the triggers at all (or something like that) 'cause it doesn't look like it gets checked at all. Do you know how to get this implemented properly?..
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Bug Reports (snapshot builds)
by Agetian » 19 Jan 2016, 18:31
Oh, interesting! Thanks for the tip! I tried implementing that in r30706. The question is, though: should we also keep the conditional check on the ability itself or should it only be on the trigger like now?friarsol wrote:I took a quick lock the other day. I think Triggers use something different than the conditions that are built for Abilities and Statics for some reason. We can probably just use a generic CheckSVar on the conditional.Agetian wrote:Tbh I'm not very well-versed in the trigger-related code, so I'm probably not the best guy to take a look at this... It looks like the conditional code is not implemented for the triggers at all (or something like that) 'cause it doesn't look like it gets checked at all. Do you know how to get this implemented properly?..
- Agetian
- Agetian
- Programmer
- Posts: 3474
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 563 times
Re: Bug Reports (snapshot builds)
by friarsol » 19 Jan 2016, 18:52
Nope, it's not necessarily "wrong", but it's unnecessary. Forge handles conditionals that are on the trigger and checks them on both sides like it should. Feel free to mess with life totals with the trigger on the stack to verify.Agetian wrote:Oh, interesting! Thanks for the tip! I tried implementing that in r30706. The question is, though: should we also keep the conditional check on the ability itself or should it only be on the trigger like now?
- friarsol
- Global Moderator
- Posts: 7593
- Joined: 15 May 2010, 04:20
- Has thanked: 243 times
- Been thanked: 965 times
Re: Bug Reports (snapshot builds)
by Agetian » 19 Jan 2016, 19:05
Ok, gotcha, thanks for the info! I tried different things and it seems like everything works.
- Agetian
- Agetian
- Agetian
- Programmer
- Posts: 3474
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 563 times
Re: Bug Reports (snapshot builds)
by Phisteen » 20 Jan 2016, 02:48
Description: r30706 crashed when trying to enter a draft in quest mode.
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.48-SNAPSHOT-r30706
Operating System: Windows 8.1 6.3 amd64
Java Version: 1.7.0_79 Oracle Corporation
java.lang.NullPointerException
at forge.limited.BoosterDraft.createDraft(BoosterDraft.java:159)
at forge.quest.QuestEventDraft.enter(QuestEventDraft.java:649)
at forge.screens.home.quest.CSubmenuQuestDraft.startDraft(CSubmenuQuestDraft.java:542)
at forge.screens.home.quest.CSubmenuQuestDraft.access$400(CSubmenuQuestDraft.java:52)
at forge.screens.home.quest.CSubmenuQuestDraft$5.actionPerformed(CSubmenuQuestDraft.java:259)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$300(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Re: Bug Reports (snapshot builds)
by Agetian » 20 Jan 2016, 05:29
What kind of draft were you trying to enter? (which sets?)Phisteen wrote:Description: r30706 crashed when trying to enter a draft in quest mode.
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.48-SNAPSHOT-r30706
Operating System: Windows 8.1 6.3 amd64
Java Version: 1.7.0_79 Oracle Corporation
java.lang.NullPointerException
at forge.limited.BoosterDraft.createDraft(BoosterDraft.java:159)
at forge.quest.QuestEventDraft.enter(QuestEventDraft.java:649)
at forge.screens.home.quest.CSubmenuQuestDraft.startDraft(CSubmenuQuestDraft.java:542)
at forge.screens.home.quest.CSubmenuQuestDraft.access$400(CSubmenuQuestDraft.java:52)
at forge.screens.home.quest.CSubmenuQuestDraft$5.actionPerformed(CSubmenuQuestDraft.java:259)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$300(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
- Agetian
- Agetian
- Programmer
- Posts: 3474
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 563 times
Re: Bug Reports (snapshot builds)
by Phisteen » 20 Jan 2016, 07:17
Triple Champions of Kamigawa. other sets seem to be working normally.
Re: Bug Reports (snapshot builds)
by Agetian » 20 Jan 2016, 08:11
Fixed (r30708), currently via a hardcoded block name assignment (Kamigawa is sort of an exception in that its block name and its first edition name differ, that's why the game crashed trying to identify the block by name "Champions of Kamigawa").Phisteen wrote:Triple Champions of Kamigawa. other sets seem to be working normally.
- Agetian
- Agetian
- Programmer
- Posts: 3474
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 563 times
Re: Bug Reports (snapshot builds)
by Phisteen » 20 Jan 2016, 20:24
It doesn't appear to be fixed. i tried it in r30708 and r30709 and it gives the same error.Fixed (r30708), currently via a hardcoded block name assignment (Kamigawa is sort of an exception in that its block name and its first edition name differ, that's why the game crashed trying to identify the block by name "Champions of Kamigawa").
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.48-SNAPSHOT-r30709
Operating System: Windows 8.1 6.3 amd64
Java Version: 1.7.0_79 Oracle Corporation
java.lang.NullPointerException
at forge.limited.BoosterDraft.createDraft(BoosterDraft.java:159)
at forge.quest.QuestEventDraft.enter(QuestEventDraft.java:649)
at forge.screens.home.quest.CSubmenuQuestDraft.startDraft(CSubmenuQuestDraft.java:542)
at forge.screens.home.quest.CSubmenuQuestDraft.access$400(CSubmenuQuestDraft.java:52)
at forge.screens.home.quest.CSubmenuQuestDraft$5.actionPerformed(CSubmenuQuestDraft.java:259)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$300(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Re: Bug Reports (snapshot builds)
by Twainer » 21 Jan 2016, 00:27
r30709, a few OGW bugs
Visions of Brutality - Trigger goes on the stack but does not deal damage to creature's controller.
Elemental Uprising - Must be blocked effect doesn't work or AI ignores it.
Support in General - AI will only target 1 creature, even if it could target more.
Visions of Brutality - Trigger goes on the stack but does not deal damage to creature's controller.
Elemental Uprising - Must be blocked effect doesn't work or AI ignores it.
Support in General - AI will only target 1 creature, even if it could target more.
- Twainer
- Posts: 44
- Joined: 03 Jan 2010, 23:42
- Has thanked: 0 time
- Been thanked: 0 time
Re: Bug Reports (snapshot builds)
by tjtillman » 21 Jan 2016, 04:07
r30710
Unity of Purpose doesn't untap creatures with P1P1 counters. May be a capitalization issue in the SubAbility.
Unity of Purpose doesn't untap creatures with P1P1 counters. May be a capitalization issue in the SubAbility.
Re: Bug Reports (snapshot builds)
by Bog Wraith » 21 Jan 2016, 04:07
Bug occurred after combat when A.I. attacked. A.I. was playing with a G/W Hardened Scales deck that I have played against with other decks that had no similar crashes with . My deck was a first timer I was testing based on Reid Duke's Mage-Ring Esper deck which I include below:
- ConcurrentModificationException | Open
- Code: Select all
Forge Version: 1.5.48-SNAPSHOT-r30710
Operating System: Mac OS X 10.10.5 x86_64
Java Version: 1.8.0_71 Oracle Corporation
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1429)
at java.util.HashMap$KeyIterator.next(HashMap.java:1453)
at java.util.AbstractCollection.addAll(AbstractCollection.java:343)
at java.util.HashSet.<init>(HashSet.java:119)
at forge.game.combat.CombatView.getAttackers(CombatView.java:61)
at forge.screens.match.TargetingOverlay.addArcsForCard(TargetingOverlay.java:279)
at forge.screens.match.TargetingOverlay.assembleArcs(TargetingOverlay.java:160)
at forge.screens.match.TargetingOverlay.access$700(TargetingOverlay.java:57)
at forge.screens.match.TargetingOverlay$OverlayPanel.paintComponent(TargetingOverlay.java:389)
at javax.swing.JComponent.paint(JComponent.java:1056)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
at javax.swing.JComponent.paintChildren(JComponent.java:889)
at javax.swing.JComponent.paint(JComponent.java:1065)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
at javax.swing.RepaintManager$4.run(RepaintManager.java:831)
at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
- Attachments
-
- Mage-Ring Esper_Reid Duke.dck.zip
- Mage-Ring Esper_Reid Duke
- (677 Bytes) Downloaded 151 times
'Twas in the bogs of Cannelbrae
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
-
Bog Wraith - Global Mod 1 (Ret)
- Posts: 1108
- Joined: 28 May 2008, 22:40
- Location: Shandalar
- Has thanked: 425 times
- Been thanked: 153 times
Re: Bug Reports (snapshot builds)
by Agetian » 21 Jan 2016, 05:14
It will appear to be "not fixed" until you actually generate a new draft like that. I mean, as long as you're trying to continue with the same draft in your old saved game, it will not work, unfortunately - and the saved game will remain broken. However, if you start a new quest and get a triple CHK draft, it should now work correctly.Phisteen wrote:It doesn't appear to be fixed. i tried it in r30708 and r30709 and it gives the same error.Fixed (r30708), currently via a hardcoded block name assignment (Kamigawa is sort of an exception in that its block name and its first edition name differ, that's why the game crashed trying to identify the block by name "Champions of Kamigawa").
- NullPointerException | Open
- Code: Select all
Forge Version: 1.5.48-SNAPSHOT-r30709
Operating System: Windows 8.1 6.3 amd64
Java Version: 1.7.0_79 Oracle Corporation
java.lang.NullPointerException
at forge.limited.BoosterDraft.createDraft(BoosterDraft.java:159)
at forge.quest.QuestEventDraft.enter(QuestEventDraft.java:649)
at forge.screens.home.quest.CSubmenuQuestDraft.startDraft(CSubmenuQuestDraft.java:542)
at forge.screens.home.quest.CSubmenuQuestDraft.access$400(CSubmenuQuestDraft.java:52)
at forge.screens.home.quest.CSubmenuQuestDraft$5.actionPerformed(CSubmenuQuestDraft.java:259)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$300(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
If you provide me with your saved game I may be able to repair it for you though.
- Agetian
Last edited by Agetian on 21 Jan 2016, 11:39, edited 1 time in total.
- Agetian
- Programmer
- Posts: 3474
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 563 times
Re: Bug Reports (snapshot builds)
by Agetian » 21 Jan 2016, 05:26
Fixed (r30711).tjtillman wrote:r30710
Unity of Purpose doesn't untap creatures with P1P1 counters. May be a capitalization issue in the SubAbility.
- Agetian
- Agetian
- Programmer
- Posts: 3474
- Joined: 14 Mar 2011, 05:58
- Has thanked: 677 times
- Been thanked: 563 times
Who is online
Users browsing this forum: No registered users and 67 guests