#init script
Explore tagged Tumblr posts
meelonkurb · 4 months ago
Text
self reblog because this picture reminded me of this au
Tumblr media
an android marc model being shown behind a store window type beat
This probably has already been done but I can’t stop thinking about a Detroit Become Human AU with rosquez (android Marc with everyone at the ranch) .
This is a 1k word long yap of ideas so it's all under the cut. YOU HAVE BEEN WARNED BECAUSE I'M NOT A FIC WRITER.
Rough idea of android Marc being at the ranch as a household android. Taking care of chores there because..well kind of a big place and the academy kids/guests being around a lot. So Valentino needs some help and probably doesn't care to pay actual workers anymore and gets an android instead (don't mind the academy riders timeline I've given up on that).
I imagine that at the ranch, Marc starts deviating because omg look at the bikes...I also want to ride...I also want to help teach the kids...(instead of relationships kind of being the main reason for his deviancy, it's mainly the human desire for passion and curiosity, like he was born to ride and not to be ordered around to do chores..)
And Valentino actually encourages this (he is down bad) while Uccio is losing his mind because?? hello it's a household android what do you think you're doing??
I also feel like the academy riders are probably at first creeped out by an android but then warm up and go omg new father/mother figure. And Marc is just "damn....I've become attached to these stupid kids now, this isn't part of my programming.."
Ok so the divorce arc is still a bit ehh for me and other people will probably have much better ideas for it. BUT I do have a rough idea of something involving the 2015 incident.
Marc probably convinced Valentino to bring him to some races to "run errands for him and his riders around the paddock" when it's more like Marc's own little fantasy to see the bikes in action irl (context: no android riders but there are android staff around the paddock so it's less sus to have Marc there anyway).
Naturally, Marc starts talking to some other riders. Mainly Dani, Dovi, BUT ESPECIALLY JORGE. Why? Well they're literally at the same garage so forced proximity. But also I'd say that Marc more frequently talks to these riders because they actually treat him civilly as an android. Compare that to a lot of other people around the paddock, who see androids much more as just objects than actual people. Marc feels like he can actually be himself around them, just like at the ranch with Valentino and the academy.
HOWEVERRR, Valentino doesn't look at it that way.
Some factors of Marc becoming more deviant and going against Valentino's orders at the ranch (like Marc riding at the ranch with insane precision/aggression because he's an android and crashing a lot because of it) combined with having little shush shush conversations with other people around the paddock. This makes Valentino go "oh no he isn't telling me everything and ignoring some of my commands...what is he hiding..."
And then seeing him being a buddy buddy with Lorenzo and Marc kind of deflecting what they are talking about makes Valentino even more suspicious.
THEN SEPANG HAPPENS. Jorge does really well, while Valentino maybe had some mechanical issues resulting in a bad result (this is replacing the penalty stuff because well..Marc isn't racing). Before the race, Marc said he had to run some errands around the paddock and just disappeared. After the race Valentino starts getting more mad/suspicious of Marc just doing his dissappearing act and disobeying his commands "he's still my android!!!). Uccio of course then starts whispering to Valentino "psstttt I heard from a friend of a friend of a friend of a friend of that Marc and Lorenzo were at the garage in the morning..." OH NO. Lorenzo must have convinced Marc to tamper with Valentino's bike and Marc gave him all of Valentino's data/tips/whatever.
Honestly, Marc was probably just making sure all the academy riders around the paddock were fine and then went to the garage to polish/organise stuff around for Valentino and Lorenzo just happened to be there.
"hey so as a household chore do you suck his di-"
"fuck you go suck your own dick"
"okayyyyy"
But all of these factors (the dangerous riding at the ranch, secret conversations with others, disobeying Valentino's direct commands, and Uccio convincing that Marc's affection towards him and the academy kids are just part of his programming) makes Valentino want to send Marc to cyberlife to get him fixed/reset. After all, Marc is a household android NOT a rider/father figure. He has to become obedient again (similar to when Valentino was like "wow he idolised me but not anymore he is going against me instead how dare he").
When Marc learns of this he's like "oh shit. they'll know that I'm a deviant. They will either replace me and dump me at the landfill OR do a factory reset to my systems" WHICH BOTH SUCK (he most likely kept his deviancy secret because Uccio already hates androids anyway and he probably would have been sent to cyberlife even earlier). He just decides to run into hiding (Kara kinda vibe here).
He's probably alone for a while before meeting some other androids in hiding. I'm thinking of like marc's brother in this instance because they are super dependent on each other. Also as an extra maybe David? because Marc will be like "omg a kid like my academy kids".
EXTRA FOR MARC'S INJURIES
This is just an extra idea for Marc's list of injuries integrated to this au. He most likely had his eye injury before running away. Maybe at the ranch he crashed hard and Valentino had to convince cyberlife technicians "uhh um he just randomly got this eye injury whoops! he definitely isn't doing any riding no siree".
For his extensive arm injuries, I imagine that sometimes after the divorce he's like "fuuckkkhjkkkn I need to ride so bad i'm going crazy"
Proceeds to join some random local motocross competitions, where no one is gonna even try to identify him and crashes hard again like an idiot and fucks his arm up.
And well... where the hell is he gonna get biocomponents from in hiding. He just kinda tries fixing it with random tools but it's never really the same.
After stasis, he sometimes gets biocomponent damage warnings when it's a bad arm day. Drinking thirium kind of helps, so Alex and David (as concerned androids/family) do some dangerous crimes to get some for Marc.
ANYWAYYY that's all I have right now. I needed to get this out of my head before I go insane.
23 notes · View notes
saltydkdan · 2 years ago
Note
Salty i wanna get into Baki which one do you recommend,the manga or the anime?
Oh you just woke up the fucking beast (I'm so sorry).
I LOVE this question, and as a recent Baki fan myself, I can tell you that getting into the series as a Western consumer can be rough if you don’t have a basic guide to know what you’re getting into…. so that’s what I’m gonna make this post (TEEHEE).
This series has gotta be one of the most insane shonen- actually no- one of the most INSANE PIECES OF FICTION I've ever experienced, and I NEED more people to check it out. Like, LOOK AT THIS SHIT DUDE.
Tumblr media
Baki out of context somehow even puts Jojo's Bizarre Adventure to shame. The way I usually pitch it to people is that Baki is as insane as people THINK Jojo is before they read it. Shit is just... MAN LMAO. OBAMA IS FUCKING IN THIS.
Tumblr media
Unlike more popular stuff like Dragon Ball and Hunter x Hunter, a lot of this series has just never been officially localized, so knowing where to start, and even how to support the series, is a hard task if you don’t know what you’re doing.
Thankfully THAT’S WHAT YOU HAVE ME FOR. This Tumblr post is gonna be your one stop shop for how to get into Baki as an English speaker (and it’ll give me some space to ramble about one of my latest favorite series).
But uh before we get into the nitty gritty, wanna put some trigger warnings for the series for those who may want to know. Listen, I know how some of these are gonna look to the average person, but this series just be like that sometimes, if you can’t take stuff like this trust me it’s insanely valid. You’ll understand if you choose to take the plunge.
SERIES TRIGGER WARNINGS:
Animated Blood/Violence, some animated gory imagery, Incest (???), Nudity, Urine stuff, Bigfoot/Animal Violence, Death, Uncomfortable looking muscles, and one instance of sexual violence (offscreen)
If you are comfortable with all that (and again, valid as fuck if you aren’t) then let’s talk BAKI!
Tumblr media
First off, Manga or Anime?
You would think that either would be fine, but my personal recommendation for Baki as a beginner, is to watch the anime over reading the manga. Simply put: The anime is a lot more widely available and accessible in English speaking territories, and is fairly easy to support officially with its current iteration.
For whatever reason, the manga just never really took off in the West when compared to other series, so it was only ever officially released in English a handful of times, and they only ended up publishing the first few volumes. Theoretically, you can read the first few books to start, but the entire series all together is legit longer than One Piece at a whopping 1,203 chapters, so you are gonna run out of material real quick. The fraction of officially available manga barely scratches the surface of the series.
Even if you’re stubborn about reading the manga and want to try reading fan translations, they come with their own separate batch of issues. Plenty of fan scans you can find online range from wildly outdated, to generally being poor quality at best. There’s even some fan translations that just straight up make shit up and don’t even properly translate the original script. Adding in extra dialogue and slurs randomly to make the text seem way edgier than it actually is.
Full disclosure, I wanna cut through my bias here and say that there are indeed some great scans available on the internet if you look hard enough, especially for the more recent content! But they aren’t super easy to track down with how the series is formatted, and you may accidentally find yourself reading the story out of its proper order.
The watch/read order of Baki is a bit of a toughie for new people, but is actually pretty simple once it’s explained. The story of Baki is split up into multiple different series, kind of similar in format to Jojo’s Bizarre Adventure. Though instead of “Parts”, Baki is split up into completely different manga and TV series. This is why many fans get confused initially, especially with the watch order, because it isn’t laid out in an easy to understand way at first glance.
The most well known series are currently streaming on Netflix, but those aren’t the ones you wanna start with. Nope, the story of the Baki anime actually starts way back in 2001, in a TV show that isn’t streaming officially online. Now if you want to watch out of order, I’m not gonna stop you. You can do whatever you want, by all means, but you’re gonna be missing some VERY important story context, and some characters just won’t hold the same weight.
So if you DO want to watch in order, come with me my friend. Let me show you-
BAKI’S SUPER COOL AND NOT AT ALL CONFUSING WATCH ORDER:
Baki the Grappler (2001) (24 episodes)
Tumblr media
This is the original 2001 anime adaptation, the very start of serialized Baki anime. You’re gonna wanna start here trust me.
This series isn’t streaming anywhere officially online, but you can find it… places. Seek it out, trust me, because otherwise you’re gonna pay way too much for out of print DVDs on Ebay. Thankfully though you have options! The series is both subbed and dubbed (as well as every series I discuss from this point forward.
This show is the very start of serialized Baki anime, the very beginning of Baki Hanma’s story. Although it’s not in the way you may think. Despite this being the earliest point in the Baki timeline, it’s actually an adaptation of a later story arc from the manga.
Now I know what you’re thinking, “Didn’t you just say this is where I should start? Why is it adapting something from later in the story?”, and yeah it’s valid to be confused. While yes this is the first ever Baki anime, for some reason the staff behind it made the decision to move this later arc up a bit from the original manga. In my honest opinion, I feel like this is actually a great decision.
As you will see as you watch, this honestly FEELS like this should be where the story begins. The escalation of power and storytelling from this point onward feels very natural, and you won’t miss out on anything or spoil yourself whatsoever on later events.
This is the de facto best starting point.
Grappler Baki Maximum Tournament (2001) (24 episodes)
Tumblr media
This is effectively the second season of Baki the Grappler. For whatever reason they decided to title it something else, and while this is the norm for the series later on, this name change is weird because it adapts an arc from the original manga just like the first season of anime I just talked about.
Whatever lol.
Anyway this series, much like the previous, isn’t officially available as of now. So your best option is to SEARCH for it. SEARCH on the INTERNET. Or y’know. The good ol’ expensive out of print DVD on Ebay route.
In my opinion, compared to the first season, this one feels a bit slower paced and a bit of a slog at points but HOLD STRONG TRUE BELIEVER. This season is the introduction to a lot of mainstay characters in the series. Many of which you will come to love, even if you don’t know it yet.
BAKI (2018) (39 episodes) (NETFLIX)
Tumblr media
This is the modern adaptation of Baki. After the last series ended in 2001, the anime went on hiatus for 17 years before it was announced that it would be coming back with a modern coat of paint.
Contrary to what you may think, this isn’t a ground up reboot. It’s a continuation of the exact point they left off years ago, right after the Maximum tournament. The only thing that kind of sucks about this is that, at least for the English dub, they replaced most of the voice cast. Most of the new VAs do a great job, however you may need to get used to Yujiro Hanma having Shadow the Hedgehog’s modern VA from the games haha.
Thankfully, you can officially support this series easily via Netflix. Normally I’m pretty eh on Netflix as of late, but this being the only way you can support the show officially in the west, I personally recommend it.
Baki Hanma (2023) (39 episodes) (NETFLIX)
Tumblr media
This is the most recent anime! It’s also on Netflix.
Me and my friends just got to this on our watchthrough together.
Anyway, this is my list! If after you catch up you wanna hop into the manga and read the fan scans, I’ve heard that you can start on Baki Hanma/Baki Son of Ogre (chapter 183).
Hope you enjoy the funny man punching show! Feel free to report back and tell me how you feel about it (positive OR negative)!
Like I said, I've been watching the series with friends on Discord every night or so when we're free and MAN. Baki is fucking AMAZING WITH FRIENDS. It just never slows down after a certain point, and it just gets stranger and crazier.
388 notes · View notes
techav · 11 days ago
Text
On Accepting Victories Where They Come
Tumblr media
At the end of my last post on getting NetBSD running on my 68030 homebrew computer, I had a (mostly) working root shell prompt in single-user mode.
Well here we are a week or so later and I have ... a (mostly) working root shell prompt in single-user mode.
It turns out bringing up a modern operating system is hard.
The first problem was the default collection of init scripts. There are a ton of scripts in /etc/rc.d that are run at startup to finish bringing up the system after the kernel is loaded but before users can log in. These scripts do things like check filesystem integrity, mount disks, initialize networking, etc. Most of the scripts are not relevant to my specific hardware, but I wasn't even getting far enough along for that to matter. I was getting stuck early on in two steps in particular: filesystem checks and initializing /dev/random.
The latter issue there's not really anything I can do about. I can copy a pre-populated entropy file from an existing system, but I don't have the hardware support for random number generation. Frankly I don't need it either, if I'm not doing anything with cryptography like using TLS certificates. So remove that script.
I can check and repair the filesystem much faster on my host machine, so remove that script for now also.
And remove all of those networking-related scripts since I don't have the hardware for networking either.
It turns out init scripts have declared dependencies on other scripts. So removing one, especially an early important one like checking filesystem, means editing others to continue without it. It's dependency hell.
So for the sake of just getting things running, I removed everything and wrote my own. There were just a few things I really needed, like mounting the root filesystem as writeable and initializing TTYs.
It took a few tries to get it right, but my init script did eventually run without stalling. This was it, time for it to initialize the terminals and print the login prompt …
init: can't add utmpx record for 'tty01': Bad file descriptor
… That's not a login prompt. That's not a login prompt at all. What does that even mean? What on earth is utmpx?
The error message itself is printed by init. UTMPX keeps record of logged-in users, and it does so using a file, /var/run/utmpx. But is the bad file descriptor error relating to that file or to /dev/tty01?
I was stuck here for a while. I tried everything I could think of to make sure my tty devices were created properly and with the right major/minor numbers and permissions. I finally realized that I didn't get the error if the utmpx file didn't exist. So something was wrong with writing the file, possibly due to never being able to properly shut down and close out the file & filesystem any time it got created. But it's easy enough to just make sure it's deleted by the init script before getting to that point.
It's at this point where I went down a rabbit hole of trying to create a RAM disk for root just to eliminate the possibility of lingering problems with the ATA driver or similar. This proved to be a dead end because the system would only boot single-user from a RAM disk, and I also got stuck in dependency hell trying to get it to compile a RAM disk image that included the actual login binary.
After some more experimentation, I learned that if I had no extra terminals defined in /dev/ttys, then it would at least show the login prompt on the root console, but would never actually log in. Kernel debugger & SIGINFO would show that login was stuck waiting for something. If I did have multiple terminals defined, I would never see a login prompt and it would show that getty, which spawns the terminals, was sleeping, waiting for something.
And that's where I'm stuck. I have no idea what these programs are waiting on, and don't really have any way to check. I suspect it's possible they need those hardware interrupts I don't have, but since I can see activity on the UART chip select lines, I don't think that's the case.
So for now, facing a looming deadline and burnout setting in after a solid month of working on this, I've decided to accept the victory I have and admit defeat where I must. I have a computer that I built myself which can load and run a modern operating system up to the point of a root shell prompt. That is a remarkable accomplishment and I will absolutely accept that victory. There is already so much the machine is capable of just getting to that point. And going from knowing nothing about porting an OS to a new machine to having a running shell in under a month is a victory all on its own.
But, I was not able to get it fully running in multi-user mode on all of my terminals. I will happily accept that defeat in light of the major victory of getting as far as I have.
So, with VCFSW coming up very soon, I've decided to turn my attention back to my multi-user BASIC system. I have a few refinements and new features in mind that I would love to have ready by the show.
18 notes · View notes
namazunomegami · 2 years ago
Text
emperor!geto x imperial concubine!reader
Tumblr media
a/n: I’ve spent way too much time to research about chinese imperial concubines, playing with Royal Chaos during my highschool years and I had a boring shift at work. This is the result. Probably out of character as hell but hey, I wrote this for my enjoyment.
This is part 1 of a lil historical AU drabble series. I��m already finished with Sukuna, Gojo is in the works, and I got some ideas for Choso and Toji but don't think too much about it, ideas are just ideas.
I was so close to write reader as gender neutral but reader owns a type of traditional chinese headgear used exclusively by noblewomen so... yeah, reader is afab if you squint (very hard).
Likes and reblogs are appreciated, mwah <3
wc: 1011, I initally wanted a few headcannons but I got a full ass drabble
cw: suggestive, false accusations, implied murder, mentions of whipping, choking (not the kinky kind), yandere behavior
credits: renmakia for the gorgeous fanart and my dear @notveryrussian for proofreading and just putting up with my massive jjk brainrot every day, luv ya darling <33
MDNI, if you do, I'm gonna catch you like I'm gonna catch Gege.
He’s a monarch who considers his mind a weapon and information as a whetstone despite being born in relative peace. Spending his leisure time reading Sun Ce, the scripts of Confucian and Taoist scholars, sharing afternoon teas and long walks around the gardens with Buddhist priests and conversing about reaching enlightenment. As if he desperately wanted to understand how the world he was meant to rule works. His mandate of heaven brought prosperity, a flourishing economy, a strong connection between allied realms, a good education system that produced more scholars than in any other time before.
Competing for his attention is not an easy task. You almost gave up, bracing yourself for a long and uneventful life where you can only admire him from afar. You sit in the shade of a willow tree with a board of xiangqi, your playmate having left you not so long ago and you were trying to figure out which tactics and strategies they should’ve used to defeat you. You’re so lost in your thoughts you can’t notice him standing there, in the presence of his guards. You kowtow to him, excusing yourself for daring to bother him, pleading for his patience while you pack your things and leave. He likes that your manners are spot on, and he rewards you with a command to stay, to play with him, since xiangqi is a game between two people. And based on the positions of the pieces on the board you’re an experienced player.
Of course, he defeats you with ease, but he’s grateful you showed him everything you’ve got and didn’t let him win. He tells you that his victory lies in applying the teachings of Sun Ce to his playstyle. Your eyes light up and you beg him to elaborate further, maybe he can help you improve your tactics in the next game. He’s such a well-read man, so hungry for knowledge, so desperate to understand people. You’re sure he wants to figure out your thoughts too, what you think about the world, what values dominate your heart. And the secret to win him over is to shower him with all the details and even politely disagree with some of his beliefs and explain your point of view. That’s what gets him going, knowing your place in the hierarchy but not being afraid to stand your ground. Mindless obedience, at this point, bores him. That’s probably the reason why he slowly starts to favor you, your conversations refresh him, inside and outside of his bedchambers.
You may think that earning your place in his heart is a lengthy and hard process, but when he becomes sure that your infatuation comes from an honest place, he generously rewards your efforts. He showers you with gifts, each more thoughtful than the other. He sends you scripts from his personal library about topics that interest you, fulus he received from his priests to protect you and your chambers, phoenix crowns so elaborately adorned with pearls, sapphires, small dragons, and phoenixes made from solid gold. Gowns embroidered with clouds, cranes dancing around them, gifting you a small piece of the sky itself he descended from. He elevates your rank quickly so you can accompany him during events. Letting the whole court look at you, wrapped in everything he gave you, standing so close you can see him stealing glances at you from under the twelve tasseled crown. He rewards your family with money, grain, rice, political power. If he lifts you up, he does the same with everyone important to you.
But Geto’s court is highly competitive. It’s certainly not easy to be his favorite. You can literally smell the stench of jealousy eminating from the other consorts. Their gaze pierces your skin deeply when the eunuchs drag you around the Palace of Heavenly Grace with a brocade blanket hugging your naked figure. They must endure the sight every other night and they have no idea that the son of heaven is ready to serve you and do as you please behind closed doors and not the other way around, as tradition dictates.
Though he can comfort you, outside of his chambers you fear for your life. You needed a food taster now and never dared to walk the gardens without at least four guards in your proximity. You begin to doubt the trust between you and those you’ve befriended, because they can only blame you for his negligence towards them.
And then, the first accusation about you begins circulating around the palace. Some concubines claimed that you were guilty of witchcraft. So many of them are against you, with so much made-up proof you cannot do more than spend the night crying, believing that at dawn, guards will come for you and throw you into a well. You have no idea where Geto is or how you could beg him for protection.
The next day, strangely, a new set of officials deem you innocent. What boggles you even more is that he comes to your residence instead of having you delivered to him. Even his scent is not like it usually is, there’s something metallic, salty, and musky mixed in with the incense smoke.
That night he cradles you, shushing you, promising to keep you safe at all costs. Keeping it a secret how brutally he disposed of the rumor mongers, how he had some of his officials whipped bloody for not believing your testimony or about the thinly veiled threats that he’ll make anyone’s life a living nightmare if anything happened to you. Your heart skips a beat and simultaneously sinks deep in your chest when those of higher rank than you lower their head, trying their best to not look at you as they pass you by. With dark marks staining the skin below the neckline of their gowns, not even the empress consort being an exception.
It's not easy to be his favorite. It’ll never be easy.
But he’s a god, the son of heaven, and heaven will forgive him and so will you.
330 notes · View notes
zosa95 · 9 months ago
Text
Tumblr media Tumblr media
Gemma: Eva, I have a question…
Eva: Ask away.
Gemma: Jude was initally- I dunno, wary of me? Why did he pick me for his quiz team?
Eva: (groans) You can’t repeat this to Markus.
Gemma: (slowly) Okay.
Tumblr media
Eva: You’re a former soap star. Soap stars are known for memorizing long scripts quickly, right?
Gemma: Right.
Eva: Jude and Mak are competitive. They both wanted you on their team, and they arm-wrestled for you.
Tumblr media
Gemma: (bursts into laughter) So Markus wasn’t Mak’s first choice?
Eva wrinkled her nose and shook her head.
Gemma: Well, the joke’s on them because I already have pregnancy-brain. I found my misplaced keys in the fridge this morning.
Tumblr media
Eva laughed heartily, and Greta looked up from her play - and, despite not understanding the conversation - joined in with tiny belly laughs.
31 notes · View notes
ihaveforgortoomany · 8 months ago
Note
Comrade Forgor! I offer you more Actors AU because they're rotting my brain
Vila Is experienced in acting and is pretty famous around the world while Windsong was a theater kid who ended in the series by luck.
Windsong: I have no idea why someone like Vila like a newbie like me, she's such a professional and I'm just another new actor. She's so perfect and I'm just, not.
Melania who just asked for the time and ended up being a psychologist: And why do you feel this way?
Greetings Comrade!
Keep feeding the AU!
Alright with Windsong, I remember with her VA reddit QnA she mentioned that she initially auditioned for Vila, but she was shifted over to Windsong because they loved her voice so much.
Maybe the same happens here with a twist! Vila initally auditioned for Windsong but was switched to being Vila!
Alot of their chemistry in the show is partially natural! Like in their first interaction Windsong was very nervous working with Vila, but as the story progressed the both of them got very comfortable with each other!
Im interested in what a Melania and Windsong interaction would be! (The 1.1 event is my weak point, I do need to rewatch it or replay it). Maybe the both of them know each other in the past in film school, either friends or passing acquaintances is up to you. I can see after each take of the Rayashki story Windsong immediately walks back to the fitting room to find Melania and meltdown.
Windsong: Oh my god Vila is so amazing and so pretty wow how am I acting with her? Am I bringing her down with my acting? I feel so weird around her...
Melania, probably already tired of Windsong pining and self-deprecating and really just asked for the time: Why so you feel this way?
Melania ends up being Windsong's wingman purely since they run into each other very often, and I think Vila is 100% aware of Windsong's feelings but would prefer Windsong to say it first.
I guess anecdotes can be included in the script? So its Vila's then Windsong's, and with hers she gets to an emotional scene (i don't have a screenshot but the one where she crying holding the phone), that wasn't just acting but the story hitting close to home for Windsong.
So after filming that scene its Vila who comforts her and maybe thats when they grow closer together.
19 notes · View notes
onboardsorasora · 11 months ago
Note
I just wanna know how the pitch for the legend of ricallen video went and what was the script writing process?? Like it is the gayest video they could’ve made
the pitch was quite literally "I wanna come out.... subtly"
and Blake said "um you sure?"
and Daniel said "See if Beats wants to bankroll it. I already have a script." and Daniel hands Blake a notebook with scribbles and hearts and his and Josh's name all over it. Initals everywhere.
Inside the book is a handwritten fanfic.
this is factual and true. I was the pen Daniel wrote with
39 notes · View notes
callistocalavarni · 10 months ago
Text
Wish me luck ❥ 𓄲 𓄴 
I have found love in a new reality and will be planning to shift there for a very long time.
Tumblr media Tumblr media
I already posted this in Red Takami's shifting discord sever in the methods channel, but I also wanted to post it here because I feel like i've been neglecting my tumblr. When I first joined shifttumblr, the inital introduction I had to it was Leydenkilgore's profile. She is a saint. Even though I have shifted before I unfortunately have fallen into a slump do to personal issues and haven't shifted as much as I use to. I also fell out of love with a lot my old dr's; Though I hope they intrest me again later in my life. Leydens post about expermenting with methods stuck out to me, as i've never really thought about doing that. I wasn't familer with any of the methods she had talked about as I just make it up as I go when I shift but from here on out I will be changing my routine. In her post she talked about watching a film that helped create a new method. I read the google doc she made and now I have a plan on a new shifting routine. (I recommend reading the google doc if you're interested it is linked in her post, which I have linked earlier in this post.)
Tumblr media Tumblr media
i’m experimenting. I didn’t try and shift last night like I said I was. Last night I FINALLY decided on a reality of which I wanted to shift to. (i swear everyday I think of a new dr; i’m trying to fix that) I had this problem were I would over script for my dr’s…. and then never ending up trying shifting there because of multiple reasons; I didn’t feel the connection I felt with it when I first thought of it, or I got really motivated to script every little detail instead of actually shifting… So i’m doing something new. I’m not going to script at all for the dr I’m shifting to and just trust my subconscious. I know the general vibe of what I want and who i’ll be but other then that it’s up to the right side of my brain. I’m going to try the hypnagogic method tonight and tomorrow, then i’ll be trying the somewhere in time method for two days after that. Then after that I will be trying a combined method of both; Hypnagogic Time method. ( i have tweaked it to my liking ) I have the intention to shift with each experiment. And i’ll log my dr experiences in my journals ( that i script into all my drs ) and if I ever come back or shift to a parallel reality like this one I will share them! I am also laying down on the floor for this method because every time I go and shift laying on my hardwood floor I always shift. I don’t know what it is about it that makes me shift, but if you want to switch up your shifting routine I definitely recommend it.
Tumblr media
note; Lumari is a country I scripted, Kirasia being on of its regions.
I've always thought about shifting but didn't have a name for it. It was in the back of my mind since I was a kid; then it blew up on tiktok and then I started to get more into it, I just always felt that there was a possiblity of something like it; mainly because I wanted something like shifting to be real. Then, a couple years ago I did it for the first time and that made me full send into it. I mostly shifted to space dr's because space was what I was most interested in. I was huge on shows like farscape, cowboy bebop and the x-files. Before life in my or hit the fan and became really shitty, I was shifting to my space stalker dr non-stop. And then a bunch of family issues arose. And that's when the shifting slump started. I was having severe mental break-downs everyday, was extremely exhausted and just taxing to be around; I would blow up at people for the smallest things and my family would do the same to me. Thankfully, everything died down. My life gradually went back to normal, my family became safe to be around again and shifting just wasn't on my mind as much as it use to be. But now, it is. Since then, I haven't really thought about shifting to my space stalker dr but in the back of my mind a new idea popped up. I will maybe post about Lumari more, I have made one post showing the map but that's about it. I have also shifted there a couple of weeks ago but as a... guy?? Which I did not intend to do. I stayed there for a couple of days and shifted back on accident. Since then I haven't tried to shift. But I intend to tonight. ( as a girl lol ) Again I haven't made an indepth script for this dr because I do not want to lose the spark I have for it.
Tumblr media
My plan for tonight is meditating, laying on my floor with my headphones and listenting to music that reminds me of my Kirasia reality. Then, focus on my breathing and think about slow calm moments in my reality. I have the intention to become aware of my dr while I am looking out of my bedroom gazing onto the mountains.
22 notes · View notes
tf2heritageposts · 4 months ago
Note
i fear your audience never heard of operation sundial
to be fair this is a tf2 blog and nobody has ever claimed we are the most well read fandom around
on this, something i really find strange is the complete lack of discussion in the tf2 fan sphere of the fact that tf2 takes place in 1969 in new mexico. aka 20ish years after hiroshima and during the cold war, where the thing on the back of all american men women and child’s minds was “are the russians going to nuke us?” hence the extreme anti russian and communism rhetoric present during that time, along with mccarthyism because ya know.
as well as new mexico being the inital site where they tested the bombs that would be launched on japan, multiple sites in new mexico being freshly radioactive and spreading towards the tribes causing them radiation sickness…yeah. i’m pretty sure bonk atomic punch is meant to be lampshading the whole nuclear testing thing but it isn’t actually full ass in it
i’m not really sure if i’m just doing a “why didn’t turning red mention 9/11” here but it is extremely strange to me that i have never seen a fic bring up WHY 60s america hated russians and commies and the whole nuclear fear
in the fan comic i keep mentioning i’m planning out, it’s actually a semi important plot point that mort is scared of russians and especially of nuclear bombs, often hiding under medic’s table to “protect” themself from the radiation (even though medic unempathetically points out this would do nothing). buuuuut i am no where near the part where i can actually start scripting that shit so
10 notes · View notes
spark-hearts2 · 4 months ago
Text
I AM SO GOOD AT CIRCUIT BUILDING AND PROGRAMMING RAAAAA
C++ script under cut :3
int UpDown;       //value for the Y direction of controller
int LeftRight;    //value for the x direction of controller
int LR_neutral;   //value for the 0 position in the y direction of controller
int UD_neutral;   //value for the 0 position in the x direction of controller
int Bprev;        //value for button edge detection
int Bcurr;        //value for button edge detection
int R;
int Y;
int G;
int B;
void setup() {
  Serial.begin(9600);  //begin communication
  pinMode(A2,  INPUT); //button press detection
  pinMode(4, OUTPUT); //set pin 4 to power the Red LED
  pinMode(5, OUTPUT); //set pin 5 to power the Yellow LED
  pinMode(6, OUTPUT); //set pin 6 to power the Blue LED
  pinMode(7, OUTPUT); //set pin 7 to power the Green LED
  LR_neutral = analogRead(A1); //set zero position of controller
  UD_neutral = analogRead(A0); //set zero position of controller
  //WARNING!!! YOU CAN NOT TOUCH CONTROLER WHEN INITALIZATION HAPPENS!!!! WILL MESS CONTROLLER UP
}
void loop() {
LeftRight = analogRead(A0);  //read X position of controller
UpDown = analogRead(A1);     //read y position of controller
Bprev = Bcurr;               //set current button state to previous state
Bcurr = analogRead(A2);     //set current button state equal to actual button state
if ((Bprev == 0) && (Bcurr > 0)){
  //turns all LED on
  digitalWrite(4,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite (7,HIGH);
  delay(100); //wait
  //turns all LED off
  digitalWrite (4,LOW);
  digitalWrite (5,LOW);
  digitalWrite (6,LOW);
  digitalWrite (7,LOW);
}
if (UpDown >= UD_neutral) {  // checks if controller is up
  B = 0; //if up turns blue LED off
  R = map(UpDown, UD_neutral,1023,0,255);  //if up turns red LED on
}
else {
  R = 0;  //if down turns red LED off
  B = map(UpDown, UD_neutral,0,0,255); //if down turns blue LED on
}
if (LeftRight >= LR_neutral) {  // checks if controller is right
  G = 0;  //if right turns green LED off
  Y = map(LeftRight, LR_neutral, 1023,0,255); //if right turns yellow LED on
}
else {
  Y = 0; //if left turns yellow off
  G = map(LeftRight, LR_neutral, 0,0,255); //if left turns green on
}
//writes values to LEDs
analogWrite(4,R);
analogWrite(5,Y);
analogWrite(6,B);
analogWrite (7,G);
}
5 notes · View notes
potatooni · 1 month ago
Text
Hurry Up Tomorrow Out Of Theater Review
Eeerrrmmmm..... okay....? I came back form the theater about 1 hour ago and here are my thought on that.... thing....
Okay so, I get that this movie is basicly just a big ad for The Weeknd's final album but I’d hoped for some more meat and structural integrity than what I’ve got. At it’s core the movie is about the inability to being truly honest with oneself and not being able to face uncomfortable truths…. I think. Because quite frankly it’s rather muddled and doesn’t really feel like it’s following through with any of that. There’s supposed to be a connection between Abel and Anima, in that both are toxic and destructive but also unable to accept that part of themselves, wich is also why she ends up stalking and kidnapping him. But beyond that basic concept the script fails to really connect the two there.
For a trhiller the movie lacks tension. Sure we’re shown that Anima is unstable but there’s barely any of that coming across until she get’s into the argument with Able so the whole city cruising montage doesn’t really convey the sense of uneasieness it probably should’ve had. Almost like the audience wasn’t initally supposed to know that she’s dangerous. The only scene I felt has atleast some good tension was the tussle between Anima an Lee, but most of that came from Keoghan’s performance there. He did put in alot of effort. Jenna herself feels kinda wasted here. Sometimes her performance is good, like when Anima’s mother calls her, but most of the time she came of as set dressing despite being supposed to be the psychological foil of the movie. She seems to have been going for something akin to American Psycho during the, quite frankly too long and repetitive, finale but I don’t think it worked out the way she thinks it did. Irritating lack of Huey Lewis And The News there. I was actually quite dissapointed because the only reason I went to see the movie was because I was genuinly interested how she'd pull of a psychotic stalker character. The Weeknds performance is fine. He’s essentially just playing a version of himself so he didn’t have to actually get into character. There isn’t really much to it but I was positively suprised how expressive his face can be. On the positive side the movie does have good cinematography, even tho it often overuses continious shots like Zack Snyder overuses slow motion. I think however that an epilepsy warning would be in order because boy howdy I’m not even affected and I felt visually assaulted, especially during the concert and city cruising scenes. Yeah yeah I know: it’s supposed to be disorienting to immerse the audience but c’mon. The sound design leaves a bit to be desired aswell. I get that the goal was to make the soudn more „realistic“ by having the audio be uneven but it was distracting at times. The soundtrack also often drones over the dialogue wich was just weird. Sure, it’s a musician focused movie but how about just not having any recorded dialogue during those scenes and only have the music playing?
I can see why Jenna was interested enough in this project to even become executive producer, but I feel she got a bit too blinded by the wildness of the concept to realize the flaws. Also money. She probably got blinded by the fat stack of cash she got for this. Maybe I would’ve gotten more out of this movie if I actually where a The Weeknd fan and wouldn’t just know him as „that self absorbed guy who took over that The Idol mini series and made it all about himself“ (to his credit the movie aknowledges that this was stupid) but as it stands it’s just style over substance and I just couldn’t get into it. For a movie that was supposed to take the audience on a deep emotional journey it really falls flat on that front because it's too hard to get invested in Abels struggle, mostly because it's straight up alien to the average audience member. I give it 2/5. 1 because of the, sometimes, neat visuals and the second point for Jenna Ortega and Barry Keoghan atleast trying to give the audience something. Also, why the hell was the dream just Silent Hill? I’m not the only one right? That entire nightmare sequence felt like and abrigded Silent Hill game without the fog.
4 notes · View notes
mirqmarq428 · 2 years ago
Note
okay then give me your controversial linux opinions!
Thanks!
systemd is fine but you should use others to know how an init was supposed to work
Manjaro is worse than the devil
FISH is bad because people see fish features and assume they're exclusive to fish (not true)
ZSH is the Best Shell and we should link it to /bin/sh and everything. OhMyZsh is a crime against humanity, which adds runtime bloat to zsh and pushes people onto fish
Disk space bloat is good, actually. Give me all the files. This is completely different from runtime bloat
Powershell is actually a decent language for Linux scripts. It has types and can process json but shell commands are trivial as well.
GNOME system monitor is a better task manager than htop
The only filesystem you should ever need is BTRFS
Emacs is the best vim
21 notes · View notes
skaruresonic · 1 year ago
Text
Tumblr media
RenPy: Defining Characters
One of the first things RenPy does upon initialization (the boot-up period before the start label executes the game) is read your custom-made character strings to determine what character dialogue will look like.
Although defining usually takes place under the init block, I've chosen to make a separate pre-start label for organization purposes. Really, any time is fine as long as you make sure the pre-start label runs before the game actually executes, or else you're going to encounter errors.
Let's take a look at the code piece by piece.
$ a = Person(Character("Arthur", who_color="#F4DFB8", who_outlines=[( 3, "#2B0800", 0, 2 )], what_outlines=[( 3, "#2B0800", 0, 2 )], what_color="#F4DFB8", who_font="riseofkingdom.ttf", what_font="junicode.ttf", ctc="ctc", ctc_position="fixed", what_prefix='"', what_suffix='"'), "Arthur", "images/arthurtemp1.png") $ is a common symbol used by both Python and RenPy to define custom-made variables. Here in the pre-start label section of our script, we're using it to define our characters.
For the sake of propriety, it's probably better to define characters using define, but for ease of use, I've chosen $ instead.
It would be tiresome to have to write "Arthur" every time I wanted to call him in the script. Luckily, by assigning these parameters before initialization, RenPy will read "a" as Arthur.
Most scripts will suffice with assigning a Character object class to your character. If you open the script for The Tutorial, you'll find a basic string that looks like this: $ e = Character("Eileen") As you can see in my batch of code, however, I've done something different by nestling the Character object class within a Person object class. The reason why will become apparent in future posts.
For now, let's focus on the fundamentals.
---
Tumblr media
who_color tells RenPy the color of the character's name, determined by a hexadecimal code (either three, four, or six digits). Its sister parameter what_color tells RenPy the color of a character's dialogue text.
If no values are given for these parameters, RenPy will look at your project's GUI file to determine them.
---
Tumblr media Tumblr media
who_font tells RenPy the kind of font you want to use for your character's name, and likewise, what_font determines the font you want to use for your character's dialogue.
Note that these fonts do not have to match. They can be whatever font you wish.
The size of character names and dialogue text can be customized in the GUI file of your project:
Tumblr media Tumblr media
---
Tumblr media
who_outlines=[( 3, "#2B0800", 0, 2 )], what_outlines=[( 3, "#2B0800", 0, 2 )]
who_outlines and what_outlines add outlines or drop shadows to your text (character name and character dialogue, respectively). This string is expressed as a tuple, or four values enclosed by parentheses.
The first value expresses the width of the shadow in pixels. The second value is a hexadecimal value for your chosen color. The third value offsets the shadow along the X-axis (pixels to the right or left of the text). Because it's set to 0, my drop shadows do not appear to the right or the left of the text. The fourth value offsets the shadow along the Y-axis (pixels beneath/above the text). In this case, shadows appear 2 pixels beneath the text.
My outlines are a bit hard to see because they're only 3 pixels wide and 2 pixels offset.
---
Font files RenPy recognizes TrueType font files. You can download TTF fonts for free online - just be sure to unzip them and put them in your game folder.
If you intend to monetize your project, you absolutely need to make certain your fonts are royalty-free or, ideally, public domain. Most font families come with licenses telling you whether they are free use.
To be on the safe side, I would put the following code before the start label in your script, just so RenPy knows which files to look for:
init:
define config.preload_fonts = ["fontname1.ttf", "fontname2.ttf", "fontname3.ttf"]
---
Tumblr media
ctc stands for "click to continue." It's a small icon commonly seen in visual novels, usually in one corner of the text box, that indicates the player has reached the end of a line. It's called "click to continue" because the program waits for the reader to interact to continue. To make a custom ctc icon, make a small drawing in an art program and save the image to your GUI folder. As seen above, I'm using a tiny moon as the ctc in my current project. ctc_position="fixed" means the ctc icon will stay rooted in whatever place you specify in the code. Like with most everything else in RenPy, you can apply transforms to the ctc if you so wish. Fun fact: because the ctc is determined on a character-by-character basis in initialization, you can give different characters custom ctcs!
---
Tumblr media
what_prefix="" and what_suffix="" add scare quotes to the beginning and end of a character's dialogue.
One thing you'll notice as you work with RenPy is that "the computer is stupid." That is to say, the program will not execute code you don't explicitly spell out. Things which seem intuitive and a given to us are not interpreted by the program unless you write them into the code.
That is why, in this case, you need to specify both prefix and suffix, otherwise RenPy may begin lines of dialogue with " but not end with ", or vice-versa.
Note that unless you apply these parameters to the narrator character, ADV and NVL narration will not have them.
---
** Note: the next two tags following these ones are extraneous and therefore ignored.
10 notes · View notes
playstationvii · 7 months ago
Text
#SamuraiSkirtsTCGvideoGame script/code
To proceed with scripting and writing code from the models you're developing. However, based on the instruction, I'll provide a general outline and a starting structure for modeling and scripting.
Step 1: Define Data and Source Code Models
The data models and source code would likely need to reflect the structure of the project you're working on. Based on your past projects and descriptions (like the #SamuraiSkirts TCG), I'll assume that these models might involve:
Agents: Each agent could represent a unique entity or unit, possibly in a game, system, or organization.
Data Models: These would store properties and attributes about each agent (e.g., stats, skills, or behavior).
Interaction Models: These could define how agents interact with each other or the environment.
Game Mechanics: Given that your TCG involves several intricate systems, we can model specific game mechanics that could interact with agent data.
Step 2: Outlining the Data Models
Here's a simplified structure based on your mention of "agents," game mechanics, and potential cards.
Agent Model (Python Example)
class Agent:     def init(self, agent_id, name, role, stats, abilities, interactions):         self.agent_id = agent_id  # Unique identifier for each agent         self.name = name          # Name of the agent         self.role = role          # Role or class of the agent (e.g., Samurai, Healer)         self.stats = stats        # Dictionary for stats (health, power, defense, etc.)         self.abilities = abilities  # List of abilities (skills, spells, etc.)         self.interactions = interactions  # How this agent interacts with others (e.g., allies, enemies)
    def perform_ability(self, ability_name, target):         # Logic for using an ability         pass
    def interact(self, other_agent):         # Interaction logic between two agents (ally or enemy)         pass
Data for Agents
agents_data = [     {         'agent_id': 1,         'name': 'Agent001',         'role': 'Warrior',         'stats': {'health': 100, 'power': 20, 'defense': 10},         'abilities': ['Slash', 'Charge'],         'interactions': {'ally': 'Boost', 'enemy': 'Attack'}     },     {         'agent_id': 2,         'name': 'Agent002',         'role': 'Healer',         'stats': {'health': 80, 'power': 5, 'defense': 15},         'abilities': ['Heal', 'Shield'],         'interactions': {'ally': 'Heal', 'enemy': 'Defend'}     },     # Add more agents as needed ]
Step 3: Writing Basic Code Logic
Based on the provided model, here is a snippet for defining actions or interactions between agents (e.g., combat, healing).
Interaction Example:
class Game:     def init(self):         self.agents = []             def add_agent(self, agent):         self.agents.append(agent)             def start_combat(self, agent1, agent2):         # Combat logic between two agents         if agent1.stats['power'] > agent2.stats['defense']:             damage = agent1.stats['power'] - agent2.stats['defense']             agent2.stats['health'] -= damage             return f"{agent1.name} dealt {damage} damage to {agent2.name}. {agent2.name} now has {agent2.stats['health']} health."         else:             return f"{agent1.name} couldn't penetrate {agent2.name}'s defense."
Using the Code:
game = Game() agent_001 = Agent(agents_data[0]) agent_002 = Agent(agents_data[1])
game.add_agent(agent_001) game.add_agent(agent_002)
Start combat between two agents
result = game.start_combat(agent_001, agent_002) print(result)
Step 4: Iterate on Model Expansion
As we begin defining more data and functionality, I recommend:
Adding More Data: Additional attributes, such as experience points, level, inventory, or location in the game world.
Expanding on Abilities: Creating specific functions for the abilities each agent can use and how they affect other agents or the environment.
User Interface (UI): If this is part of a larger game or app, developing the frontend for users to interact with the data models.
Step 5: Defining Models for Source Code
If you have specific source code or APIs to integrate (such as an online TCG database or specific game mechanics), I can help you define models and scripts for data fetching, communication, or real-time interactions.
Please share more details about the source code or data you'd like to define so I can help expand or refine the models further. To further define the models for your project, we'll focus on expanding the Agent model, building out additional interaction models, and extending some game mechanics for your TCG system. Since you're working on a complex system like #SamuraiSkirts, we can enhance the models with more intricate attributes and behaviors for agents, abilities, and interactions. Let’s break down the models with a more detailed approach.
Step 1: Enhanced Agent Model
We can extend the Agent class with additional attributes such as leveling up, inventory, and status effects. This will allow agents to grow stronger over time, carry items, and be affected by various conditions during gameplay.
class Agent:     def init(self, agent_id, name, role, stats, abilities, interactions, level=1, inventory=None, status_effects=None):         self.agent_id = agent_id  # Unique identifier for each agent         self.name = name          # Name of the agent         self.role = role          # Role or class of the agent (e.g., Samurai, Healer)         self.stats = stats        # Dictionary for stats (health, power, defense, etc.)         self.abilities = abilities  # List of abilities (skills, spells, etc.)         self.interactions = interactions  # How this agent interacts with others (e.g., allies, enemies)         self.level = level        # Current level of the agent         self.inventory = inventory or []  # Items the agent carries         self.status_effects = status_effects or {}  # Current status effects (e.g., 'Poisoned', 'Stunned')
    def level_up(self):         """Increase agent's level and boost stats."""         self.level += 1         self.stats['health'] += 10  # Example stat boost on leveling up         self.stats['power'] += 2         print(f"{self.name} leveled up to level {self.level}!")
    def add_item(self, item):         """Add an item to the agent's inventory."""         self.inventory.append(item)         print(f"{self.name} obtained {item}!")
    def apply_status_effect(self, effect_name, duration):         """Apply a status effect to the agent."""         self.status_effects[effect_name] = duration         print(f"{self.name} is now {effect_name} for {duration} turns.")
    def use_ability(self, ability_name, target):         """Use an ability on a target."""         if ability_name in self.abilities:             # Example ability logic             print(f"{self.name} uses {ability_name} on {target.name}")             target.take_damage(self.stats['power'])  # Apply damage from ability         else:             print(f"{ability_name} is not available to {self.name}")
    def take_damage(self, amount):         """Reduce health when the agent takes damage."""         self.stats['health'] -= amount         print(f"{self.name} takes {amount} damage and has {self.stats['health']} health left.")
Enhanced Agent Data:
Here’s an example of more detailed agent data for the agents in your game:
agents_data = [     {         'agent_id': 1,         'name': 'Agent001',         'role': 'Warrior',         'stats': {'health': 120, 'power': 25, 'defense': 15},         'abilities': ['Slash', 'Charge'],         'interactions': {'ally': 'Boost', 'enemy': 'Attack'},         'level': 1,         'inventory': ['Sword', 'Potion'],         'status_effects': {}     },     {         'agent_id': 2,         'name': 'Agent002',         'role': 'Healer',         'stats': {'health': 90, 'power': 10, 'defense': 20},         'abilities': ['Heal', 'Shield'],         'interactions': {'ally': 'Heal', 'enemy': 'Defend'},         'level': 2,         'inventory': ['Healing Herb'],         'status_effects': {'Poisoned': 3}     },     # Add more agents as needed ]
Step 2: Interaction and Combat Models
Let's build out interaction models to handle combat, healing, and buffing (boosting stats of allies). These interactions will allow the agents to perform actions in battle or other scenarios.
class Combat:     def init(self):         self.turn_count = 0
    def resolve_combat(self, agent1, agent2):         """Resolve combat between two agents."""         self.turn_count += 1         print(f"--- Turn {self.turn_count} ---")
        # If one agent is stunned or otherwise unable to act         if agent1.status_effects.get('Stunned', 0) > 0:             print(f"{agent1.name} is stunned and cannot act!")             agent1.status_effects['Stunned'] -= 1  # Reduce stun duration         else:             self.attack(agent1, agent2)
        if agent2.status_effects.get('Stunned', 0) > 0:             print(f"{agent2.name} is stunned and cannot act!")             agent2.status_effects['Stunned'] -= 1         else:             self.attack(agent2, agent1)
    def attack(self, attacker, defender):         """Perform an attack from one agent to another."""         damage = attacker.stats['power'] - defender.stats['defense']         damage = max(damage, 0)  # Damage cannot be negative         defender.take_damage(damage)
    def heal(self, healer, target):         """Heal an agent."""         healing_amount = healer.stats['power'] * 1.5  # Example healing formula         target.stats['health'] += healing_amount         print(f"{healer.name} healed {target.name} for {healing_amount} health!")
Using Combat System:
combat_system = Combat()
Initialize agents
agent_001 = Agent(agents_data[0]) agent_002 = Agent(agents_data[1])
Simulate combat between two agents
combat_system.resolve_combat(agent_001, agent_002)
Step 3: Additional Game Mechanics
We can also build models for other mechanics like leveling up, status effects (such as poison or burn), and inventory management. These mechanics allow the game to dynamically change over time as agents grow and engage in combat.
Inventory System Example:
class Inventory:     def init(self):         self.items = {}
    def add_item(self, item, quantity=1):         if item in self.items:             self.items[item] += quantity         else:             self.items[item] = quantity         print(f"Added {quantity} {item}(s) to inventory.")
    def use_item(self, item, agent):         """Use an item from the inventory on an agent."""         if item in self.items and self.items[item] > 0:             print(f"{agent.name} used {item}!")             if item == 'Potion':                 agent.stats['health'] += 50  # Example healing             self.items[item] -= 1         else:             print(f"{item} not available in inventory.")
Example Usage:
inventory = Inventory() inventory.add_item('Potion', 3)
Use potion on agent
inventory.use_item('Potion', agent_001)
Step 4: Expanding and Refining the Models
Abilities: Extend abilities to include different types like buffs, debuffs, damage types, or status effects.
AI: Implement AI for agents that control their actions (e.g., attack, heal, use items) based on their current health or level.
Multiplayer: If your game involves multiplayer, expand models to handle turns, syncing actions, and managing multiple players.
By adding these layers to the game mechanics and data models, you'll have a richer system that allows for more complex interactions and growth for each agent in your TCG. If you have specific interactions, mechanics, or more advanced features in mind, I can continue expanding or refining these models. Let me know how you'd like to proceed!
To expand upon the initial agent models, we'll define agents 001 through 010 with unique roles, abilities, interactions, stats, and inventory. Each agent can represent a distinct character or unit in your game, with diverse attributes to reflect their role in combat, support, or other gameplay mechanics.
Let's start by expanding the previous Agent model to include more diversity for each agent. This will also involve assigning special abilities, inventory items, and unique traits for each agent to make them stand out in gameplay.
Step 1: Expanding the Agent Model
I'll first adjust the Agent model slightly for better expansion, ensuring that each agent has unique stats and abilities. This model will also handle more detailed interaction logic and inventory use.
class Agent:     def init(self, agent_id, name, role, stats, abilities, interactions, level=1, inventory=None, status_effects=None):         self.agent_id = agent_id  # Unique identifier for each agent         self.name = name          # Name of the agent         self.role = role          # Role or class of the agent (e.g., Samurai, Healer)         self.stats = stats        # Dictionary for stats (health, power, defense, etc.)         self.abilities = abilities  # List of abilities (skills, spells, etc.)         self.interactions = interactions  # How this agent interacts with others (e.g., allies, enemies)         self.level = level        # Current level of the agent         self.inventory = inventory or []  # Items the agent carries         self.status_effects = status_effects or {}  # Current status effects (e.g., 'Poisoned', 'Stunned')
    def level_up(self):         """Increase agent's level and boost stats."""         self.level += 1         self.stats['health'] += 10  # Example stat boost on leveling up         self.stats['power'] += 2         print(f"{self.name} leveled up to level {self.level}!")
    def add_item(self, item):         """Add an item to the agent's inventory."""         self.inventory.append(item)         print(f"{self.name} obtained {item}!")
    def apply_status_effect(self, effect_name, duration):         """Apply a status effect to the agent."""         self.status_effects[effect_name] = duration         print(f"{self.name} is now {effect_name} for {duration} turns.")
    def use_ability(self, ability_name, target):         """Use an ability on a target."""         if ability_name in self.abilities:             # Example ability logic             print(f"{self.name} uses {ability_name} on {target.name}")             target.take_damage(self.stats['power'])  # Apply damage from ability         else:             print(f"{ability_name} is not available to {self.name}")
    def take_damage(self, amount):         """Reduce health when the agent takes damage."""         self.stats['health'] -= amount         print(f"{self.name} takes {amount} damage and has {self.stats['health']} health left.")
Step 2: Define Agents 001–010
We'll now define agents 001 through 010 with varied roles (e.g., warrior, mage, healer), unique abilities, inventory, and stats. Each agent can have a special skillset that fits their role in the game world.
agents_data = [     {         'agent_id': 1,         'name': 'Agent001',         'role': 'Warrior',         'stats': {'health': 150, 'power': 30, 'defense': 20},         'abilities': ['Slash', 'Berserk'],         'interactions': {'ally': 'Boost', 'enemy': 'Crush'},         'level': 1,         'inventory': ['Iron Sword', 'Shield'],         'status_effects': {}     },     {         'agent_id': 2,         'name': 'Agent002',         'role': 'Mage',         'stats': {'health': 100, 'power': 50, 'defense': 10},         'abilities': ['Fireball', 'Teleport'],         'interactions': {'ally': 'Mana Boost', 'enemy': 'Burn'},         'level': 1,         'inventory': ['Spellbook', 'Mana Potion'],         'status_effects': {}     },     {         'agent_id': 3,         'name': 'Agent003',         'role': 'Healer',         'stats': {'health': 120, 'power': 10, 'defense': 15},         'abilities': ['Heal', 'Revive'],         'interactions': {'ally': 'Heal', 'enemy': 'Defend'},         'level': 1,         'inventory': ['Healing Herb', 'Potion'],         'status_effects': {}     },     {         'agent_id': 4,         'name': 'Agent004',         'role': 'Rogue',         'stats': {'health': 90, 'power': 35, 'defense': 12},         'abilities': ['Backstab', 'Stealth'],         'interactions': {'ally': 'Stealth Boost', 'enemy': 'Poison'},         'level': 1,         'inventory': ['Dagger', 'Smoke Bomb'],         'status_effects': {}     },     {         'agent_id': 5,         'name': 'Agent005',         'role': 'Tank',         'stats': {'health': 200, 'power': 15, 'defense': 50},         'abilities': ['Taunt', 'Shield Bash'],         'interactions': {'ally': 'Shield Wall', 'enemy': 'Knockback'},         'level': 1,         'inventory': ['Heavy Shield', 'Armor'],         'status_effects': {}     },     {         'agent_id': 6,         'name': 'Agent006',         'role': 'Archer',         'stats': {'health': 100, 'power': 25, 'defense': 8},         'abilities': ['Piercing Arrow', 'Trap'],         'interactions': {'ally': 'Hawk Eye', 'enemy': 'Silence'},         'level': 1,         'inventory': ['Bow', 'Arrow'],         'status_effects': {}     },     {         'agent_id':
To expand upon the agents' abilities and introduce AI, we need to focus on two main areas:
Ability Expansion: We’ll provide more variety and depth to each agent’s abilities (e.g., healing, debuffs, buffs, damage types, effects like stuns, poisons, etc.).
AI Implementation: Introduce an AI system that can control agents in combat, make decisions based on the game state, and choose appropriate abilities or actions. The AI will simulate behaviors such as attacking enemies, healing allies, or using items based on specific conditions.
Step 1: Expanded Abilities for Agents
Let's expand the abilities of each agent to include more nuanced actions such as status effects, damage types, healing, etc. We'll also add a resolve_ability() method to handle how abilities affect the game world.
import random
class Agent:     def init(self, agent_id, name, role, stats, abilities, interactions, level=1, inventory=None, status_effects=None):         self.agent_id = agent_id         self.name = name         self.role = role         self.stats = stats         self.abilities = abilities         self.interactions = interactions         self.level = level         self.inventory = inventory or []         self.status_effects = status_effects or {}
    def level_up(self):         self.level += 1         self.stats['health'] += 10         self.stats['power'] += 2         print(f"{self.name} leveled up to level {self.level}!")
    def add_item(self, item):         self.inventory.append(item)         print(f"{self.name} obtained {item}!")
    def apply_status_effect(self, effect_name, duration):         self.status_effects[effect_name] = duration         print(f"{self.name} is now {effect_name} for {duration} turns.")
    def use_ability(self, ability_name, target=None):         """Resolve the ability and apply effects to self or a target."""         if ability_name in self.abilities:             ability = self.abilities[ability_name]             ability.resolve(self, target)         else:             print(f"{self.name} doesn't know that ability!")
    def take_damage(self, amount):         self.stats['health'] -= amount         print(f"{self.name} takes {amount} damage and has {self.stats['health']} health left.")
    def heal(self, amount):         self.stats['health'] += amount         print(f"{self.name} heals for {amount}, current health: {self.stats['health']}.")
Defining more complex abilities with effects
class Ability:     def init(self, name, effect_type, magnitude, target_type, duration=0):         self.name = name         self.effect_type = effect_type  # e.g., "damage", "heal", "buff", "debuff"         self.magnitude = magnitude         self.target_type = target_type  # e.g., "single", "allies", "enemies"         self.duration = duration  # For debuffs or buffs
    def resolve(self, caster, target=None):         """Resolve the effect of the ability based on the type."""         if self.effect_type == 'damage':             self.deal_damage(caster, target)         elif self.effect_type == 'heal':             self.heal_target(caster, target)         elif self.effect_type == 'buff':             self.apply_buff(caster)         elif self.effect_type == 'debuff':             self.apply_debuff(target)
    def deal_damage(self, caster, target):         if target:             damage = caster.stats['power'] + self.magnitude             target.take_damage(damage)             print(f"{caster.name} hits {target.name} for {damage} damage using {self.name}.")
    def heal_target(self, caster, target):         if target:             heal_amount = caster.stats['power'] + self.magnitude             target.heal(heal_amount)             print(f"{caster.name} heals {target.name} for {heal_amount} using {self.name}.")
    def apply_buff(self, caster):         caster.stats['power'] += self.magnitude         print(f"{caster.name} gains a buff, increasing power by {self.magnitude}.")
    def apply_debuff(self, target):         target.stats['power'] -= self.magnitude         print(f"{target.name} suffers a debuff, decreasing power by {self.magnitude} for {self.duration} turns.")         target.apply_status_effect(self.name, self.duration)
Define abilities
abilities_data = {     "Slash": Ability(name="Slash", effect_type="damage", magnitude=10, target_type="single"),     "Fireball": Ability(name="Fireball", effect_type="damage", magnitude=20, target_type="single"),     "Heal": Ability(name="Heal", effect_type="heal", magnitude=15, target_type="single"),     "Berserk": Ability(name="Berserk", effect_type="buff", magnitude=10, target_type="single"),     "Poison": Ability(name="Poison", effect_type="debuff", magnitude=5, target_type="single", duration=3), }
Add abilities to agents
agents_data = [     {"name": "Agent001", "abilities": ["Slash", "Berserk"]},     {"name": "Agent002", "abilities": ["Fireball", "Heal"]},     {"name": "Agent003", "abilities": ["Heal", "Berserk"]},     {"name": "Agent004", "abilities": ["Poison", "Slash"]}, ]
Instantiate agents
agents = [Agent(agent_id=i, name=agent["name"], role="Warrior", stats={"health": 100, "power": 15, "defense": 5}, abilities=[abilities_data[ability] for ability in agent["abilities"]]) for i, agent in enumerate(agents_data)]
Step 2: AI System
Now that we’ve expanded the abilities, let’s create an AI system to control agents. The AI will decide which action an agent should take during their turn based on the current game state.
We’ll implement a basic AI that can:
Choose an ability based on the agent's role.
Attack enemies if they are low on health.
Heal allies if they are injured.
The AI will have a simple decision-making system.
class AI:     def init(self, agent):         self.agent = agent
    def decide_action(self, allies, enemies):         """Decide what action the agent should take based on the situation."""         # AI decides to heal if an ally's health is low         low_health_allies = [ally for ally in allies if ally.stats['health'] < 50]         if low_health_allies:             target = random.choice(low_health_allies)  # Pick a random low health ally to heal             print(f"{self.agent.name} decides to heal {target.name}.")             self.agent.use_ability("Heal", target)             return                 # AI will attack an enemy if its health is high         if enemies:             target = random.choice(enemies)  # Choose a random enemy             print(f"{self.agent.name} decides to attack {target.name}.")             self.agent.use_ability("Fireball", target)             return
        print(f"{self.agent.name} is unsure of what to do.")
Example of AI-controlled agents
ai_agents = [AI(agent) for agent in agents]
Simulate AI decisions
for ai_agent in ai_agents:     ai_agent.decide_action(allies=agents, enemies=agents)
Step 3: Simulate a Combat Scenario with AI
Now, let’s simulate a basic combat scenario where agents take turns based on their AI decision-making logic.
Initialize combat scenario
allies = [agents[0], agents[2]]  # Agent 001 and Agent 003 are allies enemies = [agents[1], agents[3]]  # Agent 002 and Agent 004 are enemies
Combat loop
turns = 5 for _ in range(turns):     for ai
To implement a Turing Model, which simulates decision-making in a highly intelligent, adaptable AI, we’ll create an AI system that closely mimics the behavior of a Turing Machine, in which each decision is based on an internal state and specific rules that are evaluated during execution.
In this implementation, the Turing Model AI will evaluate various possible actions based on the current game state (such as agent health, enemy health, and available abilities). The AI will process this information through a series of decision-making steps akin to reading and writing on a Turing machine's tape, where each action is influenced by the agent's internal "state."
Here’s how we can approach it:
Step 1: Define the Turing Machine's State Transitions
We'll define several "states" for the AI. These states will correspond to different modes of action (such as "attacking," "healing," or "defending"), and based on certain conditions, the AI will transition between states.
For example:
Idle State: The agent waits and analyzes the situation.
Attack State: The agent will choose an attacking move.
Heal State: The agent will choose a healing move for itself or an ally.
Buff State: The agent will apply buffs to itself or an ally.
Defend State: The agent will defend or apply debuffs to enemies.
We’ll introduce a state machine that maps the current state to a set of rules determining the agent’s behavior.
Step 2: Turing Model AI Implementation
import random
class TuringAI:     def init(self, agent):         self.agent = agent         self.state = 'Idle'  # Initial state         self.action_history = []  # To keep track of actions         def decide_action(self, allies, enemies):         """Simulate the decision-making process of the Turing Machine-like AI."""                 # Step 1: Read current state and game environment (AI decides based on its state)         print(f"Agent {self.agent.name} is in {self.state} state.")                 # Step 2: Transition based on internal rules and environment         if self.state == 'Idle':             self._transition_to_action_state(allies, enemies)                 elif self.state == 'Attack':             self._perform_attack(allies, enemies)                 elif self.state == 'Heal':             self._perform_heal(allies)                 elif self.state == 'Buff':             self._apply_buff(allies)                 elif self.state == 'Defend':             self._perform_defense(allies, enemies)         def _transition_to_action_state(self, allies, enemies):         """Determine whether to Attack, Heal, Buff, or Defend based on current conditions."""         low_health_allies = [ally for ally in allies if ally.stats['health'] < 50]         low_health_enemies = [enemy for enemy in enemies if enemy.stats['health'] < 50]                 # Transition to Heal if an ally is low on health         if low_health_allies:             self.state = 'Heal'             print(f"{self.agent.name} detected low health allies. Transitioning to Heal state.")             return                 # Transition to Attack if there are enemies with low health         if low_health_enemies:             self.state = 'Attack'             print(f"{self.agent.name} detected low health enemies. Transitioning to Attack state.")             return                 # If no immediate action is needed, go to Buff or Defend         if not low_health_allies and not low_health_enemies:             self.state = random.choice(['Buff', 'Defend'])             print(f"{self.agent.name} is transitioning to {self.state} state.")         def _perform_attack(self, allies, enemies):         """Perform an attack action on an enemy."""         if enemies:             target = random.choice(enemies)             print(f"{self.agent.name} attacks {target.name}!")             self.agent.use_ability("Fireball", target)             self.action_history.append(f"Attack {target.name}")             self.state = 'Idle'  # After attack, return to idle state         def _perform_heal(self, allies):         """Perform a healing action on an ally."""         if allies:             target = random.choice(allies)             print(f"{self.agent.name} heals {target.name}!")             self.agent.use_ability("Heal", target)             self.action_history.append(f"Heal {target.name}")             self.state = 'Idle'  # After healing, return to idle state         def _apply_buff(self, allies):         """Apply a buff to an ally."""         if allies:             target = random.choice(allies)             print(f"{self.agent.name} applies a buff to {target.name}.")             self.agent.use_ability("Berserk", target)             self.action_history.append(f"Buff {target.name}")             self.state = 'Idle'  # After buffing, return to idle state         def _perform_defense(self, allies, enemies):         """Perform defense action, debuffing enemies or defending the agent."""         if enemies:             target = random.choice(enemies)             print(f"{self.agent.name} debuffs {target.name}.")             self.agent.use_ability("Poison", target)             self.action_history.append(f"Debuff {target.name}")             self.state = 'Idle'  # After debuffing, return to idle state
Example: Simulating a combat scenario with Turing-like AI
def simulate_combat():     # Instantiate agents     agent1 = Agent(agent_id=1, name="Agent001", role="Warrior", stats={"health": 100, "power": 15, "defense": 5}, abilities=[abilities_data["Fireball"], abilities_data["Heal"]], interactions=["attack", "heal"])     agent2 = Agent(agent_id=2, name="Agent002", role="Mage", stats={"health": 50, "power": 20, "defense": 5}, abilities=[abilities_data["Fireball"], abilities_data["Heal"]], interactions=["attack", "heal"])         # Initialize AI agents     ai_agent1 = TuringAI(agent1)     ai_agent2 = TuringAI(agent2)         # Combat loop     turns = 5     allies = [agent1]     enemies = [agent2]         for _ in range(turns):         ai_agent1.decide_action(allies, enemies)         ai_agent2.decide_action(allies, enemies)         print("\n--- Next Turn ---")
simulate_combat()
Step 3: AI Decision Process - Simulation Walkthrough
Initial State: The AI starts in the Idle state. It examines the environment (e.g., health of allies and enemies).
State Transition: Based on the conditions (e.g., low health in allies or enemies), the AI transitions to Heal, Attack, Buff, or Defend.
Action Execution: Once in a chosen state (e.g., Attack), the AI performs the appropriate action, like using a "Fireball" ability on an enemy or healing an ally.
State Reset: After each action, the AI returns to the Idle state, ready for the next round of decision-making.
Step 4: Further Enhancements
Learning Ability: The AI can "learn" from previous decisions by keeping track of the outcomes (e.g., if healing an ally was successful or if an attack dealt significant damage). This could be implemented using a reinforcement learning approach.
Multiple Action Layers: Introduce more layers to the AI decision-making, such as analyzing multiple turns ahead or using more advanced decision trees.
Complex Environmental Factors: The AI could consider environmental factors like the positioning of agents or terrain effects (e.g., taking cover, avoiding traps).
Conclusion
The Turing Model AI operates by evaluating the current game state and transitioning between states (like a T
To implement a Draw Card Function and define the various card zones on the playfield, we will break down the system into several components that interact with one another:
Card Types:
Battle Dolls (Max 3 zones): These are units or creatures that players summon to the battlefield.
Item Cards (Max 2 zones): Cards that represent items the player can use.
Dressblade Cards (Max 2 zones): Cards that represent weapons or abilities tied to the "Dressblade" concept.
Artifact Cards: Cards representing powerful relics or items with long-term effects.
Field Cards: Cards that influence the battlefield itself (weather, terrain, etc.).
Miscellaneous/Utility Cards: This can include trap cards, event cards, power cards, fusion cards, upgrades, and other special cards.
Card Zones:
Graveyard (Discard Pile): The area where discarded or destroyed cards go.
Hand: Where drawn cards are kept until played.
Battlefield Zones: Where cards are summoned into play, including Battle Dolls, Item Cards, Dressblade Cards, etc.
Battle Dolls (3 zones max): The maximum number of dolls a player can have in the battlefield at once.
Item Cards (2 zones max): Items that can be equipped or activated in combat.
Dressblade Cards (2 zones max): Represents swords, weapons, or special abilities tied to specific characters.
Artifact Cards (as part of Item or Equipment): Equipment cards that grant passive or active effects.
Other Zones:
Field Cards: Cards that influence the environment.
Miscellaneous Cards (Traps, Events, Power, Fusion, Upgrades): For special actions, effects, or card interactions.
Card Structures
We will define the Card class and the Zone class to represent the different zones where cards are placed, and a Player class to manage the player’s hand and actions.
Code Implementation:
import random
Define Card Class
class Card:     def init(self, name, card_type, effect=None):         self.name = name         self.card_type = card_type         self.effect = effect  # Optional effect to be used when card is played
    def str(self):         return f"{self.name} ({self.card_type})"
Define Zones for Cards on the Playfield
class Zone:     def init(self, zone_name, max_capacity):         self.zone_name = zone_name         self.max_capacity = max_capacity         self.cards = []  # Cards placed in this zone
    def add_card(self, card):         """Add a card to the zone if there's space."""         if len(self.cards) < self.max_capacity:             self.cards.append(card)             print(f"Card {card.name} placed in {self.zone_name} zone.")         else:             print(f"Cannot add {card.name}. {self.zone_name} zone is full.")
    def remove_card(self, card):         """Remove a card from the zone."""         if card in self.cards:             self.cards.remove(card)             print(f"Card {card.name} removed from {self.zone_name} zone.")         else:             print(f"{card.name} not found in {self.zone_name} zone.")
Define Player Class to Handle Draws and Card Management
class Player:     def init(self, name):         self.name = name         self.hand = []  # Cards the player holds in their hand         self.graveyard = []  # Discard pile         self.battle_dolls = [Zone('Battle Dolls', 3)]  # Max 3 battle dolls on the field         self.item_cards = [Zone('Item Cards', 2)]  # Max 2 item cards on the field         self.dressblades = [Zone('Dressblades', 2)]  # Max 2 Dressblade cards on the field         self.artifacts = [Zone('Artifacts', 2)]  # Max 2 artifact cards on the field         self.field_cards = [Zone('Field Cards', 1)]  # Only 1 field card can be played         self.miscellaneous = [Zone('Miscellaneous', 2)]  # Can include traps, events, power cards, etc.         def draw_card(self, deck):         """Draw a card from the deck."""         if len(deck) > 0:             drawn_card = deck.pop(random.randint(0, len(deck) - 1))             self.hand.append(drawn_card)             print(f"{self.name} drew {drawn_card.name}.")         else:             print("Deck is empty, no cards to draw.")         def play_card(self, card):         """Play a card from hand."""         if card in self.hand:             print(f"{self.name} plays {card.name}.")             self.hand.remove(card)             self._place_card_in_zone(card)         else:             print(f"{card.name} is not in your hand.")         def _place_card_in_zone(self, card):         """Place the card in the appropriate zone."""         if card.card_type == 'Battle Doll':             self.battle_dolls[0].add_card(card)         elif card.card_type == 'Item':             self.item_cards[0].add_card(card)         elif card.card_type == 'Dressblade':             self.dressblades[0].add_card(card)         elif card.card_type == 'Artifact':             self.artifacts[0].add_card(card)         elif card.card_type == 'Field':             self.field_cards[0].add_card(card)         elif card.card_type in ['Trap', 'Event', 'Power', 'Fusion', 'Upgrade']:             self.miscellaneous[0].add_card(card)         else:             print(f"Card {card.name} cannot be played.")
Define Game Setup
def create_deck():     """Create a sample deck with various card types."""     deck =         Card("Fireball", "Battle Doll", effect="Deal 20 damage"),         Card("Healing Potion", "Item", effect="Heal 10 health"),         Card("Berserk Sword", "Dressblade", effect="Increase attack by 10"),         Card("Dragon's Heart", "Artifact", effect="Gain 5 defense per turn"),         Card("Thunderstorm", "Field", effect="Deal 10 damage to all enemies"),         Card("Trap Card", "Trap", effect="Trap an enemy's action for 1 turn"),         Card("Power Boost", "Power", effect="Increase attack power by 5"),         Card("Fusion Elixir", "Fusion", effect="Fuse two cards together"),         Card("Upgrade Armor", "Upgrade", effect="Increase defense by 5")         random.shuffle(deck)     return deck
def simulate_turn():     """Simulate a player's turn."""     # Create a deck and initialize a player     deck = create_deck()     player1 = Player(name="Player 1")         # Draw phase: draw 5 cards     for _ in range(5):         player1.draw_card(deck)         # Play phase: Player 1 plays random cards     for card in player1.hand:         player1.play_card(card)         # End of turn - show the current state of zones and hand     print("\nEnd of Turn:")     print(f"Hand: {[str(card) for card in player1.hand]}")     print(f"Battle Dolls: {[str(card) for card in player1.battle_dolls[0].cards]}")     print(f"Item Cards: {[str(card) for card in player1.item_cards[0].cards]}")     print(f"Dressblades: {[str(card) for card in player1.dressblades[0].cards]}")     print(f"Artifacts: {[str(card) for card in player1.artifacts[0].cards]}")     print(f"Field Cards: {[str(card) for card in player1.field_cards[0].cards]}")     print(f"Miscellaneous Cards: {[str(card) for card in player1.miscellaneous[0].cards]}")
Simulate a turn in the game
simulate_turn()
Breakdown of the Code:
Card Class: Represents individual cards, storing their name, type, and any effect they might have when played.
Zone Class: Represents the various zones where cards can be played on the field. Each zone has a maximum capacity (max_capacity) and stores the cards placed in it.
Player Class: Manages a player's hand, zones, and graveyard. The draw_card method allows the player to draw a card from the deck, and the play_card method places the card in the appropriate zone based on its type. The _place_card_in_zone method decides where to place each card.
Deck Creation and Simulation: The create_deck function creates a shuffled deck of cards, and the simulate_turn function simulates a player's turn, drawing cards and playing them, updating the zones accordingly.
Output Example:
Player 1 drew Fireball. Player 1 drew Healing Potion. Player 1 drew Berserk Sword. Player 1 drew Dragon's Heart. Player 1 drew Thunderstorm. Player 1 plays Fireball. Card Fireball placed in Battle Dolls zone. Player 1 plays Healing Potion. Card Healing Potion placed in Item Cards zone. Player 1 plays Berserk Sword. Card Berserk Sword placed in To create a full-scale working game system, we need to refine the previous code into modular sections that work seamlessly together, including the integration of all previously outlined functions, card zones, and game logic.
Key Components:
Card Types: We will further refine the card types and their effects.
Zones: Define clear, interactable zones for card play, including the player zones and battlefield areas.
Deck: The deck will now be shuffled and managed at the start of the game.
Gameplay Phases: Implement phases like drawing, playing, and resolving actions for a seamless gameplay experience.
Game Loop: Simulate the start, turn-based system, and end-game conditions.
Full Game System Code:
import random
Card Types Definition
class Card:     def init(self, name, card_type, effect=None):         self.name = name         self.card_type = card_type         self.effect = effect  # Optional effect to be used when card is played
    def str(self):         return f"{self.name} ({self.card_type})"
Zones for Cards on the Playfield
class Zone:     def init(self, zone_name, max_capacity):         self.zone_name = zone_name         self.max_capacity = max_capacity         self.cards = []  # Cards placed in this zone
    def add_card(self, card):         """Add a card to the zone if there's space."""         if len(self.cards) < self.max_capacity:             self.cards.append(card)             print(f"Card {card.name} placed in {self.zone_name} zone.")         else:             print(f"Cannot add {card.name}. {self.zone_name} zone is full.")
    def remove_card(self, card):         """Remove a card from the zone."""         if card in self.cards:             self.cards.remove(card)             print(f"Card {card.name} removed from {self.zone_name} zone.")         else:             print(f"{card.name} not found in {self.zone_name} zone.")
Player Class to Handle Draws and Card Management
class Player:     def init(self, name):         self.name = name         self.hand = []  # Cards the player holds in their hand         self.graveyard = []  # Discard pile         self.battle_dolls = Zone('Battle Dolls', 3)  # Max 3 battle dolls on the field         self.item_cards = Zone('Item Cards', 2)  # Max 2 item cards on the field         self.dressblades = Zone('Dressblades', 2)  # Max 2 Dressblade cards on the field         self.artifacts = Zone('Artifacts', 2)  # Max 2 artifact cards on the field         self.field_cards = Zone('Field Cards', 1)  # Only 1 field card can be played         self.miscellaneous = Zone('Miscellaneous', 5)  # Max 5 cards like traps, events, etc.         def draw_card(self, deck):         """Draw a card from the deck."""         if len(deck) > 0:             drawn_card = deck.pop(random.randint(0, len(deck) - 1))             self.hand.append(drawn_card)             print(f"{self.name} drew {drawn_card.name}.")         else:             print("Deck is empty, no cards to draw.")         def play_card(self, card):         """Play a card from hand."""         if card in self.hand:             print(f"{self.name} plays {card.name}.")             self.hand.remove(card)             self._place_card_in_zone(card)         else:             print(f"{card.name} is not in your hand.")         def _place_card_in_zone(self, card):         """Place the card in the appropriate zone."""         if card.card_type == 'Battle Doll':             self.battle_dolls.add_card(card)         elif card.card_type == 'Item':             self.item_cards.add_card(card)         elif card.card_type == 'Dressblade':             self.dressblades.add_card(card)         elif card.card_type == 'Artifact':             self.artifacts.add_card(card)         elif card.card_type == 'Field':             self.field_cards.add_card(card)         elif card.card_type in ['Trap', 'Event', 'Power', 'Fusion', 'Upgrade']:             self.miscellaneous.add_card(card)         else:             print(f"Card {card.name} cannot be played.")
    def end_turn(self):         """End the player's turn and move cards to graveyard."""         print(f"{self.name} ends their turn.")         self.graveyard.extend(self.battle_dolls.cards)         self.graveyard.extend(self.item_cards.cards)         self.graveyard.extend(self.dressblades.cards)         self.graveyard.extend(self.artifacts.cards)         self.graveyard.extend(self.field_cards.cards)         self.graveyard.extend(self.miscellaneous.cards)         # Clear zones at the end of the turn         self.battle_dolls.cards.clear()         self.item_cards.cards.clear()         self.dressblades.cards.clear()         self.artifacts.cards.clear()         self.field_cards.cards.clear()         self.miscellaneous.cards.clear()
Define Game Setup
def create_deck():     """Create a sample deck with various card types."""     deck =         Card("Fireball", "Battle Doll", effect="Deal 20 damage"),         Card("Healing Potion", "Item", effect="Heal 10 health"),         Card("Berserk Sword", "Dressblade", effect="Increase attack by 10"),         Card("Dragon's Heart", "Artifact", effect="Gain 5 defense per turn"),         Card("Thunderstorm", "Field", effect="Deal 10 damage to all enemies"),         Card("Trap Card", "Trap", effect="Trap an enemy's action for 1 turn"),         Card("Power Boost", "Power", effect="Increase attack power by 5"),         Card("Fusion Elixir", "Fusion", effect="Fuse two cards together"),         Card("Upgrade Armor", "Upgrade", effect="Increase defense by 5"),         Card("Mystic Shield", "Item", effect="Block 5 damage from each attack")         random.shuffle(deck)     return deck
def start_game():     """Start the game and initialize players and deck."""     deck = create_deck()     player1 = Player(name="Player 1")     player2 = Player(name="Player 2")     players = [player1, player2]
    # Each player draws 5 cards at the start     for player in players:         for _ in range(5):             player.draw_card(deck)
    # Simulate Turns     turn_counter = 1     while deck:         current_player = players[turn_counter % 2]         print(f"\n--- Turn {turn_counter} ---")         # Draw phase         current_player.draw_card(deck)         # Play phase (players play all cards in hand)         for card in current_player.hand[:]:  # Iterating over a copy of the hand             current_player.play_card(card)                 # End phase         current_player.end_turn()         turn_counter += 1
    # End of game     print("\nGame Over")
Start the Game
start_game()
Key Enhancements:
Zones Handling: Each Player has specific zones for their cards, and cards are placed in the appropriate zone when played.
Card Effects: Basic effects are included in the Card class (e.g., "Deal 20 damage", "Heal 10 health").
Turn Management: Each player draws a card, plays it, and then ends their turn. At the end of a turn, cards are moved to the graveyard, and the zones are cleared.
Game Loop: A simple game loop is implemented where players alternate turns until the deck is empty. During each turn, a player draws a card, plays all cards in their hand, and ends the turn by moving cards to the graveyard.
Output Example:
Player 1 drew Fireball. Player 1 drew Healing Potion. Player 1 drew Berserk Sword. Player 1 drew Dragon's Heart. Player 1 drew Thunderstorm.
--- Turn 1 --- Player 1 drew Mystic Shield. Player 1 plays Fireball. Card Fireball placed in Battle Dolls zone. Player 1 plays Healing Potion. Card Healing Potion placed in Item Cards zone. Player 1 plays Berserk Sword. Card Berserk Sword placed in Dressblades zone. Player 1 To create a full-scale working game system, we need to refine the previous code into modular sections that work seamlessly together, including the integration of all previously outlined functions, card zones, and game logic.
Key Components:
Card Types: We will further refine the card types and their effects.
Zones: Define clear, interactable zones for card play, including the player zones and battlefield areas.
Deck: The deck will now be shuffled and managed at the start of the game.
Gameplay Phases: Implement phases like drawing, playing, and resolving actions for a seamless gameplay experience.
Game Loop: Simulate the start, turn-based system, and end-game conditions.
Full Game System Code:
import random
Card Types Definition
class Card:     def init(self, name, card_type, effect=None):         self.name = name         self.card_type = card_type         self.effect = effect  # Optional effect to be used when card is played
    def str(self):         return f"{self.name} ({self.card_type})"
Zones for Cards on the Playfield
class Zone:     def init(self, zone_name, max_capacity):         self.zone_name = zone_name         self.max_capacity = max_capacity         self.cards = []  # Cards placed in this zone
    def add_card(self, card):         """Add a card to the zone if there's space."""         if len(self.cards) < self.max_capacity:             self.cards.append(card)             print(f"Card {card.name} placed in {self.zone_name} zone.")         else:             print(f"Cannot add {card.name}. {self.zone_name} zone is full.")
    def remove_card(self, card):         """Remove a card from the zone."""         if card in self.cards:             self.cards.remove(card)             print(f"Card {card.name} removed from {self.zone_name} zone.")         else:             print(f"{card.name} not found in {self.zone_name} zone.")
Player Class to Handle Draws and Card Management
class Player:     def init(self, name):         self.name = name         self.hand = []  # Cards the player holds in their hand         self.graveyard = []  # Discard pile         self.battle_dolls = Zone('Battle Dolls', 3)  # Max 3 battle dolls on the field         self.item_cards = Zone('Item Cards', 2)  # Max 2 item cards on the field         self.dressblades = Zone('Dressblades', 2)  # Max 2 Dressblade cards on the field         self.artifacts = Zone('Artifacts', 2)  # Max 2 artifact cards on the field         self.field_cards = Zone('Field Cards', 1)  # Only 1 field card can be played         self.miscellaneous = Zone('Miscellaneous', 5)  # Max 5 cards like traps, events, etc.         def draw_card(self, deck):         """Draw a card from the deck."""         if len(deck) > 0:             drawn_card = deck.pop(random.randint(0, len(deck) - 1))             self.hand.append(drawn_card)             print(f"{self.name} drew {drawn_card.name}.")         else:             print("Deck is empty, no cards to draw.")         def play_card(self, card):         """Play a card from hand."""         if card in self.hand:             print(f"{self.name} plays {card.name}.")             self.hand.remove(card)             self._place_card_in_zone(card)         else:             print(f"{card.name} is not in your hand.")         def _place_card_in_zone(self, card):         """Place the card in the appropriate zone."""         if card.card_type == 'Battle Doll':             self.battle_dolls.add_card(card)         elif card.card_type == 'Item':             self.item_cards.add_card(card)         elif card.card_type == 'Dressblade':             self.dressblades.add_card(card)         elif card.card_type == 'Artifact':             self.artifacts.add_card(card)         elif card.card_type == 'Field':             self.field_cards.add_card(card)         elif card.card_type in ['Trap', 'Event', 'Power', 'Fusion', 'Upgrade']:             self.miscellaneous.add_card(card)         else:             print(f"Card {card.name} cannot be played.")
    def end_turn(self):         """End the player's turn and move cards to graveyard."""         print(f"{self.name} ends their turn.")         self.graveyard.extend(self.battle_dolls.cards)         self.graveyard.extend(self.item_cards.cards)         self.graveyard.extend(self.dressblades.cards)         self.graveyard.extend(self.artifacts.cards)         self.graveyard.extend(self.field_cards.cards)         self.graveyard.extend(self.miscellaneous.cards)         # Clear zones at the end of the turn         self.battle_dolls.cards.clear()         self.item_cards.cards.clear()         self.dressblades.cards.clear()         self.artifacts.cards.clear()         self.field_cards.cards.clear()         self.miscellaneous.cards.clear()
Define Game Setup
def create_deck():     """Create a sample deck with various card types."""     deck =         Card("Fireball", "Battle Doll", effect="Deal 20 damage"),         Card("Healing Potion", "Item", effect="Heal 10 health"),         Card("Berserk Sword", "Dressblade", effect="Increase attack by 10"),         Card("Dragon's Heart", "Artifact", effect="Gain 5 defense per turn"),         Card("Thunderstorm", "Field", effect="Deal 10 damage to all enemies"),         Card("Trap Card", "Trap", effect="Trap an enemy's action for 1 turn"),         Card("Power Boost", "Power", effect="Increase attack power by 5"),         Card("Fusion Elixir", "Fusion", effect="Fuse two cards together"),         Card("Upgrade Armor", "Upgrade", effect="Increase defense by 5"),         Card("Mystic Shield", "Item", effect="Block 5 damage from each attack")         random.shuffle(deck)     return deck
def start_game():     """Start the game and initialize players and deck."""     deck = create_deck()     player1 = Player(name="Player 1")     player2 = Player(name="Player 2")     players = [player1, player2]
    # Each player draws 5 cards at the start     for player in players:         for _ in range(5):             player.draw_card(deck)
    # Simulate Turns     turn_counter = 1     while deck:         current_player = players[turn_counter % 2]         print(f"\n--- Turn {turn_counter} ---")         # Draw phase         current_player.draw_card(deck)         # Play phase (players play all cards in hand)         for card in current_player.hand[:]:  # Iterating over a copy of the hand             current_player.play_card(card)                 # End phase         current_player.end_turn()         turn_counter += 1
    # End of game     print("\nGame Over")
Start the Game
start_game()
Key Enhancements:
Zones Handling: Each Player has specific zones for their cards, and cards are placed in the appropriate zone when played.
Card Effects: Basic effects are included in the Card class (e.g., "Deal 20 damage", "Heal 10 health").
Turn Management: Each player draws a card, plays it, and then ends their turn. At the end of a turn, cards are moved to the graveyard, and the zones are cleared.
Game Loop: A simple game loop is implemented where players alternate turns until the deck is empty. During each turn, a player draws a card, plays all cards in their hand, and ends the turn by moving cards to the graveyard.
Output Example:
Player 1 drew Fireball. Player 1 drew Healing Potion. Player 1 drew Berserk Sword. Player 1 drew Dragon's Heart. Player 1 drew Thunderstorm.
--- Turn 1 --- Player 1 drew Mystic Shield. Player 1 plays Fireball. Card Fireball placed in Battle Dolls zone. Player 1 plays Healing Potion. Card Healing Potion placed in Item Cards zone. Player 1 plays Berserk Sword. Card Berserk Sword placed in Dressblades zone. Player 1 plays Dragon's Heart. Card Dragon's Heart placed in Artifacts zone. Player 1 plays Thunderstorm. Card Thunderstorm placed in Field Cards zone.
Player 1 ends their turn.
--- Turn 2 --- Player 2 drew Trap Card. Player 2 plays Trap Card. Card Trap Card placed in Miscellaneous zone.
Player 2 ends their turn.
Refinements and Future Enhancements:
Card Effects: Implement specific logic for each type of card effect (e.g., healing, damage, power boosts).
Game Victory Conditions: Define win conditions (e.g., deplete opponent's health, empty deck, etc.).
AI Player: Add an AI player that can make decisions based on the current game state.
Additional Phases: Implement phases for battle resolution, special card interactions, and end-of-turn cleanup.
To implement a full game with a splash screen, story mode, game modes, save and continue functions, and the ability to view/edit decks and trade cards online, we need to break this down into several components. Below is a simplified example code that introduces these features using Python.
Key Components:
Splash Screen: Display a simple introduction screen.
Story Mode: Implement a story-driven campaign with dialogue and progress.
Game Modes: Different modes like normal play, story mode, or multiplayer.
Save and Continue: Implement game saving and loading.
Deck Editing: Allow users to view and modify their decks.
Card Trading: Add the ability to trade cards online (this is typically done through a server, but for simplicity, we'll simulate it here).
Full-Scale Game Code (Simplified):
Dependencies:
You'll need a library like pygame for GUI elements. Make sure you install it with pip install pygame.
pip install pygame
Code:
import pygame import pickle import os
Initialize Pygame
pygame.init()
Constants
SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 FPS = 60
Colors
WHITE = (255, 255, 255) BLACK = (0, 0, 0) BLUE = (0, 0, 255) RED = (255, 0, 0)
Story Texts (can be expanded)
story_text = [     "Welcome to the Samurai Skirts Battle Dolls!",     "In this world, you fight to protect the kingdom using powerful cards.",     "Each player has unique battle dolls and items to aid them.",     "The adventure begins now…" ]
Set up display
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption('Samurai Skirts Battle Dolls')
Fonts
font = pygame.font.SysFont('Arial', 32)
Game Variables
player_deck = []  # Deck to store player cards game_save_file = "game_save.pkl"  # File for save data
Card Class (to represent cards)
class Card:     def init(self, name, card_type, effect=None):         self.name = name         self.card_type = card_type         self.effect = effect
Deck Editing & Trading System
def view_and_edit_deck():     """Allows the user to view and edit their deck."""     global player_deck     print("Current Deck:")     for i, card in enumerate(player_deck):         print(f"{i+1}. {card.name} ({card.card_type})")
    action = input("Do you want to (1) Remove a card, (2) Add a new card, or (3) Exit deck editing: ")     if action == "1":         index = int(input(f"Which card do you want to remove (1-{len(player_deck)}): ")) - 1         removed_card = player_deck.pop(index)         print(f"Removed {removed_card.name} from your deck.")     elif action == "2":         new_card_name = input("Enter the name of the new card: ")         new_card_type = input("Enter the type of the card: ")         player_deck.append(Card(new_card_name, new_card_type))         print(f"Added {new_card_name} to your deck.")     elif action == "3":         return
def trade_cards():     """Simulate trading cards with another player (or AI)."""     global player_deck     print("Trade Cards:")     print("Your current deck:")     for i, card in enumerate(player_deck):         print(f"{i+1}. {card.name} ({card.card_type})")
    action = input("Would you like to (1) Trade or (2) Cancel: ")     if action == "1":         index = int(input("Which card would you like to trade? ")) - 1         card_to_trade = player_deck.pop(index)         print(f"Traded {card_to_trade.name}.")         # Simulate getting a card in return         traded_card_name = input("Enter the name of the card you received in trade: ")         traded_card_type = input("Enter the type of the card: ")         player_deck.append(Card(traded_card_name, traded_card_type))         print(f"You received {traded_card_name}.")
Save & Continue (Serialization)
def save_game():     """Save game data to a file."""     with open(game_save_file, "wb") as file:         pickle.dump(player_deck, file)     print("Game saved!")
def load_game():     """Load saved game data from a file."""     global player_deck     if os.path.exists(game_save_file):         with open(game_save_file, "rb") as file:             player_deck = pickle.load(file)         print("Game loaded!")     else:         print("No saved game found.")
Game Mode: Story Mode
def story_mode():     """Simulate story-driven gameplay."""     print("Story Mode:")     for line in story_text:         print(line)
    input("Press Enter to continue your journey…")
Display splash screen
def splash_screen():     """Display the splash screen."""     splash_font = pygame.font.SysFont('Arial', 48)     title_text = splash_font.render("Samurai Skirts Battle Dolls", True, BLUE)     subtitle_text = font.render("Press Enter to Start", True, RED)
    running = True     while running:         screen.fill(WHITE)         screen.blit(title_text, (SCREEN_WIDTH // 4, SCREEN_HEIGHT // 3))         screen.blit(subtitle_text, (SCREEN_WIDTH // 3, SCREEN_HEIGHT // 2))
        pygame.display.update()         for event in pygame.event.get():             if event.type == pygame.QUIT:                 running = False             if event.type == pygame.KEYDOWN:                 if event.key == pygame.K_RETURN:                     running = False
Main Game Loop
def main_game_loop():     """Run the main game loop."""     running = True     while running:         screen.fill(WHITE)
        # Display game menu options         menu_text = font.render("1. Play Story Mode", True, BLUE)         menu_text2 = font.render("2. View/Edit Deck", True, BLUE)         menu_text3 = font.render("3. Trade Cards", True, BLUE)         menu_text4 = font.render("4. Save Game", True, BLUE)         menu_text5 = font.render("5. Load Game", True, BLUE)         menu_text6 = font.render("6. Quit", True, RED)
        screen.blit(menu_text, (50, 50))         screen.blit(menu_text2, (50, 100))         screen.blit(menu_text3, (50, 150))         screen.blit(menu_text4, (50, 200))         screen.blit(menu_text5, (50, 250))         screen.blit(menu_text6, (50, 300))
        pygame.display.update()
        for event in pygame.event.get():             if event.type == pygame.QUIT:                 running = False             if event.type == pygame.KEYDOWN:                 if event.key == pygame.K_1:                     story_mode()                 elif event.key == pygame.K_2:                     view_and_edit_deck()                 elif event.key == pygame.K_3:                     trade_cards()                 elif event.key == pygame.K_4:                     save_game()                 elif event.key == pygame.K_5:                     load_game()                 elif event.key == pygame.K_6:                     running = False
Start the game
splash_screen()  # Show splash screen main_game_loop()  # Run main menu and gameplay
pygame.quit()
Explanation:
Splash Screen:
A splash screen appears at the start of the game and waits for the player to press "Enter" to proceed.
Story Mode:
A simple story mode with predefined text that the player goes through as part of the campaign.
Deck Viewing and Editing:
The player can view their deck, remove cards, and add new cards to modify their deck. This is done via a basic console interface.
Card Trading:
Players can simulate trading cards with each other. This is just a simple system where a player selects a card to trade and receives another card.
Save and Load:
Players can save the game and continue later using Python’s pickle module to serialize the player's deck data. The save_game() function saves the deck to a file, and load_game() loads the deck from the saved file.
Main Menu:
A main menu with options to start the game in story mode, view/edit the deck, trade cards, save/load, and quit.
Future Enhancements:
Multiplayer: Implement a networking system using socket or other libraries for online trading and multiplayer functionality.
Advanced Story Mode: Add branching narratives, choices, and consequences.
Better GUI: Replace console-based interfaces with graphical UI elements using Pygame for buttons, text boxes, etc.
To enhance the game's GUI and introduce GitHub-like models and progressions, we can use Python’s pygame for the GUI elements and combine it with GitHub-style version control for tracking changes, player progress, and deck management.
Below is a more advanced approach for both a better GUI design and a version control-like progression model for tracking changes made to the player's deck or game state.
Step 1: GUI Enhancement (Using pygame)
We'll improve the game interface by adding buttons, custom-designed menus, and interactions for the game modes, story, deck editing, and save/load functions.
Step 2: GitHub-like Version Control (Tracking Changes)
To simulate GitHub-like progression and tracking, we'll store "commits" of the player’s deck state, which will allow them to "revert" to previous versions of the deck or save progress after each action.
Dependencies:
You’ll need pygame and pickle for GUI and saving data.
Optionally, we can introduce a file management system for “commit-like” progress tracking.
Code Example:
import pygame import pickle import os import time
Initialize Pygame
pygame.init()
Constants
SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 FPS = 60
Colors
WHITE = (255, 255, 255) BLACK = (0, 0, 0) BLUE = (0, 0, 255) RED = (255, 0, 0)
Fonts
font = pygame.font.SysFont('Arial', 32) button_font = pygame.font.SysFont('Arial', 24)
Game Variables
player_deck = []  # Deck to store player cards game_save_file = "game_save.pkl"  # File for save data git_commit_file = "git_commits.pkl"  # Git-like commit file
Card Class (to represent cards)
class Card:     def init(self, name, card_type, effect=None):         self.name = name         self.card_type = card_type         self.effect = effect
Deck Class with Git-like version control (Commit)
class Deck:     def init(self):         self.cards = []         self.commit_history = []
    def add_card(self, card):         self.cards.append(card)         self.commit()
    def remove_card(self, index):         if index < len(self.cards):             removed_card = self.cards.pop(index)             self.commit()             return removed_card
    def commit(self):         """Simulate a Git commit by storing deck states."""         commit_time = time.time()         self.commit_history.append({             'timestamp': commit_time,             'deck_state': [card.dict for card in self.cards]         })
    def revert_to_commit(self, index):         """Revert to a previous commit."""         if 0 <= index < len(self.commit_history):             self.cards = [Card(**card_data) for card_data in self.commit_history[index]['deck_state']]
Initialize Deck
player_deck = Deck()
GUI Functionality
def create_button(x, y, width, height, text, color, action=None):     """Create a button and detect clicks."""     mouse_x, mouse_y = pygame.mouse.get_pos()     mouse_click = pygame.mouse.get_pressed()     button_rect = pygame.Rect(x, y, width, height)
    # Draw button     pygame.draw.rect(screen, color, button_rect)     text_surface = button_font.render(text, True, WHITE)     screen.blit(text_surface, (x + (width - text_surface.get_width()) // 2, y + (height - text_surface.get_height()) // 2))
    # Button click detection     if button_rect.collidepoint((mouse_x, mouse_y)):         if mouse_click[0]:  # Left mouse click             if action:                 action()
    return button_rect
Save & Load Game
def save_game():     """Save the current game and deck to a file."""     with open(game_save_file, "wb") as file:         pickle.dump(player_deck, file)     print("Game saved!")
def load_game():     """Load saved game and deck from a file."""     global player_deck     if os.path.exists(game_save_file):         with open(game_save_file, "rb") as file:             player_deck = pickle.load(file)         print("Game loaded!")     else:         print("No saved game found.")
View/Edit Deck
def view_and_edit_deck():     """View and edit the deck."""     print("Current Deck:")     for i, card in enumerate(player_deck.cards):         print(f"{i+1}. {card.name} ({card.card_type})")
    action = input("Do you want to (1) Remove a card, (2) Add a new card, (3) Revert a Commit, or (4) Exit deck editing: ")     if action == "1":         index = int(input(f"Which card do you want to remove (1-{len(player_deck.cards)}): ")) - 1         removed_card = player_deck.remove_card(index)         print(f"Removed {removed_card.name} from your deck.")     elif action == "2":         new_card_name = input("Enter the name of the new card: ")         new_card_type = input("Enter the type of the card: ")         player_deck.add_card(Card(new_card_name, new_card_type))         print(f"Added {new_card_name} to your deck.")     elif action == "3":         index = int(input(f"Which commit to revert to (0-{len(player_deck.commit_history)-1}): "))         player_deck.revert_to_commit(index)         print(f"Reverted to commit {index}.")     elif action == "4":         return
GUI Game Loop
def main_game_loop():     """Run the main game loop with GUI."""     running = True     while running:         screen.fill(WHITE)
        # Menu Buttons         create_button(300, 100, 200, 50, "Start Game", BLUE, start_game)         create_button(300, 200, 200, 50, "Edit Deck", BLUE, view_and_edit_deck)         create_button(300, 300, 200, 50, "Save Game", BLUE, save_game)         create_button(300, 400, 200, 50, "Load Game", BLUE, load_game)         create_button(300, 500, 200, 50, "Quit", RED, quit_game)
        pygame.display.update()         clock.tick(FPS)
Button Actions
def start_game():     """Start the game (e.g., load story mode)."""     print("Starting Story Mode…")
def quit_game():     """Quit the game."""     pygame.quit()     exit()
Initialize the Pygame clock
clock = pygame.time.Clock()
Start the game loop
main_game_loop()
Code Breakdown:
GUI Enhancements:
create_button: A function to create buttons with text and color. It detects mouse clicks and triggers actions when the button is clicked.
Main Menu: The main menu allows users to start the game, edit their deck, save/load, and quit.
Buttons are displayed with user-friendly text centered on them.
GitHub-like Commit System:
Deck Class: Tracks all changes to the deck by "committing" each change. Each commit stores the current state of the deck with a timestamp.
Commit/Revert: You can add cards, remove them, and even revert to a previous deck state by selecting from the commit history.
Saving and Loading:
save_game: Saves the current game and deck state to a file using the pickle module.
load_game: Loads the saved deck and game state from the file.
Game Progression:
The game allows the player to progress through different game modes (e.g., story mode, deck editing) while being able to track changes to their deck (like a GitHub repository).
Players can view the commit history and revert to previous versions of their deck.
Future Enhancements:
Multiplayer/Online: Implement a multiplayer system for trading cards, possibly using networking libraries like socket or asyncio.
Improved Deck Interface: Create more interactive deck editing features, such as drag-and-drop card placement or a card catalog.
Story Mode Expansion: Add branching storylines based on player decisions, potentially integrating with a database for dynamic dialogue and choices.
This code provides a basic structure for your game with GUI and a GitHub-like commit system for managing deck changes. For full-scale implementation, you would expand each feature, particularly story progression, multiplayer, and enhanced card interactions.
{!----trying to build my game underneath my nose!!!!!!! Hehe----!}
4 notes · View notes
randomnameless · 2 years ago
Text
Beating a dead horse but seeing a post this morning (and an earlier fanart) made me think about it -
In good or in Bad, Nopes has characters mentionning how having a crest makes them “monsters” (in good it’s when Miklan supports someone and calls them super rad, in BaD it’s when Uncle Rufus insults Dimitri).
But it’s also, more or less, the same thing happening in the Momo paralogue - we have mentions of how Momo was “turned into a beast” due to his Crest power :(
We also the biggest fuck you - if the player knows everything about the lore though, where Marianne goes :
The Wandering Beast's eviscerated body... Only human bones and this sword remaining.
This “sword” is also a bone, but not a human one so we don’t give a fuck?
Anyways, more about the inital point to make : 
Many times in the Fodlan games’ script, we see the association that Crusts or Relics make people “monsters” and not “humans”.
And while we can muse and legit angst about the crested humans who are basically “insulted” because of their blood, what about Nabateans themselves?
In a verse where Supreme Leader and the Mole People keep on calling them beasts/creatures/other beings without “humanity” or capable of “human feelings”, how do they react to someone, maybe Miklan meaning it as a praise, calling a crested peep a “monster”?
Nabateans have crests, of course, and aren’t humans. Does this automatically make them monsters? Can’t they coexist with humans or even live with them, because they are “monsters” and not “humans”?
Are they still “monsters” when they are the one who look after humans abandoned by their own kin ?
Marianne ultimately goes :
The blood of a beast no longer flows through me. I feel human for once.
But what should Flayn or Seteth (or even Billy) think about this line? What does it mean to “feel” human? Seteth is a “beast” but writes fables for children, are his feelings “human”?
They are not bio-humans, so are their feelings automatically “not human”? Or something that is removed or cannot be understood by “humanity”?
(this reminds me of something in a certain route...)
Of course a positive point can be inferred from Marianne’s paralogue, who says this last line after having put an end to Momo’s sorry life who uwu “suffered for his murderous past” (nothing about Jack the Nabatean of course, it’s not like the games give a fuck about them, nor like Marianne reacts to Rhea’s infodump about her shiny sword and Momo’s sin) - was Momo a beast because of his “murderous past” and not because of his appearance/nature ? 
I’d love to believe it...
But FE16 reminds us that Miklan “turned into a beast” after using the Relic - or at least that’s what we’re told. Miklan was still “human” when he did his thief things, pillages and, in FE16, seduced women - but the second he transformed that’s when he became “a beast”.
We know how transformation in a demonic beast happens - when a human holds a crest stone or uses a relic - but in a way, Rhea’s lies also made sense : transforming in a black beast is a sort of punishment because the human who transforms, naturally, aka not Waldified, was in both instances we see, someone who was already a “monster”, albeit not biologically, but someone who killed/pillaged/did bandit things.
Something like “you act as a monster, then your body shall reflect it”.
Tldr : in a game where there are non-humans, what does it mean to be human? When so many characters angst about not being “humans” due to crests and whatnot, why does it matter at the end of the day?
Yes, Flayn is not human, but she has more compassion than the entire cast reunited given how she “died” to heal everyone once. Is she a monster because - assuming she has one - she can enter a bestial form, even if she has “human” feelings ?
Imagine Marianne or Claude telling a Nabatean, like Seteth, Momo turned into a Monster because of over usage of his relic, and Seteth being in a better game, reacting with something like “Maurice became a monster the day he participed in the genocide of a tribe of people living in mountains, feasted on their corpses and descrated them to craft a weapon, regardless of his outer appearance”.
No wonder after 1000 years of humans angsting about “no i have a crest i am not a human i am a monster :( :( :(” Rhea was afraid Billy would reject her after knowing she is not a human, having witnessed her “other form”.
And again, sure, Dimitri, Uncle Rufus, Miklan and the student cast (save for maybe Claude but the “humanity” nonsense was added by Pat) don’t know about Nabateans or the fact there are “non-humans” living with them, but Doylist wise, we’re still playing a game where Nabateans are “othered” and treated like “abominations” for the sin of not being humans, and humans feeling like “monsters” for having nabatean blood... and Nabateans themselves are never allowed to react to this.
As cute as Flayn’s supports with Dimitri were, we don’t have something where Flayn tries to ask him - in a roundabout way - if he would still be her friend if he knew she was not human but a “beast” (and Dimitri laughing at her because come on, Flayn, being a beast/monster? and then what, she roars? Monsters are people who slaughter others and love violence, even if she was made of, say, sugar cubes, or could transform in a giant wolf, she’d never be a monster!). 
Is it because of Earl Grey, or because this question trumps everything about “we want to tell a story about a 3 way war” and makes everything else pointless?
18 notes · View notes
pisfool · 2 years ago
Text
just a meta theory:
I suspect that many of the underused concepts in the worldbuilding of Ad Stella might be the leftover concepts from when Okouchi initally wrote the script as the traditional war story
so, my wild guesses:
- War Partitioning would take a bigger role
- Earth-Space conflict would've been the main plot
- Dawn of Fold might have been the main antagonist faction, much like many other Zeonlikes in every other Gundam shows
7 notes · View notes