23

DispatchBulletinNews

by The King of All Wild Things. . 199 reads.

WILD LIFE - February 2023


_ TWO CENTS

What an exciting start to the year! Defenders shook things up by raiding a region. There was a Strike for anonymity. Some bleating on the Gameplay forum. And I ended up asking too much from some python code.

But if you're just thinking, "I don't care about any of this. Why did I get a notification?", then this section is for you.

_ MYSTICAL STATES


Remember the destruction of The Mystical Council by the Linklargest raider pile in history in February last year? Well, the diaspora, The Mystical Alliance scored some revenge this January. Members of region Islamic States had played a supporting role in the historic raid. So when their founder was deleted by mods for serial WA rule violations, the opportunity for revenge arose. First, an offensive liberation was pushed through the Security Council. This ensured that the remaining Islamic States nations couldn't safeguard their region by adding a password. Next, a force of 60 players jumped in to capture the region. With reinforcements, the number of troops soon exceeded 115. After kicking out all the residents, the Liberation was repealed, allowing a password to be added by the invaders, locking down Islamic States. Yes, it feels a bit weird describing a force consisting mostly of Defenders as "invaders", but there you go!

As a footnote, the original founder of The Mystical Council, Oakplumington had a brief return to NS back in May. And as expected, they took the news with good grace:
"Lol!"

_ THE NATION WITH NO NAME


In a Technical thread, Strike struck gold, convincing Violet to reintroduce the [ nation=noname ] tag. Behold!

It works in Dispatches, but nowhere else. The less imaginative of you will be thinking, "but why?". To which I reply: "Bunting!"

The North Polish UnionRefuge IsleOsheigaThe Georgeian EmpireAetheliaAll Wild ThingsLife empireLarge LadzLaforeiaLower SlobboviaQwertyyTheLandOfFunFunFunOsheigaDaemoes-AvoLaforeiaAetheliaCatherine Louise Marie Ernestine FreneauAjidialiLokelaniFree Transhumanists

I was also very tempted to change each [ nation ] tag in this dispatch to [ nation=noname ], just for the lols. Luckily for you all, I have a sense of shame!

Strike, however, has a far more sensible use. Check out their test dispatch, and you can see how this can work brilliantly for sports RPs. Each sports personality's name can appear next to their national flag, without the nation name getting in the way.

The tag used to be a thing over ten years ago, but was short-lived, lasting only from 5 Oct 2012 to 27 Jan 2013. The reason given at the time was that the tag was being misused for pic-spam on RMBs and in Telegrams. Bringing it back for Dispatches only neatly avoids those issues. Sadly, the flag size doesn't seem to change with [ size ] tags (though weirdly, the ex-nation monument does).
Size=100: All Wild Things,
Size=200: All Wild Things,
I raised that as an issue, so i guess that by the time you read this, it's possible you won't be able to see the difference any more!

_ REPEAL OR NO REPEAL?

The premise for Repeal or No Repeal is pretty simple. A recently passed piece of legislation gets named, and you have to guess correctly as to whether it will be repealed before the end of the month.

Jedinsto's Protections For Sexual Assault Victims, passed with an impressive 87.8% in favour in mid December. Would it remain protected from assault beyond the end of January? I'm delighted to say it did! Congrats to Jedinsto, and congrats to those who predicted this outcome correctly!

Simone Republic's Sophisticated Investors Protocol made it onto the books, gathering 64.7% of the vote. But are voters invested enough to keep it there? Place your bets!
Click to see if we're running a poll. Need to vote some more? Check out your eligible polls.

_ BLEATING ABOUT NOTHING


OK, it's not the scoop of the century, but it does make a nice wild-life themed front cover. Drew Durrnil started a Gameplay thread "The GOAT of NS":
"There have been several users on this site that have brought an impact to the community, through several different ways. I want to see who people think is the most impactful of these users, and who has made the greatest achievements to the NS site and community."

Not being young, hip, on-trend, down-with-it, or whatever you young whippersnappers call it these days, I had to go google "What is a GOAT?". Yes really. I felt like I'd failed my Farm Animals 101 class and was in danger of having to resit year one of primary school. I had visions of being surrounded by five year olds, squished into a tiny plastic chair, and endlessly singing renditions of Old MacDonald. And Google showed no mercy. No nannying from that source. I felt like the butt of a joke as Google advised me that a goat was a type of livestock. I was just wondering wether to give up when I spotted a Dictionary.com article. I kid you not, but apparently the phrase GOAT was coined in the 1990s. What was I saying earlier about not being "down with the kids"? Well, it turns out I'm not even "down with the boomers".

So what does GOAT mean? I'm not telling you. If you don't already know, you're going to have to go through that same internet-search-of-shame as I did. Hah!

Drew explained how the voting for GOAT was to be structured, trying to carve it up by interest areas (GP, RP, WA etc), but in practice, it all fell apart fairly quickly. Which is kind of a shame, but I felt it was a pretty good thread all the same. It being a Gameplay thread, there was a bias that most candidates were significant Gameplayers at some point in the past 20 years. Many people just posted the names of players they thought should be GOAT. But others included the reasons for their choices. And those were far more interesting.

Reventus Koth was in with the first nomination:
"Gameplay nomination: Cormac
Close the thread, there's nothing more to say."

Quebecshire (Rhaza) tried to shoot this candidate down(click to read the full post - it's longer than I want to replicate here):
"The concept of a single "GOAT" of NS is delusional, but Cormac couldn't be further from it, unless our critiera is measured in hysteria and disloyalty."

Could Gameplay even be interesting without hysteria and disloyalty? Honestly, measured in popcorn sales alone, I reckon Cormac makes a very good candidate!

Unlike me, Hulldom sees the value in stability in Gameplay. Hulldom also made some good arguments for WA authors who should be GOAT in this post:
"This is an interesting idea, OP. I think it’s certainly liable to cause some debate, which is always good. As for nominations, sticking to what I know.
Ballot: Hulldom
Gameplay nomination:
Ivan Moldavi/Pierconium - Former Emperor of the NPO (at least once), couper of at least two other GCRs (TNP and TEP), I believe (an NPOer can feel free to correct me) he was an integral part of the most feared UCR in the late 2000s and early 2010s in Gatesville. Not to mention that even after he couped TNP, he still managed to come back and be a well-liked contributing member, particularly on the legal side,
OnderKelkia - I’ve made this comparison several times, but Onderwalls read a lot like Hans von Mommsen in translation, terse but you can’t skip a sentence without missing something crucial to the point. That’s the kind of player Onder is. A glittering career in Europeia, mostly in the Judiciary. Pillar of the imperialist sphere for the last decade plus combined with something like 9 years on the throne of the Land of Kings and Emperors. ‘Nuff said.

Now this one is a bit more out of the box, but there are reasons!
r3naissnc3r/HMS Unicorn/1 Very Fast Endotarter - Literally the penguin that keeps the North Pacific running through his tech. A fixture of the Independent sphere for more than a decade after a brief sojourn in early imperialism with GB&I. Honestly being a two-term Delegate of the North is literally last on the list. He was a key cog behind the scenes for most of the 2010s and you can see that in him being one of five people all time to have two commends/condemns (along with Milograd, Sedgistan—even if both are repealed, IA [Imperium Anglorum], and JAL/Durkadurkaranistan).

WA nomination: Now because IA’s been nominated, I’ll nominate a friend of mine who also doesn’t get enough love, I don’t think:
Separatist Peoples - He’s been going for about a decade at this whole WA thing now and he’s pretty good at it. He may not be as prolific or as heavy an influence on modern form as IA, but he’s a reason that the RP tradition in the General Assembly persists today. Couple that with having written almost 20 General Assembly resolutions and it’s fairly easy to see why I’m nominating him I hope. His influence goes beyond the protections for people in wartime that seem to be his passion.

And I wouldn’t be smart if I didn’t offer an SC nomination that is, once again, out of the box:
Bormiar - Now this is one that many people will think is a hot take, but hear me out. Of authors in the modern era (really post-Predator) has any other author been so single-mindedly focused on promoting the titans of the early game? Has any other author also been so ready to promote the unorthodox nominee (like VoARB)? I don’t think so. I don’t think Borm has been the most influential person in terms of style, nor do I think they’re the most influential SC author ever. I do, however, think they’re the best because of the horizons he opened up for the SC. He proved that we can still reach back and recognize nominees who did unorthodox things or nominees that were around 15 years ago."

The Church of Satan made this strong Gameplay nomination:
"I suspect that Francos Spain would be a solid nomination for GP. After all, the regime he founded 20 years ago still stands, and as a result, he paved the way for everything The Pacific did since under that regime. The Lazarus coups by The Pacific wouldn't have been possible without the very regime he founded, and they caused years of instability for a GCR."

Numero Capitan suggested:
"Recency bias is always going to be an issue for something like this but this ain’t too close for me:

Gameplay - Gates the God

Achievements, ideology, consistency and character. The other nominations so far really don’t come close. The GOAT of Gameplay should be the Xerxes of the game, not the Rita Skeeter."

The Church of Satan agreed this was a good candidate:
"Seconded. Gates the God created a region whose influence was so vast that people often pandered to Gatesville for its substantial military assistance, and so long as it served his interests, Gates was happy to oblige. He was a force to be reckoned with. It would be an injustice not to include him for consideration."

Sedgistan proposed a defender:
"Grub? No longer a current player, and never exactly likeable (Gates was, beneath his character), but had longevity and a significant legacy in 10KI."

Again, The Church of Satan liked (?) this nomination:
"Yeah, I never liked Grub one bit, but XKI has had a major impact on the game across several years, thanks to (in no small part) Grub. He's also a solid choice."

And then there's my own suggestions. Probably they wouldn't get your vote for GOAT, but I believe they're all people who looked at the framework of NS in a whole new way, and went out to have fun with it.

My RP nomination would go to Lake of Fur. They've been missing for a couple of years now, but Lake made RMBs a delight. Lake of Fur kept the bar in The Bar On the Corner of Every Region. They always had several characters on the go (they RP'd as individuals rather than nations). In my early days, most nations I met turned out to be Lake! The attention to detail was fantastic. I remember one character getting a ladder in her tights, and getting all self-conscious over it across pages of RMB. It was very believable. The RPs could cross between regions too. Like a character might leave a region for the Bus Stop, have some interaction there, then head to someplace else. All very clever, and very entertaining.

9003, who managed to make cards into a game. They set up the Card Olympics which were great fun.

Dog Lake? You know the player that I really mean. Almost every day, the featured region is one of theirs. The region will have a real-life name, have a founder called "The Queens State of...", and over 500 embassies to other real-life named regions. They run 0000, Ancient Lands, and United States of America.
If you ever studied Graph Theory in maths class, or if you get excited about network analysis, then you'll get this.
As far as I can make out, the player runs two main projects, "The Matrix", and "The Oracle".
The Matrix links over 500 regions to each other. So every time they add a new region to The Matrix, they need to add over 500 embassies.
The Oracle links over 1000 regions in a chain across NS, in order of Update. Each region in the Oracle has two embassies, one that updates before, and one that updates after. If you start at Banana, you should be able to traverse the entire 'verse in update order by clicking through embassies.
Mathematically, there are a few errors in those networks, but on the whole, they are a stunning product of demented genius, and should be celebrated.

Embassy Master. I'm sure they were the original embassy collector (correct me if I'm wrong). You might not like it, but they definitely made an impact on the game!

And possibly The NationStates Bunny, who I think was one of the first region travellers, before Featured Region traveling was even a thing (cos Featured Regions weren't a thing way back when)

Would any of them be voted the GOAT? Probably not, but I do think that each of them carved a niche, or set a trend, that made NS a far more fascinating place to be.

_ THE HUNGER GAMES

Do you remember that day when you opened the kitchen cupboard, and tried to figure out how you were going to make Sunday dinner out of a stale slice of white bread, half an onion, and a sachet of ketchup? Hopefully that day was long ago, and I sincerely wish that you are never faced with that harsh a culinary challenge ever again. But with that memory for context, welcome to The Hunger Games!

Thanks to Dear Leader's wise policies, the supermarket shelf is unusually well stocked. Ration voucher at the ready, what do you buy for this week's meals?

Huh. Corned beef. Whaddya know? But if a food writer can romanticise it like this, I guess I can understand your choice:
[Corned beef's] "briny flavors are assertive, but not overwhelming, especially when balanced with earthy wedges of boiled cabbage and mild-mannered potatoes."

You gotta wonder what that food writer would have made from that bread and onion though.

Click to see if we're running a poll. Need to vote some more? Check out your eligible polls.

_ ASKING FOR TROUBLE

If you read the last piece I wrote about python, you'll know I started going down a rabbit-hole chasing asynchronous requests. That's one deep rabbit-hole, and I kept going for quite some time. And then I stopped. In the unlikely event that you want to know why, the reasoning is here. Instead, I embraced inefficiency, which made this next project so much easier.

I've a bunch of puppets that I occasionally use for card farming. When I turn up anime flags, I like to try & sell them rather than just junk them. The problem is how to advertise that I have these cards for sale.

There's a forum thread where we're allowed to advertise cards for sale. And also a specific anime card thread. But I don't fancy manually copy-pasting dozens of links to cards. How could I easily list all my puppets' asks in a single forum post?

I wanted some python code that would loop through all my puppets, pull back details of all the Asks that they'd placed, and create a table of that data. I would then copy the BBCode for the table, and paste it into the appropriate thread. The table should link to each card, so buyers can easily see what I'm selling and match my price. It also needs to display the nation name for each card, and the price I'm asking. It would look a bit like this:

Name and Link

Ask

Senji Muramasa

0.05

So I pulled together some code. It takes just over 30 seconds for every 50 puppets, satisfying NS's rate limit of 50 requests per 30 seconds.
Remember to set your own User Agent if you use this code!

# Asks
# Version 1.0
# All Wild Things

# Finds all Asks offered by each of a list of nations,
# and outputs a string representing an NS Forum table.
# Takes approx 30 seconds for every 50 nations.

import requests                     # allows synchronous http requests
import xml.etree.ElementTree as ET  # ElementTree allows XML to be parsed
import time                         # allows "sleep" function

def fMain():
    # strUserAgent needs set so that NS can contact you if the script goes wrong
    strUserAgent = "myaddress@gmail.com"
    # listNations lists all the nations whose "Asks" are to be found
    listNations = [
        "All Wild Things", 
        "All Mummified Things"
    ]
    # Start the string
    strOut = ("[table][tr][td][b]Name and Link[/b][/td][td][b]Ask[/b][/td][/tr]")
    # Loop through the nations    
    for strNation in listNations:
        # re-format the nation name so it can be used in a url
        strNation = strNation.replace(" ", "_").lower()
        # send a request to NS
        objResponse = requests.get(
            'https://www.nationstates.net/cgi-bin/api.cgi?q=cards+asksbids;nationname=' + strNation,
            headers={"User-Agent": strUserAgent}
        )
        # Look at the "Asks" in the returned XML
        objAsks = ET.fromstring(objResponse.text).findall("./ASKS/ASK")
        # Loop through the cards with Asks
        for objAsk in objAsks:
            strCardId = objAsk.find("CARDID").text
            strSeason = objAsk.find("SEASON").text
            strName = objAsk.find("NAME").text
            strAsk = objAsk.find("ASK_PRICE").text
            
            # Add details to the string - a link to the card page, the nation name, the ask price
            strOut = strOut + ("[tr][td][URL=https://www.nationstates.net/page=deck/card="
                + strCardId + "/season="
                + strSeason + "]" 
                + strName + "[/URL][/td][td]"
                + strAsk + "[/td][/tr]")
            
        # Rate limit is 50 requests per 30 seconds, so wait for 30 / 50 = 0.6 before next request
        time.sleep(0.6)
    # All nations have been checked, so output the string
    strOut = strOut + "[/table]"
    print(strOut)
    
fMain()

I tried going a step further, to add rarity, market value, and number of owners too. The code works, but this extra info slows the code down. Because the code now makes an extra request per card, this code takes an additional 30 seconds for every 50 cards.

Name and Link

Ask

Market Value

Rarity

Copies

Senji Muramasa

0.05

0.01

common

24

# Asks
# Version 1.2
# All Wild Things

# Finds all Asks offered by each of a list of nations, 
# requests additional data on each of those cards,
# and outputs a string representing an NS Forum table.
# Takes approx 30 seconds for every 50 nations, plus 30 seconds for every 50 cards.

import requests                     # allows synchronous http requests
import xml.etree.ElementTree as ET  # ElementTree allows XML to be parsed
import time                         # allows "sleep" function

def fMain():
    # strUserAgent needs set so that NS can contact you if the script goes wrong
    strUserAgent = "myaddress@gmail.com"
    # listNations lists all the nations whose "Asks" are to be found
    listNations = [
        "All Wild Things", 
        "All Mummified Things"
    ]
    # Start the string
    strOut = ("[table][tr][td][b]Name and Link[/b][/td][td][b]Ask[/b][/td]"
              "[td][b]Market Value[/b][/td][td][b]Rarity[/b][/td][td][b]Copies[/b][/td][/tr]")
    # Loop through the nations    
    for strNation in listNations:
        # re-format the nation name so it can be used in a url
        strNation = strNation.replace(" ", "_").lower()
        # send a request to NS
        objResponse = requests.get(
            'https://www.nationstates.net/cgi-bin/api.cgi?q=cards+asksbids;nationname=' + strNation,
            headers={"User-Agent": strUserAgent}
        )
        # Look at the "Asks" in the returned XML
        objAsks = ET.fromstring(objResponse.text).findall("./ASKS/ASK")
        # Loop through the cards with Asks
        for objAsk in objAsks:
            strCardId = objAsk.find("CARDID").text
            strSeason = objAsk.find("SEASON").text
            strName = objAsk.find("NAME").text
            strAsk = objAsk.find("ASK_PRICE").text
            
            # Rate limit is 50 requests per 30 seconds, so wait for 30 / 50 = 0.6 before next request
            time.sleep(0.6)
            # send a second request to NS
            objResponse = requests.get(
                'https://www.nationstates.net/cgi-bin/api.cgi?q=card+info+owners;cardid='
                + strCardId + ';season=' + strSeason,
                headers={"User-Agent": strUserAgent}
            )
            strMarketValue = ET.fromstring(objResponse.text).find("./MARKET_VALUE").text
            strRarity = ET.fromstring(objResponse.text).find("./CATEGORY").text
            strOwners = str(len(ET.fromstring(objResponse.text).findall("./OWNERS/OWNER")))
            
            # Add details to the string - a link to the card page, the nation name, the ask price
            strOut = strOut + ("[tr][td][URL=https://www.nationstates.net/page=deck/card="
                + strCardId + "/season="
                + strSeason + "]" 
                + strName + "[/URL][/td][td]"
                + strAsk + "[/td][td]"
                + strMarketValue + "[/td][td]"
                + strRarity + "[/td][td]"
                + strOwners  + "[/td][/tr]")
            
        # Rate limit is 50 requests per 30 seconds, so wait for 30 / 50 = 0.6 before next request
        time.sleep(0.6)
    # All nations have been checked, so output the string
    strOut = strOut + "[/table]"
    print(strOut)
    
fMain()

For my purposes, I decided to stick with the first version. I decided I didn't want to advertise that I was asking above market value, or that lots of other people have these same cards!

If you do try to use this code, DO set your own UserAgent. And DON'T expect this to be bug-free - just because it all seemed fine to me is no guarantee that it will be fine in all circumstances. And you're welcome to suggest improvements!

_ MORE READING

What else is worth taking a peek at?
Lord Dominator hosted the annual Gameplay Awards. Click through to see the winners for 2022!
Reventus Koth wrote The Drewpocalypse: A Retrospective. It's a great post, and if you scroll down, you get some good insights from the Durnilites themselves.
:rolls eyes: Yeah. And the Flag Thief returned.
Ooh! And issue two of Rouge magazine. These are cutting edge visuals. By which I mean they'll make your eyes bleed ;). I am truly in awe at the format of the index page though. I think that's graphic genius.
Check out Libertia-Columbia's NS History Repository.
And check out Wormfodder delivery's Guide to Tables. It turns out there's more we can do with tables than we were told!

_ NOTIFICATIONS

You will have received a notification if you have been mentioned somewhere in this dispatch, and have a tick in the "Dispatch mention" box of your subscriptions page.

Almost all nations mentioned will have:
- done something I felt was worth writing about in an article
- voted in a recent not-so-recent Where The Wild Things Are poll

If you would prefer not to be notified in future, your choices are:
- Stop doing cool stuff worth writing about
- Don't interact with our RMB or polls
- Un-tick in the "Dispatch mention" box of your subscriptions page

But hopefully you enjoyed this dispatch, and don't mind the ping.
If you would like to subscribe, please post the word 'Subscribe' on Where the Wild Things Are RMB, or send me a TG, and I'll take a note to ping you next time.

Thanks for subscribing!
Aleixandria, Davelands, Falafelandia, Indusse, Jeeves Land, Mauryavarsha, Napaqaq, Of Altonianic Islands, Pathoal, Ricore, Sky point, St Saratoga, The Georgeian Empire, The Orwell Society

RawReport