It is currently 14 Nov 2025, 01:10
   
Text Size

Card Contributions

Post MTG Forge Related Programming Questions Here

Moderators: timmermac, Agetian, friarsol, Blacksmith, KrazyTheFox, CCGHQ Admins

Re: Card Contributions

Postby swordshine » 24 Oct 2012, 12:47

I think I've made mistakes in some setinfo picture numbers. Please fix them, thanks. The correct numbers are:
Shifting Borders 56
Glittering Lion 10
Glittering Lynx 11
Fiery Justice 366
Grand Melee 211
Piety Charm 49
Detainment Spell 12
Kjeldoran Pride 136
Stasis Cell 66
swordshine
 
Posts: 682
Joined: 11 Jul 2010, 02:37
Has thanked: 116 times
Been thanked: 87 times

Re: Card Contributions

Postby friarsol » 24 Oct 2012, 14:03

swordshine wrote:I think I've made mistakes in some setinfo picture numbers. Please fix them, thanks. The correct numbers are:
You know these are automated right? You can just leave them off and we'll run a script to generate it.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Card Contributions

Postby swordshine » 03 Nov 2012, 04:36

Code: Select all
Name:Fire Juggler
ManaCost:2 R
Types:Creature Goblin Shaman
Text:no text
PT:2/2
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigClash | TriggerDescription$ Whenever CARDNAME becomes blocked, clash with an opponent. If you win, Fire Juggler deals 4 damage to each creature blocking it.
SVar:TrigClash:AB$ Clash | Cost$ 0 | WinSubAbility$ DBDamage
SVar:DBDamage:DB$ DealDamage | DamageSource$ TriggeredAttacker | NumDmg$ 4 | Defined$ TriggeredBlocker
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/fire_juggler.jpg
End
Code: Select all
Name:Riftsweeper
ManaCost:1 G
Types:Creature Elf Shaman
PT:2/2
Text:no text
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, choose target face-up exiled card. Its owner shuffles it into his or her library.
SVar:TrigChange:DB$ ChangeZone | Cost$ 0 | Origin$ Exile | Destination$ Library | ValidTgts$ Card.faceUp | ChangeNum$ 1 | Shuffle$ True
SVar:RemRandomDeck:True
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/riftsweeper.jpg
End
swordshine
 
Posts: 682
Joined: 11 Jul 2010, 02:37
Has thanked: 116 times
Been thanked: 87 times

Re: Card Contributions

Postby swordshine » 03 Nov 2012, 06:18

Code: Select all
Name:Saproling Cluster
ManaCost:1 G
Types:Enchantment
Text:no text
A:AB$ Token | Cost$ 1 Discard<1/Card> | TokenAmount$ 1 | TokenName$ Saproling | TokenTypes$ Creature,Saproling | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 | AnyPlayer$ True |  SpellDescription$ Put a 1/1 green Saproling creature token onto the battlefield. Any player may activate this ability.
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/saproling_cluster.jpg
End
Code: Select all
Name:Gustcloak Cavalier
ManaCost:3 W W
Types:Creature Human Knight
Text:no text
PT:2/2
K:Flanking
T:Mode$ Attacks | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigTap | TriggerDescription$ Whenever CARDNAME attacks, you may tap target creature.
SVar:TrigTap:AB$Tap | Cost$ 0 | ValidTgts$ Creature | TgtPrompt$ Select target creature
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigUntap | TriggerDescription$ Whenever CARDNAME becomes blocked, you may untap it and remove it from combat.
SVar:TrigUntap:AB$ Untap | Cost$ 0 | Defined$ Self | SubAbility$ RemCombat
SVar:RemCombat:DB$ RemoveFromCombat | Defined$ Self
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/gustcloak_cavalier.jpg
End
swordshine
 
Posts: 682
Joined: 11 Jul 2010, 02:37
Has thanked: 116 times
Been thanked: 87 times

Re: Card Contributions

Postby swordshine » 03 Nov 2012, 07:30

Rust Elemental | Open
Code: Select all
Name:Rust Elemental
ManaCost:4
Types:Artifact Creature Elemental
Text:no text
PT:4/4
K:Flying
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ At the beginning of your upkeep, sacrifice an artifact other than CARDNAME. If you can't, tap CARDNAME and you lose 4 life.
SVar:TrigSac:AB$ Sacrifice | Cost$ 0 | Defined$ You | SacValid$ Artifact.Other | SubAbility$ DBTap | RememberSacrificed$ True
SVar:DBTap:DB$ Tap | Cost$ 0 | Defined$ Self | ConditionCheckSVar$ X | ConditionSVarCompare$ LT1 | SubAbility$ DBLoseLife | References$ X
SVar:DBLoseLife:DB$ LoseLife | Defined$ You | LifeAmount$ 4 | ConditionCheckSVar$ X | ConditionSVarCompare$ LT1 | References$ X | SubAbility$ DBCleanup
SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True
SVar:X:Remembered$Amount
SVar:RemRandomDeck:True
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/rust_elemental.jpg
End
swordshine
 
Posts: 682
Joined: 11 Jul 2010, 02:37
Has thanked: 116 times
Been thanked: 87 times

Re: Card Contributions

Postby swordshine » 05 Nov 2012, 02:09

Spelltithe Enforcer | Open
Code: Select all
Name:Spelltithe Enforcer
ManaCost:3 W W
Types:Creature Elephant Wizard
Text:no text
PT:3/3
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ WWhenever an opponent casts a spell, that player sacrifices a permanent unless he or she pays {1}.
SVar:TrigSac:DB$ Sacrifice | Defined$ TriggeredCardController | SacValid$ Permanent | SacMessage$ Permanent | UnlessCost$ 1 | UnlessPayer$ TriggeredCardController
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/spelltithe_enforcer.jpg
End
Magus of the Scroll | Open
Code: Select all
Name:Magus of the Scroll
ManaCost:R
Types:Creature Human Wizard
Text:no text
PT:1/1
A:AB$ NameCard | Cost$ 3 T | Defined$ You | SubAbility$ DBReveal | SpellDescription$ Name a card. Reveal a card at random from your hand. If it's the named card, CARDNAME deals 2 damage to target creature or player.
SVar:DBReveal:DB$ Reveal | Random$ True | RememberRevealed$ True | Defined$ You | SubAbility$ DBDamage
SVar:DBDamage:DB$ DealDamage | NumDmg$ 2 | Tgt$ TgtCP | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ1 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/magus_of_the_scroll.jpg
End
Mana Skimmer | Open
Code: Select all
Name:Mana Skimmer
ManaCost:3 B
Types:Creature Leech
Text:no text
PT:2/2
K:Flying
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigTap | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage to a player, tap target land that player controls. That land doesn't untap during its controller's next untap step.
SVar:TrigTap:AB$ Tap | Cost$ 0 | ValidTgts$ Land | TgtPrompt$ Choose target land. | SubAbility$ DBPump
SVar:DBPump:DB$ Pump | Defined$ Targeted | Permanent$ True | KW$ HIDDEN This card doesn't untap during your next untap step.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/mana_skimmer.jpg
End
Nightshade Assassin | Open
Code: Select all
Name:Nightshade Assassin
ManaCost:2 B B
Types:Creature Human Assassin
Text:no text
PT:2/1
K:First Strike
K:Madness:1 B
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, you may reveal X black cards in your hand. If you do, target creature gets -X/-X until end of turn.
SVar:TrigReveal:AB$ Reveal | Cost$ 0 | Defined$ You | RevealValid$ Card.Black | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBPump
SVar:DBPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ X | NumDef$ X | SubAbility$ DBNightshadeCleanup | References$ X
SVar:DBNightshadeCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Remembered$Amount.Negative
SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/nightshade_assassin.jpg
End
I think the additional cost of Taste of Paradise is the same with multikicker. Here is the code:
Taste of Paradise | Open
Code: Select all
Name:Taste of Paradise
ManaCost:3 G
Types:Sorcery
Text:no text
K:Multikicker 1 G
A:SP$ GainLife | Cost$ 3 G | LifeAmount$ Y | References$ X,Y | SpellDescription$ You gain 3 life plus an additional 3 life for each additional {1}{G} you paid.
SVar:X:Count$TimesKicked/Times.3
SVar:Y:Number$3/Plus.X
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/taste_of_paradise.jpg
End
swordshine
 
Posts: 682
Joined: 11 Jul 2010, 02:37
Has thanked: 116 times
Been thanked: 87 times

Re: Card Contributions

Postby friarsol » 05 Nov 2012, 02:51

Well, Taste of Paradise basically is multikicker except for things that interact with Kicker don't interact with it. http://magiccards.info/query?q=o%3Akick ... rd&s=cname
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Card Contributions

Postby swordshine » 06 Nov 2012, 00:45

Divergent Growth | Open
Code: Select all
Name:Divergent Growth
ManaCost:G
Types:Instant
Text:no text
A:SP$ AnimateAll | Cost$ G | ValidCards$ Land.YouCtrl | Abilities$ ABMana | SpellDescription$ Until end of turn, lands you control gain "{T}: Add one mana of any color to your mana pool."
SVar:ABMana:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color to your mana pool.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/divergent_growth.jpg
End
Rising Waters | Open
Code: Select all
Name:Rising Waters
ManaCost:3 U
Types:Enchantment
Text:no text
S:Mode$ Continuous | Affected$ Land | AddHiddenKeyword$ HIDDEN CARDNAME doesn't untap during your untap step. | Description$ Lands don't untap during their controller's untap steps.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | TriggerZones$ Battlefield | IsPresent$ Card.Self | Execute$ TrigUntap | TriggerDescription$ At the beginning of each player's upkeep, that player untaps a land he or she controls.
SVar:TrigUntap:AB$ Untap | Cost$ 0 | UntapUpTo$ True | UntapType$ Land | Amount$ 1 | Defined$ TriggeredPlayer
SVar:RemRandomDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/rising_waters.jpg
End
Parallax Nexus | Open
Code: Select all
Name:Parallax Nexus
ManaCost:2 B
Types:Enchantment
Text:no text
K:Fading:5
A:AB$ ChangeZone | Cost$ SubCounter<1/FADE> | ValidTgts$ Opponent | SorcerySpeed$ True | TgtPrompt$ Select target opponent | Origin$ Hand | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | RememberChanged$ True | Chooser$ Targeted | Hidden$ True | SpellDescription$ Target opponent exiles a card from his or her hand. Activate this ability only any time you could cast a sorcery.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigReturn | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, each player returns to his or her hand all cards he or she owns exiled with CARDNAME.
SVar:TrigReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Hand | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/parallax_nexus.jpg
End
swordshine
 
Posts: 682
Joined: 11 Jul 2010, 02:37
Has thanked: 116 times
Been thanked: 87 times

Re: Card Contributions

Postby Sloth » 06 Nov 2012, 16:54

I've added most of your cards swordshine. Thanks a lot! =D>

Here are the reasons for omitting some:
- Fiery Justice has the same problem as all distribute damage spells. I haven't really made up my mind about this, so if someone thinks it's acceptable to ignore minor "becomes target" issues i'm cool.
- Spelltithe Enforcer is a bit unfair for the AI, but i think i will create a new SVar for cards like this (Nether Void has the same problem). Will upload it soon.
- Mana Skimmer is missing the "that player controls" part. Since this is not restricted to combat damage, this needs some new infrastructure.
User avatar
Sloth
Programmer
 
Posts: 3498
Joined: 23 Jun 2009, 19:40
Has thanked: 125 times
Been thanked: 507 times

Re: Card Contributions

Postby swordshine » 07 Nov 2012, 00:31

Summoner's Egg | Open
Code: Select all
Name:Summoner's Egg
ManaCost:4
Types:Artifact Creature Construct
Text:no text
PT:0/4
T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigExile | TriggerDescription$ Imprint - When CARDNAME enters the battlefield, you may exile a card from your hand face down.
SVar:TrigExile:AB$ ChangeZone | Cost$ 0 | Origin$ Hand | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | ExileFaceDown$ True | Imprint$ True
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigFaceUp | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, turn the exiled card face up. If it's a creature card, put it onto the battlefield under your control.
SVar:TrigFaceUp:AB$ SetState | Cost$ 0 | Defined$ Imprinted | SubAbility$ DBChangeZone | Mode$ TurnFace
SVar:DBChangeZone:DB$ ChangeZone | Defined$ Imprinted | Origin$ Exile | Destination$ Battlefield | ConditionDefined$ Imprinted | ConditionPresent$ Creature | GainControl$ True | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearImprinted$ True
SVar:SacMe:5
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/summoners_egg.jpg
End
Overlaid Terrain | Open
Code: Select all
Name:Overlaid Terrain
ManaCost:2 G G
Types:Enchantment
Text:no text
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSac | TriggerDescription$ As CARDNAME enters the battlefield, sacrifice all lands you control.
SVar:TrigSac:AB$ SacrificeAll | Cost$ 0 | ValidCards$ Land.YouCtrl
S:Mode$ Continuous | Affected$ Land.YouCtrl | AddAbility$ AnyMana | Description$ Lands you control have "Tap: Add one mana of any color to your mana pool."
SVar:AnyMana:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color to your mana pool.
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/overlaid_terrain.jpg
End
swordshine
 
Posts: 682
Joined: 11 Jul 2010, 02:37
Has thanked: 116 times
Been thanked: 87 times

Re: Card Contributions

Postby moomarc » 10 Nov 2012, 15:01

Sloth wrote:- Fiery Justice has the same problem as all distribute damage spells. I haven't really made up my mind about this, so if someone thinks it's acceptable to ignore minor "becomes target" issues i'm cool.
:-k Maybe I must dig up my old ideas for implementing damage division and see whether I've learnt enough yet to get it working...
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

Re: Card Contributions

Postby moomarc » 13 Nov 2012, 09:42

Just added Minion of the Wastes. Would someone please check whether the method is suitable to convert Nameless Race and Phyrexian Processor to script. Just need to make sure I'm not missing some rules interaction somewhere. Basically a static etb trigger executes a StoreSVar that stores chosenX in time for SetPower/Toughness to register it:
Code: Select all
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ PayLife | Static$ True | TriggerDescription$ As CARDNAME enters the battlefield, pay any amount of life.
SVar:PayLife:AB$ StoreSVar | Cost$ PayLife<X> | References$ X | SVar$ Y | Type$ CountSVar | Expression$ ChosenX
S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ Y | SetToughness$ Y | References$ Y | Description$ CARDNAME's power and toughness are each equal to the life paid as it entered the battlefield.
SVar:X:XChoice
SVar:Y:Number$0
Edit: This does interact properly with Godtracker of Jund etc so that bit is fine. Anything else I should check?
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

Re: Card Contributions

Postby friarsol » 13 Nov 2012, 13:11

moomarc wrote:Just added Minion of the Wastes. Would someone please check whether the method is suitable to convert Nameless Race and Phyrexian Processor to script. Just need to make sure I'm not missing some rules interaction somewhere. Basically a static etb trigger executes a StoreSVar that stores chosenX in time for SetPower/Toughness to register it:
Code: Select all
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ PayLife | Static$ True | TriggerDescription$ As CARDNAME enters the battlefield, pay any amount of life.
SVar:PayLife:AB$ StoreSVar | Cost$ PayLife<X> | References$ X | SVar$ Y | Type$ CountSVar | Expression$ ChosenX
S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ Y | SetToughness$ Y | References$ Y | Description$ CARDNAME's power and toughness are each equal to the life paid as it entered the battlefield.
SVar:X:XChoice
SVar:Y:Number$0
Edit: This does interact properly with Godtracker of Jund etc so that bit is fine. Anything else I should check?
Seems fine to me, I'd recommend something a bit more descriptive than just Y as the variable name (perhaps LifePaidOnETB). For Nameless Race, you just have to make sure they can't pay more than the restriction on the card. In either case, does it let me choose more than the amount of life I have?
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Card Contributions

Postby moomarc » 13 Nov 2012, 13:59

friarsol wrote:Seems fine to me, I'd recommend something a bit more descriptive than just Y as the variable name (perhaps LifePaidOnETB). For Nameless Race, you just have to make sure they can't pay more than the restriction on the card. In either case, does it let me choose more than the amount of life I have?
Nope. I didn't think you could pay more life than you have. Should you be able to?

Edit: Looking at the Phyrexian Processor code, it only allows you to pay life that you have, so I'll go ahead and convert.
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

Re: Card Contributions

Postby moomarc » 13 Nov 2012, 15:04

moomarc wrote:
friarsol wrote:Seems fine to me, I'd recommend something a bit more descriptive than just Y as the variable name (perhaps LifePaidOnETB). For Nameless Race, you just have to make sure they can't pay more than the restriction on the card. In either case, does it let me choose more than the amount of life I have?
Nope. I didn't think you could pay more life than you have. Should you be able to?

Edit: Looking at the Phyrexian Processor code, it only allows you to pay life that you have, so I'll go ahead and convert.
Looks like it doesn't work for the Phyrexian Processor. :( The StoreSVar ability doesn't seem to overwrite the base svar like I thought, so the tokens are 0/0 (or whatever the base svar value is). I tried calling ChosenX directly and that didn't work either so do't know whether I'll be able to get it right.
Phyrexian Processor | Open
Name:Phyrexian Processor
ManaCost:4
Types:Artifact
Text:no text
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ PayLife | Static$ True | TriggerDescription$ As CARDNAME enters the battlefield, pay any amount of life.
SVar:PayLife:AB$ StoreSVar | Cost$ PayLife<X> | References$ X | SVar$ LifePaidOnETB | Type$ CountSVar | Expression$ ChosenX
A:AB$ Token | Cost$ 4 T | TokenAmount$ 1 | TokenName$ Minion | TokenTypes$ Creature,Minion | TokenOwner$ You | TokenColors$ Black | TokenPower$ LifePaidOnETB | TokenToughness$ LifePaidOnETB | References$ LifePaidOnETB | TokenImage$ B X X Minion | SpellDescription$ Put an X/X black Minion creature token onto the battlefield, where X is the life paid as Phyrexian Processor entered the battlefield.
SVar:X:XChoice
SVar:LifePaidOnETB:Number$0
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/phyrexian_processor.jpg
SetInfo:USG|Rare|http://magiccards.info/scans/en/us/306.jpg
Oracle:As Phyrexian Processor enters the battlefield, pay any amount of life.\n{4}, {T}: Put an X/X black Minion creature token onto the battlefield, where X is the life paid as Phyrexian Processor entered the battlefield.
End
-Marc
User avatar
moomarc
Pixel Commander
 
Posts: 2091
Joined: 04 Jun 2010, 15:22
Location: Johannesburg, South Africa
Has thanked: 371 times
Been thanked: 372 times

PreviousNext

Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 37 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 37 users online :: 0 registered, 0 hidden and 37 guests (based on users active over the past 10 minutes)
Most users ever online was 9824 on 10 Nov 2025, 04:33

Users browsing this forum: No registered users and 37 guests

Login Form