Skip to content

Instantly share code, notes, and snippets.

@brine
brine / gist:0cfb191c77dc5ca4f1ab2801d5e82691
Created December 29, 2022 04:01
OCTGN 3.4.378 changelog
New Feature - Discord integration - can send game invites through Discord chat as long as OCTGN is open, and join other users games through the discord game activity window
New python API - card.defaultProperty(alternate, property) returns the original card property value as defined in the set XML. Useful if the card's properties have been overwritten in-game.
Fix - Games can be launched from the command line
Fix - Extended tooltips now displays the correct information for facedown peeked cards (fixes https://github.com/octgn/OCTGN/issues/2178)
Fix - Logging in for the first time no longer causes an error message
Fix - OCTGN will run properly if Discord is not installed
Update - Hidden piles no longer animate for other players (can no longer "see" which card was moved or where a card was inserted by watching the animation)
Update - OCTGN IDE (game development studio) application has been substantially updated and is more stable than before. Still not a finished product, but it should be capable of creating

For Players:

  • All piles in the player tab are expandable and collapsable. Use the arrow buttons on the bottom of each pile to expand or collapse it.
    • Expanded piles behave like the hand group. So you can now have multiple hand-like groups displayed.
    • A slider is added to expandable groups to change how how close together the cards can become before the pile width increases.
  • A new button "Undock Card Preview" is added to the top of the play window. This will pop the card preview window into its own resizable window. Useful for dual-monitors and streaming overlays.
  • Added hotkeys to move cards between sections:
    • Ctrl+1-0 Move all of a card to section 1-10 on current tab (player/Global)
    • Ctrl+Shift+1-0 Move all of a card to section 1-10 on other tab (player/Global)
  • Fixed the twitter news feed on the OCTGN login screen.
  • OCTGN Options window is a bit better organized.
If a card is FaceUp, then all players will have visibility of that card.
If a card is FaceDown, then nobody can see the card.
Any player can peek at a facedown card to reveal its identity. The card will still show as face-down in piles or the table, but the hover preview will show the card's image. A peek icon appears on the card to show who has seen the card's identity
Piles can set the 'default' visibility for any card within it. The table is always visibility=Everyone
Piles can add players to the visibility list. Any player on that list is able to see the contents of that pile.
NEW: A player can add a spectator to the visible players list on a pile.
NEW: The peek icon is added to the pile info panel, showing who has visibility on that pile (similar to cards)
NEW: Remove individual card visibility settings. Cards are either FaceUp (everyone can see, card's front face is displayed), FaceDown (nobody can see, card identity is kept hidden, card's default back is shown). Peeking at a card reveals it to t
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using Octgn.DataNew.Entities;
namespace Octgn.Play.Gui
{
o8g schema: game documents icon attribute now optional (was required).
game def: game document icons work again.
o8g schema: game font src now optional (was required).
game def: octgn will use its default font if no font src is defined.
o8build: validates that all sets have a gameId that matches the game's GUID
o8g schema: removed height attribute from group element
o8g schema: removed width attribute from group element
o8g schema: removed height attribute from hand element
o8g schema: removed width attribute from hand element
game def: added 'changetwosidedtable' attribute to game element. Boolean; Allows the host to change the two-sided table property (default True)
@brine
brine / gist:ca77380fc9d941732c61
Last active March 1, 2016 18:38
Status Update:
Hey all, we just pushed out a new version last night which includes a few nifty new features. Here's a list of what we've been working on in the last few months:
These features are relevant to players:
- You can zoom the table without a scroll wheel by pressing the CTRL+Plus and CTRL+Minus key combos
- When you load a Limited deck via the limited deck editor, the chat notification will specify that it was a limited deck (to tell it apart from pre-built decks being loaded)
- Added the option to downgrade OCTGN's borders to the native Windows OS borders.
- Added pinch-zoom and multi-touch drag for the table (for touch-supported devices)
- Added an option in the Options menu to bring back the old Knock-Knock sound effect when players join your game.
For game developers, here are some features that may be relevant to you. The relevant wiki pages have been updated
@brine
brine / UFS
Created December 5, 2013 07:06
UFS updated proxygen
<?xml version="1.0" encoding="utf-8" ?>
<templates>
<blocks>
<block type="overlay" id="backAction" src="proxy/backAction.png">
<location x="0" y="0" />
</block>
<block type="overlay" id="backAsset" src="proxy/backAsset.png">
<location x="0" y="0" />
</block>
<block type="overlay" id="backAttack" src="proxy/backAttack.png">
@brine
brine / scry hard
Last active December 25, 2015 03:58
scry hard 2: scry harder
def scry(group = me.Library, x = 0, y = 0, count = None):
mute()
if count == None:
count = askInteger("Scry how many cards?", 1)
topCards = group.top(count)
buttons = [] ## This list stores all the card objects for manipulations.
for c in topCards:
c.peek() ## Reveal the scryed cards to python
buttons.append(c)
topList = [] ## This will store the cards selected for the top of the pile
@brine
brine / gist:6428912
Last active December 22, 2015 06:09
mechanical shuffles
def riffleShuffle(group, x = 0, y = 0):
mute()
deck = []
for c in group:
deck.append(c) ##loads the deck contents into a list
topChunk = deck[:len(deck)/2] ##Grabs the top half of the deck
bottomChunk = deck[len(deck)/2:] ##Grabs the bottom half of the deck
deck = [] #This'll be the new deck stack
while len(bottomChunk) > 0: ##keep looping as long as there's still cards
deck.insert(0, bottomChunk.pop()) ##The bottom of the chunk gets added to the top of the deck
@brine
brine / gist:5864619
Created June 26, 2013 03:47
save states
def saveState():
mute()
playerList = []
for p in players:
playerList.append(p.name)
saveState = "|".join(playerList) + "\n"
counterList = []
for counter in me.counters:
counterList.append(str(me.counters[counter].value))
saveState += "|".join(counterList) + "\n"