dopan

Regular
Regular
Joined
Mar 27, 2020
Messages
1,365
Reaction score
731
First Language
German
Primarily Uses
RMMV
This code need the SRPG_UnitGroup? I try use in my project, but nothing happens. In the print this my configuration, the state id of the poison is 2.

no it doesnt require any plugin.. its inspired by it.
I took this code from my plugin and edited a little bit..
(i will double check it ,perhaps i made a mistake..)

Edit info
i checked it 3times:
1. using the code in a parrallel event which deletes itself, at map start. Has problems with the "dmg.popup"-part
(probabbly because its triggered to early)
2. using this a little bit later triggered by
JavaScript:
<type:playerEvent>
    // i often use this one when testing stuff
works fine.
3. Using it in the same "<type:turnEnd>" Event like you did.. works fine..
(i used state nr 3 instead,but that should not be the problem)
Screenshot_1.png
Screenshot_2.png
=> If it doesnt work for you pls hit f8 after the turn end, and make a screenshot if there is any error

EDIT 2
Perhaps this is the problem in your Setup?
I am not sure if that makes so much difference ,but i got no other Idea at the moment
Screenshot_3.png
-------------
@moldy
you could also try to add the "deathState" if its not added from having 0 hp..
if that doesnt work pls try to explain more detailed what you are trying to do and at what timing.
 
Last edited:

Percarus

Just a Regular Guy
Regular
Joined
Nov 10, 2017
Messages
58
Reaction score
22
First Language
Filipino
Primarily Uses
RMMV
Hello, I have a question, would there be a way to put in a permadeath function? I tried using DreamX's Permadeath Plugin which seems to be incompatible.
 

Shoukang

Regular
Regular
Joined
Jan 28, 2021
Messages
158
Reaction score
172
First Language
Chinese
Primarily Uses
RMMV
There's no difference between the actors that I know of. You're correct, my first map is the forest. I have the entirety of Yanfly plugins so I'm not sure if we're allowed to swap demos?

@Shoukang sorry to keep pestering you but I'd like to report another bug, this time with your awesome summon plugin :). Seems to have issues with SRPG_BuffStatesCore. Also, it doesn't seem to get hit when an enemy uses an AOE attack on another unit and the summon happens to be in the crossfire.
In the buff states core plugin, line 276: $gameActors.actor($gameSystem._EventToUnit[i][1]), replace it with $gameSystem.EventToUnit(i)[1]
I think this will solve the issue.
@Shoukang There seems to be incompatibility with your Advanced Interaction and SRPG_DirectionMod
Fixed. Please download the new version.

I updated the SRPG_Summon. AoE summon is implemented, you can use a new script call for AoE summon. Somehow you can't use the cell target tag to target an empty AoE, which is caused by incompatibility between position effect and AoE plugin. So I updated the AoE plugin in my bugfix patch to solve this issue.
You can also summon other types of events now. I didn't test it but I think it will work.
To let enemies use cell target skills correctly seems hard... I don't have enough time to fix this issue.
 

moldy

Regular
Regular
Joined
Nov 15, 2015
Messages
284
Reaction score
54
First Language
English
Primarily Uses
In the buff states core plugin, line 276: $gameActors.actor($gameSystem._EventToUnit[i][1]), replace it with $gameSystem.EventToUnit(i)[1]
I think this will solve the issue.

Fixed. Please download the new version.

I updated the SRPG_Summon. AoE summon is implemented, you can use a new script call for AoE summon. Somehow you can't use the cell target tag to target an empty AoE, which is caused by incompatibility between position effect and AoE plugin. So I updated the AoE plugin in my bugfix patch to solve this issue.
You can also summon other types of events now. I didn't test it but I think it will work.
To let enemies use cell target skills correctly seems hard... I don't have enough time to fix this issue.

Ugh you're too amazing!!!!!

It works well and the bugs are seemingly gone, woohoo! I noticed the summons don't walk in place like our normal units (they don't animate until they move around). Is that normal?

Edit: Remember folks, don't be a dummy like me and remember to put <type:actor> or event/object in the event note tag on whatever summon map you're using!
 
Last edited:

Shoukang

Regular
Regular
Joined
Jan 28, 2021
Messages
158
Reaction score
172
First Language
Chinese
Primarily Uses
RMMV
Ugh you're too amazing!!!!!

It works well and the bugs are seemingly gone, woohoo! I noticed the summons don't walk in place like our normal units (they don't animate until they move around). Is that normal?
I think that's determined by the event you copy. You can set step and walk animation, move speed, frequency in that event.
 

moldy

Regular
Regular
Joined
Nov 15, 2015
Messages
284
Reaction score
54
First Language
English
Primarily Uses
I think that's determined by the event you copy. You can set step and walk animation, move speed, frequency in that event.

I'm a dummy, I forgot to put the <type:actor> tag in the event note tag
 
Last edited:

dopan

Regular
Regular
Joined
Mar 27, 2020
Messages
1,365
Reaction score
731
First Language
German
Primarily Uses
RMMV
In the buff states core plugin, line 276: $gameActors.actor($gameSystem._EventToUnit[i][1]), replace it with $gameSystem.EventToUnit(i)[1]
I think this will solve the issue.

Fixed. Please download the new version.

I updated the SRPG_Summon. (..)
@Shoukang
i got some questions about the summon Plugin:
(because my eventgrave function needs an eventspwaner,and i try to find out if that one fits better as galvs plugin)
-Is the summon plugin similar to other eventspawner plugins?
- why did you make a summon plugin instead of using galvs plugin for example?
-what happens with the eventNote from summoned events.. does it transfer all EventNote_data ? or just actor/enemy_type and ID?

.. because i use an own Note on enemys in addition ..
the
"<unit:x>" its just there to be checked by plugins/variables for if conditions..

(i used galvs eventspawner back then & added a 2nd eventpage on parallel to initialize the EventNote data..)

-> screenshot
that first eventpage will be replaced by the second which has the default setup..
the 2mini scripts initializes the eventNote data
Screenshot_1.png

=> as far i understood from reading the plugin, it allows Aoe summon skills, and adds the actor/enemy data within the plugin..
(my eventgraves_function probably wont need these extras ,but i am also not sure if it makes much sence to use 2 spawner plugins at the end)
=>also it allows cooldowns for auto-unspawn ..
more detailled it "add-deathstate to unit" and delete event.. and i am not sure if thats the same like "unpawn"..

=> however very impressive to build such a plugin
(as far i know there are only 2other spawner plugins for rpg mv, galvs and Yeps... i highly preffer galvs betwen these2^^)
 
Last edited:

Shoukang

Regular
Regular
Joined
Jan 28, 2021
Messages
158
Reaction score
172
First Language
Chinese
Primarily Uses
RMMV
-Is the summon plugin similar to other eventspawner plugins?
- why did you make a summon plugin instead of using galvs plugin for example?
-what happens with the eventNote from summoned events.. does it transfer all EventNote_data ? or just actor/enemy_type and ID?
1. Similar to Galv's event spawner plugin.
2. As I previously mentioned there are many things to consider for summon skill. It won't be easy with eventing. Also, I want auto-unspawn and some other functionalities.
3. It loads all metadata. I actually don't understand why adding <type:actor> would solve @moldy's issue. Because this metadata is only used when using the 'SRPG Battle Start' command. For reinforcement it's useless.
 

moldy

Regular
Regular
Joined
Nov 15, 2015
Messages
284
Reaction score
54
First Language
English
Primarily Uses
1. Similar to Galv's event spawner plugin.
2. As I previously mentioned there are many things to consider for summon skill. It won't be easy with eventing. Also, I want auto-unspawn and some other functionalities.
3. It loads all metadata. I actually don't understand why adding <type:actor> would solve @moldy's issue. Because this metadata is only used when using the 'SRPG Battle Start' command. For reinforcement it's useless.
Honestly I'm just as confused lol. I'm not sure if another plugin is causing that weird requirement but as soon as I added the event tag, the summon was animated properly. Another question, is there a way to show the skill name being used at the top of the screen in map battle mode? I feel like I missed it somwhere.
 

dopan

Regular
Regular
Joined
Mar 27, 2020
Messages
1,365
Reaction score
731
First Language
German
Primarily Uses
RMMV
Another question, is there a way to show the skill name being used at the top of the screen in map battle mode? I feel like I missed it somwhere.
(About showing Skillname of "active skill" in MapBattle)
Thats what i called the "mapActionText"-function, and its basicly a common event which is triggered in the "pre action-event" if mapbattle is active..

Adra showed another solution by using "custom execution" instead of the "pre action-event"#1,806

(and thats pretty helpfull if your "pre action event" doesnt trigger before the action in mapbattle.. which is a mapbattle bug in the not edited version of the srpg core..)

-> however i used the textbox and 2 variables to get the "active skill" and to insert its name into the textbox
(this solution is explained on my github and several times here in forum)
-> Adra used´YEP_SkillCore and Galv's Timed Message Popups.
Both solutions work, but the srpg core and the mapbattle Part has no function for this by default
Edit:
(About Initialising EventNote meta data later in Battle, can be used for Spawned Reinforcements)
Shoukang said:
3. It loads all metadata. I actually don't understand why adding <type:actor> would solve @moldy's issue. Because this metadata is only used when using the 'SRPG Battle Start' command. For reinforcement it's useless.
-> if you mean because this data is only initialized at 'SRPG Battle Start' ,..
..Reinforcement "Spawned UnitEvents" can use :
JavaScript:
$gameSystem.setAllEventType();
// initialzes the meta of "EventNote" from all_Events..
// note: this one must be used first

$gameSystem.setSrpgEnemys();
// can be used instead of "add enemy",for allEnemys
//it uses the eventNote meta-Info: "<type:enemy>"

$gameSystem.setSrpgActors();
// same as above only for Actors & "<type:actor>"
Screenshot_1.png
we can use "$gameSystem." instead of "this."
.. in that case,for our scriptcall..
As mentioned earlier i did that on the spawnedEvent, EventPage1 using parrallel trigger and switching to EventPage2 for the "default Unit EventPage Setup"..
 
Last edited:

moldy

Regular
Regular
Joined
Nov 15, 2015
Messages
284
Reaction score
54
First Language
English
Primarily Uses
Has anyone gotten SRPG_Teams to work? Im trying to make a charmed state that switches an enemy's team, I used the <srpgTeam:actor> tag in my charmed state and it does nothing at all.
 

dopan

Regular
Regular
Joined
Mar 27, 2020
Messages
1,365
Reaction score
731
First Language
German
Primarily Uses
RMMV
Has anyone gotten SRPG_Teams to work? Im trying to make a charmed state that switches an enemy's team, I used the <srpgTeam:actor> tag in my charmed state and it does nothing at all.
yes i used and tested it right after it was availleble..
and it should work fine..
- is your plugin param Setup Correct?
-> so that the TeamName "actor" fits
Screenshot_2.png
sry i dont know much other things that could go wrong..
perhaps a little mistake on the State Tag? idk
 

Percarus

Just a Regular Guy
Regular
Joined
Nov 10, 2017
Messages
58
Reaction score
22
First Language
Filipino
Primarily Uses
RMMV
Unless there's an easier way to do so that I'm not seeing, looks like the best way to do permadeath is by making a plugin for it.

I'm an absolute beginner to Javascript, though not to coding entirely, as far as I understand it I have to add $gameParty.removeActor(n) to the srpgBattlerDeadAfterBattle function?

My question is how do I get the actorID from an event? Specifically, either the activeBattler or the targetBattler?

If all my assumptions are wrong, please let me know lmao
Any help would be appreciated! :D
 

moldy

Regular
Regular
Joined
Nov 15, 2015
Messages
284
Reaction score
54
First Language
English
Primarily Uses
yes i used and tested it right after it was availleble..
and it should work fine..
- is your plugin param Setup Correct?
-> so that the TeamName "actor" fits
sry i dont know much other things that could go wrong..
perhaps a little mistake on the State Tag? idk
Yeah my plug-in parameters are default and my tags are correct. It’s such a small plugin, I’m surprised I can’t get this to work. I’ll have to try a fresh demo with it I guess
 

Shoukang

Regular
Regular
Joined
Jan 28, 2021
Messages
158
Reaction score
172
First Language
Chinese
Primarily Uses
RMMV
Yeah my plug-in parameters are default and my tags are correct. It’s such a small plugin, I’m surprised I can’t get this to work. I’ll have to try a fresh demo with it I guess
I checked the code and that's simply because state priority is lower than the other note tags...
For both Game_Enemy.prototype.srpgTeam and Game_Actor.prototype.srpgTeam
After they call the Game_BattlerBase.prototype.srpgTeam function, which records the states note tags, check if a state note tag is found. If it is found return that tag, otherwise give the var team the default team name, and do the remaining check.
However I don't think changing the team name will do anything... because it's just a dummy name.
 
Last edited:

dopan

Regular
Regular
Joined
Mar 27, 2020
Messages
1,365
Reaction score
731
First Language
German
Primarily Uses
RMMV
Unless there's an easier way to do so that I'm not seeing, looks like the best way to do permadeath is by making a plugin for it.

I'm an absolute beginner to Javascript, though not to coding entirely, as far as I understand it I have to add $gameParty.removeActor(n) to the srpgBattlerDeadAfterBattle function?

My question is how do I get the actorID from an event? Specifically, either the activeBattler or the targetBattler?

If all my assumptions are wrong, please let me know lmao
Any help would be appreciated! :D
explanation + script info:
i dont think that a plugin is needed, you could use a common event with a bit of script..
There are event commands for adding/removing actors from party.
There is always the "active event id" and the "target event id" stored in variables.
"$gameSystem.EventToUnit(eventID)[1]" gives access to the eventUnit.
But you need to know if its an Actor or Enemy,there you can ask about the "eventType"
(actor or enemy)
For example in battle you could use a script that asks about all events:
- if the unit is an actor
- if the actorUnit is dead,not dead,alive ,not alive
(there are script for "is alive" & "is death",
both can use "!" at the beginning which means "not")

- if the actorUnit_eventID is the same as the targetUnitEventID or the activeUnitEventID
->and if all those if Conditions are "true",than you can run any script

Here is the Script that asks about those Conditions and if any Actor fits in, it will execute: "$gameParty.removeActor(actorID);"
..I made 2 version because i think that death Units could be not active/target event anymore:
NOTE:
there was a mistake in the "remove actor" script part, i added "event id" but i think it should be "actor ID"..
Its already fixed
JavaScript:
//0(checks target/active event id): ScriptCall "this.RemoveDeathActor();"
 // game interpreter function
 Game_Interpreter.prototype.RemoveDeathActor = function() {// this can be removed if used in a common event
     // check all map events
     for (var i = 1; i <= $gameMap.events().length; i++) {
     // access to Battler data
     var battleunit = $gameSystem.EventToUnit([i]);
     // access to GameMap event data
     var eventunit = $gameMap.event([i]);
     // if the event ID of "Event" and "Battler" are same and if its an actor which is death
     if (battleunit && eventunit && (battleunit[0] === 'actor') && (battleunit[1].isDead())) {
         // if the Event ID is also the same as "target" or "active" event ID
         // Sideote: it could be that a dead unit is none of both!
         if (($gameTemp.targetEvent().eventId() === [i]) || ($gameTemp.activeEvent().eventId() === [i])) {
             //your remove actor code + actor ID from Battler
             var battlerActorID = battleunit[1]._actorId
             $gameParty.removeActor(battlerActorID);
             // here could also be any other Script that is executed if these Conditions are "true"
             // "[i]" is the event ID which is checked from all map events

         }
      }
                   
      }

 };// this can be removed if used in a common event


//1(checks NOT target/active event id): ScriptCall "this.RemoveDeathActor();"
// game interpreter function
  Game_Interpreter.prototype.RemoveDeathActor = function() { // this can be removed if used in a common event

      // check all map events
      for (var i = 1; i <= $gameMap.events().length; i++) {
      // access to Battler data
      var battleunit = $gameSystem.EventToUnit([i]);
      // access to GameMap event data
      var eventunit = $gameMap.event([i]);
      // if the event ID of "Event" and "Battler" are same and if its an actor which is death
      if (battleunit && eventunit && (battleunit[0] === 'actor') && (battleunit[1].isDead())) {    
          //your remove actor code + actor ID from Battler
          var battlerActorID = battleunit[1]._actorId
          $gameParty.removeActor(battlerActorID);
          // here could also be any other Script that is executed if these Conditions are "true"
          // "[i]" is the event ID which is checked from all map events

      }
                   
      }

 }; // this can be removed if used in a common event

You can use the script in any event & common event or you can put the whole gameInterpreter into SRPG_Blank.js Plugin which can be edited into any mini plugin
=> you could also just trigger this script in the "event after action"
=> first of all you should check if it does what you want or if you wanna execute other scripts at the end, and then you can decide if you wanna build that into a mini plugin
(i hope i used all needed "If conditions" here for what you are looking for)

=> also instead of using this script you could use a common event, that asks with eventCommands about each actor, if they are affected with the death state,which is the same as beeing death.
Then using EventCommands to change the group status
---
Edit
About SRPG Teams
Plugin
its only used to set teams so that the meta data of the team can be asked about.
Screenshot_1.png
it still needed to make somekind of charme state, only the "team state tag" wont change the Units behavior
->or you need to use the AIControll plugin ,but i cant give much advice on battle formulas & the AIControll plugin
( if you want an Unit changing the side and actually attacking the other "team" )


1635657389684.png
 
Last edited:

Percarus

Just a Regular Guy
Regular
Joined
Nov 10, 2017
Messages
58
Reaction score
22
First Language
Filipino
Primarily Uses
RMMV
explanation + script info:
i dont think that a plugin is needed, you could use a common event with a bit of script..
There are event commands for adding/removing actors from party.
There is always the "active event id" and the "target event id" stored in variables.
"$gameSystem.EventToUnit(eventID)[1]" gives access to the eventUnit.
But you need to know if its an Actor or Enemy,there you can ask about the "eventType"
(actor or enemy)
For example in battle you could use a script that asks about all events:
- if the unit is an actor
- if the actorUnit is dead,not dead,alive ,not alive
(there are script for "is alive" & "is death",
both can use "!" at the beginning which means "not")

- if the actorUnit_eventID is the same as the targetUnitEventID or the activeUnitEventID
->and if all those if Conditions are "true",than you can run any script

Here is the Script that asks about those Conditions and if any Actor fits in, it will execute: "$gameParty.removeActor(actorID);"
..I made 2 version because i think that death Units could be not active/target event anymore:
NOTE:
there was a mistake in the "remove actor" script part, i added "event id" but i think it should be "actor ID"..
Its already fixed
JavaScript:
//0(checks target/active event id): ScriptCall "this.RemoveDeathActor();"
 // game interpreter function
 Game_Interpreter.prototype.RemoveDeathActor = function() {// this can be removed if used in a common event
     // check all map events
     for (var i = 1; i <= $gameMap.events().length; i++) {
     // access to Battler data
     var battleunit = $gameSystem.EventToUnit([i]);
     // access to GameMap event data
     var eventunit = $gameMap.event([i]);
     // if the event ID of "Event" and "Battler" are same and if its an actor which is death
     if (battleunit && eventunit && (battleunit[0] === 'actor') && (battleunit[1].isDead())) {
         // if the Event ID is also the same as "target" or "active" event ID
         // Sideote: it could be that a dead unit is none of both!
         if (($gameTemp.targetEvent().eventId() === [i]) || ($gameTemp.activeEvent().eventId() === [i])) {
             //your remove actor code + actor ID from Battler
             var battlerActorID = battleunit[1]._actorId
             $gameParty.removeActor(battlerActorID);
             // here could also be any other Script that is executed if these Conditions are "true"
             // "[i]" is the event ID which is checked from all map events

         }
      }
                  
      }

 };// this can be removed if used in a common event


//1(checks NOT target/active event id): ScriptCall "this.RemoveDeathActor();"
// game interpreter function
  Game_Interpreter.prototype.RemoveDeathActor = function() { // this can be removed if used in a common event

      // check all map events
      for (var i = 1; i <= $gameMap.events().length; i++) {
      // access to Battler data
      var battleunit = $gameSystem.EventToUnit([i]);
      // access to GameMap event data
      var eventunit = $gameMap.event([i]);
      // if the event ID of "Event" and "Battler" are same and if its an actor which is death
      if (battleunit && eventunit && (battleunit[0] === 'actor') && (battleunit[1].isDead())) {   
          //your remove actor code + actor ID from Battler
          var battlerActorID = battleunit[1]._actorId
          $gameParty.removeActor(battlerActorID);
          // here could also be any other Script that is executed if these Conditions are "true"
          // "[i]" is the event ID which is checked from all map events

      }
                  
      }

 }; // this can be removed if used in a common event

You can use the script in any event & common event or you can put the whole gameInterpreter into SRPG_Blank.js Plugin which can be edited into any mini plugin
=> you could also just trigger this script in the "event after action"
=> first of all you should check if it does what you want or if you wanna execute other scripts at the end, and then you can decide if you wanna build that into a mini plugin
(i hope i used all needed "If conditions" here for what you are looking for)

=> also instead of using this script you could use a common event, that asks with eventCommands about each actor, if they are affected with the death state,which is the same as beeing death.
Then using EventCommands to change the group status
---
Edit
About SRPG Teams
Plugin
its only used to set teams so that the meta data of the team can be asked about.
View attachment 205368
it still needed to make somekind of charme state, only the "team state tag" wont change the Units behavior
->or you need to use the AIControll plugin ,but i cant give much advice on battle formulas & the AIControll plugin
( if you want an Unit changing the side and actually attacking the other "team" )


View attachment 205371
Thanks so much! I'll see what I can do with this, maybe I can expand on this to have some additional functionality...

You're a real lifesaver! :D
 

dopan

Regular
Regular
Joined
Mar 27, 2020
Messages
1,365
Reaction score
731
First Language
German
Primarily Uses
RMMV
Info about starting to make a SRPG_scriptcall_list as reminder & Tutorial for new SRPG Users
There are often Question that are asked several times.
I do that aswell and we also dont have the time to always read the whole thread again,if we want to figure something out..so..
I just started to make a SRPG related Scriptcall List,
mostly using srpg Core related code for now..

pls Note this is NO plugin, but i will store this list on my Github within a Plugin Structure, in order to make the JS better visible..

I will probably update this List more often in the Future.
For those who are Interressted pls visit:
ScriptCallList_SRPG.js

If you have own Lists of "Srpg Core Scripts",or of other SRPG Plugin Scripts, you can send me your lists via private message aswell
and i will add them into the GitHub List
(always with proper "//help info text" pls.thx)
 
Last edited:

moldy

Regular
Regular
Joined
Nov 15, 2015
Messages
284
Reaction score
54
First Language
English
Primarily Uses
I checked the code and that's simply because state priority is lower than the other note tags...
For both Game_Enemy.prototype.srpgTeam and Game_Actor.prototype.srpgTeam
After they call the Game_BattlerBase.prototype.srpgTeam function, which records the states note tags, check if a state note tag is found. If it is found return that tag, otherwise give the var team the default team name, and do the remaining check.
However I don't think changing the team name will do anything... because it's just a dummy name.
What do I need to do to make a unit switch sides with this plug in? I even tried the actor note tag <srpgTeam:enemy> to see if they would be an enemy right off the bat but he still didn’t attack my units. I’m trying to use this to replace charm and confuse because confused units seem to just run around the map and don’t attack anyone. Charmed units do attack enemies but Id like them to also use their skills too, even support skills on actors.

I tried Hime's conditional scope change plugin to get around this since it worked wonderfully in standard battle system but sadly it doesn't seem compatible with srpg.
 
Last edited:

Shoukang

Regular
Regular
Joined
Jan 28, 2021
Messages
158
Reaction score
172
First Language
Chinese
Primarily Uses
RMMV
What do I need to do to make a unit switch sides with this plug in? I even tried the actor note tag <srpgTeam:enemy> to see if they would be an enemy right off the bat but he still didn’t attack my units. I’m trying to use this to replace charm and confuse because confused units seem to just run around the map and don’t attack anyone. Charmed units do attack enemies but Id like them to also use their skills too, even support skills on actors.

I tried Hime's conditional scope change plugin to get around this since it worked wonderfully in standard battle system but sadly it doesn't seem compatible with srpg.
You can try the confused state in the original demo first. If it works I will look into my code, I think my move method and AoE animation plugin may have something to do with this... If it doesn't work in the original demo, I guess it will be very hard to fix...
 

Latest Threads

Latest Profile Posts

Decided to splurge and commissioned a friend to draw the main character of my game jam project. Worth it! I never could've gotten the game and the art done XD New avatar by ClockworkCrane!
One of my biggest pet peeves? Action Button events not being interactable unless they are same as character.


Like... for why?
The X-Mas and ~ all ~ December long Calendar Project seems to bring my machine right to the limit. A very good oportunity to test what my pc can do. Or at which point I should decide to take a step back from filling the rendering program with assets.
The new grafics card and ram do their job well, that's for sure. My own early Christmas gifts were a good investment.
my laptop keyboard gave up, they keep glitching out, it seems like it's time to finally replace them, honestly surprised it lasted this long.
Tiny setback. Turns out my Title Screen image and one of my primary background & avatar images are AI Generated. Glad I went back and checked all my resource links. So I am in hot pursuit of replacement images. Which is fine since I was still missing some images that I need anyway.

Forum statistics

Threads
136,894
Messages
1,271,137
Members
180,673
Latest member
SnailKing
Top