Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Dukeofbrittany

21
Posts
3
Topics
A member registered Jul 23, 2024

Recent community posts

I think the big suggestion I have for this, beyond the fact it desperately needs better optimization; something you are already aware of, is that it is REALLY difficult to tell who is an enemy and who isin't. currently, it seems to all just be their health bar color which I don't quite think is enough. Which then gets into the fact that, for a game like this, the player I think should be starting with less minions on like every level, the player needs to be forced into using their minions more, and the enemies should scale far more in the threat they pose to you and your minions, and less in numbers, (Thought the fact they scale in number as they do is good and fun!) Plus, I feel like the level count in this game, purely within the bounds of the content already included, could be doubled without too much difficulty! Big thing I want to see overall is larger levels that are more sparsely packed that give the player a reason to actually explore it. then, for a second-to-last level, what you could do is have it be a very large map that is not very populated at all, start the player with no minions, and ask the player to convert a couple initial enemies and help them beat the main block of enemies without much direct involvement by means of clever level geometry. (like, either through overtly segmenting off a portion of the map or by having a door that only enemies and minions can use. Then the player is only allowed to take potshots at the main brawl while their minions do most of the work.)

As for where to go with game balance, yikes, the game is WAY too weighted in favor of the player, you really have to go out of your way to loose, as the majority of weapons are just so ridiculously OP in power. They pretty much all one-shot or two-shot very quickly, and the ones that do have limited use and/or long cooldowns are able to clean an entire room in a single attack, no minions required, which completely invalidates the fact they are supposed to be handicapped! So, in keeping with the suggestion of making the minions more important, my suggestion is to remove the ammo for the knife and wand completely, and make them able to outright one shot most enemies, that aren't mini-boss flavor enemies. Then, give the player a third default option, also ammoless, that has like 20 range and an 120* firing arc that heals and temporarily buffs minions, but only does minimal attack damage. Then with the rest of the weapons, I believe they should be all toned way down, and they have a general theme of being very strong but slow, or huge range and victim-cap but low damage. Basically, the player's arsenals renders them far more of a support-summoner role, as opposed to a one-man-army. And, hear me out, I think the way to tie all these changes together and make the game properly challenging on top of being fun is to slap a time limit on to every mission! 

Plus, weapon idea that I don't think you had currently, (being that I hardly needed to pick up any new weapons after the ones you start with and the ones that spawn near the player's spawn), a long range armillary/mortar/grenade weapon. Its a weapon that behaves similar to the hammers in their current incarnation, but, their range is way higher, the radius of their attack is much more narrow, and the damage they deal is very high. Basically, their role is for making precise, long range attacks against a small group of targets, or to cuase chaos right in the thick of the enemy death stack.

That all being said, I like the art, I do think the game is fun, and I can see that you did put quite a bit of effort into it! And hey, in spite of my feedback, sometimes a mindless power fantasy is all we need for a good time. You did good, keep it up!

Purely in terms of being a jam submission, it's very solid! Given that it only had a month to be created, the amount of art assets that had to be created for this just reeks of a ton of effort being put in! Like, Grizwald's and Jaxo's portraits are a little stiff, but overall, its very nice stuff and nothing looks or feels outright bad at any point. And I can see the framework for something much grander at play too, and I am enthused to see where this goes. 

As for constructive criticism, I think the best place to point out would be the overall characterization. I know, it's a jam product, what you have is excellent for the time and budget you have, but, if and when you further develop this game, or this setting, I would think the best place to look is your characters. Like, were told or shown little of what sort of people Grizwald and Jaxo are, Griz is a gentle but caring giant and Jaxo... is the reasonable one that for some reason goes along with things?  And finally Jess, who despite being the most expressive character by a wide margin and actually having some interesting things to say... has like zero real personality to speak of, despite being the protagonist. 

While I personally do not believe that the MC has to bee necessarily "relatable" to be interesting or compelling, I DO at least think it's important that the player can at least intuit who they are and learn things about them. And Jess... just doesn't actually get any opportunity to establish an even halfway consistent MO. The most I can get is that they are transgender via their design motifs which I suppose is a neat idea considering they are a bee but its something that I feel like neither jess or anyone else actually thinks necessary to bring up, nor do I (a straight guy with zero romantic experience or any real understanding of the subject) feel like anything is done with it at all, (and to be clear, sometimes the lack of mentioning something can be just as insightful as if they did bring it up; they are your characters, do whatever you please with them; so I am not calling it bad, its just a bit... odd...); and the only other thing I can get from them is that they are someone who tends to shy away from danger? Someone who is a bit sheltered, mildly oblivious, somewhat left out of the loop on things? Unclear.

Other than that, Jess is internally inconsistent, beyond the multiple choice nature of the medium. Like, you start the game with them either sleeping in or getting up immediately, then later have them be someone who is willing to get out of the house early when someone tries to reach them, only to then try to hope the people knocking at their door go away the next morning. And, yeah, a lot of what little we get on them goes like that, where its very difficult to gauge what their overall ethos is, which I think ended up unintentionally down-playing the impact lines like "Spin city has lost it's luster" were supposed to have. I do think it would be very important for the player to have a bit more time to get into their headspace, and so on.

Similar story with the setting, which frankly I can also peg right back to Jess and the other two major characters. It's shown there's this half-changing epidemic of sorts going about, and while of course that's going to get developed in further detail later, the status quo of Spin City that establishes why the half changing is a disruption is not. "Established as a safe haven following the 'changes'" is roughly what were told, in addition to hospitalization problems presumably also related... and animal hybrids being the norm can be rooted in attempts at immortality, but... OK? A flaw with the setting is that this does not sufficiently explain why most people are or are not animals, if it was a willing thing to begin with for the general population, and in particular, what sort of clear-and-present danger half-changed individuals might present to fully hybridized folks. Violent behavior, yes... but... the implications of the story beats imply that something more than that might be at play here to cuase a quarantine level situation, yet this does not feel like the narrative intent at all. "Can those already fully changed get partially changed again?" Is the question my mind keeps coming back too, and I don't know if that is what the audience was meant to be thinking.

And, this all has further implications and potential for insight into our major characters, namely-but-by-no-means-exclusively Jess. Like, they are a bee *now*, but I think an interesting question that could, depending on the answer, influence their personality is whether they have always been like this? Were they human at some point, and if yes, was becoming a bee in anyway willing or desireable to them? Or, were they born the way they are? Even more interesting a possibility, going off of a small detail you included, were they a normal, feral bee originally? -- That last one I think actually has the most potential! And so it goes for the rest of the cast; regardless of whether or not the player learns such backstory about them directly, any sort of answer to this question even just in the writers room alone would invariably shape these character's own personal world views.

I can probably contribute some more chatter if you want it, but for now, I think that is plenty. (yes, I know, I am incapable of shutting up). I like what you have here, and am eager to see more from you all! Keep up the good work!

First, I will try to keep this brief because I do have other things that I need to do today.

second, you probably don't have to respond to this. You are still welcome too if you want, of course.

So, I have gotten a bit more opportunity to play your game since the last patch, where you fixed the whole "You forgot to tell individual body parts to start transforming again." Well, I can confirm, it is fixed! So... now that your game is working as intended, I can confirm that a new problem has arisen, one that I am unsurprised to find. 

Now that your body parts are always transforming again,  the game is now way too difficult. You can spend all of your MP available on using reduce curse, and it will barely buy you any time at all. I am fine with a more difficult experience, even if high difficulty games and roguelikes are not my specialty, but once you start transforming it is pretty much impossible to not lose eventually.

Don't get me wrong.

I understand that this is the point of the game, I get that, I am just finding it really difficult to even stand a chance. 

So on one hand, I think the big Body part, priority, and TF speed system overhaul is coming at the perfect time to help mitigate that. hopefully, the end result of this is that the game is a bit easier, especially on the lower floors.

The minor suggestions that I have are this: You have the logic that has your transformation "infect" adjacent body parts, presumably as the first reaches higher overall values. You also, understandably, tell a body part to stop transforming once it is fully changed. Well, because I am pretty sure this is not the case already; What if similar logic was applied when a body part's level of transformation was dropped to 0? I think how the system currently works is that for a body part that has been infected with the transformation, the transformation will continue to progress for that body part even if it's own transformation has been reduced to zero, as long as your over all transformation has not been "cured". In  other words, while the game will infect you a body part at a time, it will only stop transforming you if you have been completely cured. What about allowing individual body parts to be cured? If you manage to completely cure a body part even if the overall transformation has not, that body part will need to get reinfected in order to progress again? I think cursed equipment in particular could make excellent use of this, to further the idea that they are the source of your current transformation, and that you are trying to contain their influence.

Next, I think you could consider having the game's intended difficulty paced out over a longer period of time. I think what you could do is have size of the next floor increase less than it currently does, and similarly have the enemy spawn odds spread out a bit more as well: like, mice and bunnies spawn on a couple more floors, cats can't spawn on the first floor but have a low chance of spawning even on higher floors, kobolds too, make it so that past floor six you have more to engage with beyond just bats and wolves. And, I think the first couple floors could be just a bit easier to survive in in-general.

As for cat's themselves, I really don't want to nerf them too much, but, they really are the cuase of 95% of game overs. So, I think they could be made like, a lot more rare on the first floor, and have their attack dropped by one or two points. I still think they should be threatening, but for an enemy that is basically the most common cuase of death in this game due to how far away they can see you and the fact they will never leave you alone.

Ha! Yeah, I did warn you that, while technically C++, Matlab/Octave format, to my knowledge is pretty cursed and bizarre compared to most programing languages, due to the fact they are meant to be calculators first, and not... you know, things to build games with; and also, if my suspicions are correct, I think their formats have barely changed since THE EARLY 1990's!!! They have just been expanded massively over time. I mean, yeah, I am really glad I had to learn this for college, but, yeah, I dunno how helpful it will be in learning any other sort of programming. Over a week ago, when you said "Oh, sure, I think I will be able to figure out how to read Octave code easy peasy!", I genuinely did a double take. So here we are now, me just having to assume that your programming ability is  more sophisticated than mine, and just taking a blind guess that 'float' must be a data type akin to 'byte' and 'int'. ah well.

Anyway, the thing I am most curious about is what you actually think, on a purely objective level, about my suggestions for radically reworking priority, and using stuff like current HP and MP levels as factors for the TF speed calculations? I felt like the way the priority system worked currently with some enemies always having final say was actually at odds with the game's mechanics and overall spirit, which is why I wanted to make it much more about "What are you being exposed to currently? What is currently the thing you are having the most difficulty dealing with? Do you have a cursed item? If so, then they should have their way with you, even if they are 'weaker' than the other enemies." I think another justification is this: I don't know what your zoo looks like, but I have like three-five mice, bunnies, kobolds, and bats each, and at least five wolves. So far, so ok. And then... I have about twenty cats and it took about three hours of deliberate grinding to get a single snake. I still have a single snake, because wolves are just more omnipresent than snakes at all times. and cats just have zero chill in general and are really good at overwriting bunnies, mice, and kobolds. Cats also have zero chill, and have zero chill. Did I mention that cat's have zero chill and are impossible to deal with if you have no equipment?

I can say that with the priority, what I was trying to do, because this is Octave were talking about that is all about being a calculator first, was actually have it contain 1000 data points evenly distributed across a range from 0 to 100.  In layman's terms, in my code Mouse_priority(555) refers to the data point contained at the 555'th point on the vector... being 55.5. The actual effect of this is that I was originally going to model it as a percent so "+200 to Mouse_priority(555)" would mean that the priority of mice would change from the point (555) or 55.5% to (755), or 75.5%. So I don't think you would be surprised to learn that about three hours in I released, "You know what? That's dumb. Why did I make a number only to divide it by ten invisibly? I should fix that... But i'm already this far and i'm too lazy, so it shall stay." So, all I actually did was remove a comment about the percent and just ignored the fact I did it like that entirely. 

And at the end of the day, I did want to actually apply all my college training onto SOMETHING, which I admit is half the reason I made this so intricate, beyond just thinking it would make for a very dynamic system.

(1 edit)

% Firstly, I forgot something.

% If you died recently, death will add a flat +5 to the New_TF_speed value independent of the main function. This is becuase I think saveing that drastic increase would be a bit unfair. This increase should linger for like 300 turns or so, and probbably decay to zero over that period.

% Similarly, cursed items in phase 3 will add an unsaved +7 to the TF speed the same way death does, and cursed items in phase 2, 3, or 4 that are permenantly equipped will add +0.5^2 to the big square root in the main function that will get saved.

% and now for the ranking system! While the generation of the internal number is ludicrously complicated, the rank itself is much less so, and should be very simple to understand.

display("----");

if (New_TF_speed <= 2) % I will use the terms "rate of transformation" or "TF%" to refer to the actual amount of transformation affcting the player.

  % Reminder for this rank, and all other ranks. The Strange Surpressor, when on, will multiply your per turn TF% by 0.95, even for the recession in this rank.

  % It also affects all priority gain and loss, and all instantanious TF% changes.

  display("Rank A Active");

  % Set per turn TF % for all body parts to -0.1%.

  % Additionally, the most transformed body part recives another -0.1% per turn.

  % Chance for transformation to infect ajacent body parts cured of the ongoing transformation is -1000%.

  % Set all priority gain factor to 1.25 times.

  % Set all priority loss factor to 0.8 times.

  % I think makeing priority more difficult to manage when their transformation is recceding will be useful in stopping the player from ending up in a situation where they become functionally invunerable from transformation.

  % Maybe you could imply the protagonist is feeling overconfidant and full of hubris that they stop paying attention to that?

  % If ( net_TF_level <= 25% and Rank_A == 1)

    % Disable Reduce_curse

    % So the player isin't wasteing MP on it for no reason.

  % end

elseif ((New_TF_speed >2 && New_TF_speed <= 3.5) || (New_TF_speed >2 && New_TF_speed <= 10 && (Cat_priority <= 29.9  && Mouse_priority <= 29.9  && Bunny_priority <= 29.9 )))

  display("Rank B Active");

  % Set per turn TF% to 0.

  % chance for transformation to infect new body parts is -50%.

  % chance for transformation to infect new body parts is -1000% when the overall transformation of a body part is <=80%.

  % Chance for transformation to infect new "special"/"hidden" bodyparts, such as tails and back-mounted wings for example, is -1000%.

  % all priority gain and loss is at normal levels.

  % If reduce curse is active, the player recives the Per turn TF% of rank A instead.

elseif (New_TF_speed >3.5 && New_TF_speed <= 7.5) % && (Cat_priority >= 30 || Mouse_priority >= 30 || Bunny_priority >= 30)

  % The extra priority check is there, at minimum, as extra insureance to make sure the game is not bugging out.

  % I however couldn't get it working?

  % I though to make the minimum priority to actually transform slightly higher than the flag's stand-in, becuase of how dangourous high priority is and becuase I thought, "Maybe you would think of how to use that in a cool way?"

  display("Rank C Active");

  % Set per turn TF% for all currently transforming body parts to +0.05%.

  % Selected at random, a currently transforming body part will recive an aditional +0.1% per turn. (The 'lucky' body part will also change every so often, regardless of if it got full transformed or cured.)

  % chance for transformation to infect new body parts is -50%.

  % chance for transformation to infect new body parts is -1000% when the overall transformation of a body part is <=80%.

  % all priority gain and loss is at normal levels.

  % If reduce curse is active, the player recives the Per turn TF% of rank A instead.

elseif (New_TF_speed >7.5 && New_TF_speed <= 10) % && (Cat_priority >= 30 || Mouse_priority >= 30 || Bunny_priority >= 30)

  display("Rank D Active");

  % Set per turn TF% for all currently transforming body parts to +0.15%.

  % Selected at random, a currently transforming body part will recive an aditional +0.3% per turn. (The 'lucky' body part will also change every so often, regardless of if it got full transformed or cured.)

  % chance for transformation to infect new body parts is -20%.

  % chance for transformation to infect new body parts is -1000% when the overall transformation of a body part is <= 50%.

  % all priority gain and loss is at normal levels.

  % If reduce curse is active, the player recives the Per turn TF% of rank C instead.

elseif (New_TF_speed > 10 && New_TF_speed <= 13)

    display("Rank E Active");

  % Set per turn TF% for all currently transforming body parts to +0.3%.

  % Selected at random, two currently transforming body parts will recive an aditional +0.3% per turn. (The 'lucky' body part will also change every so often, regardless of if it got full transformed or cured.)

  % chance for transformation to infect new body parts is -1000% when the overall transformation of a body part is <= 50%.

  % all priority gain is 1.1 times higher.

  % All priority loss is 1.1 times higher.

  % I like to imagine that, as your body gets more unsatbe and more unable to fight off the transformation, it become more succeptable to all transformative stimuli.

  % What I am concernd about at this point is that the player could easilly end up in a situation where they are perpetually stuck in a rut where, once theings get bad, the player pretty much can't do anything to regain control of the situation.

  % so I thought, maybe there are some small benifits to being at a high TF rate? To give the player a bit of risk and reward? Reward them for doing well in a bad situation?

  % therefore:

  % player hunger drains 10% slower.

  % the player recives an additional per turn HP regen of +0.05. (I like the idea that their body is transforming fast enough to essentially heal wounds by proxy!)

  % the player recives an additional per turn MP regen of +0.02.

  % If reduce curse is active, the player recives the Per turn TF% of rank C instead.

elseif (New_TF_speed > 13)

    display("Rank F Active");

  % Set per turn TF% for all currently transforming body parts to +0.5%.

  % Selected at random, two currently transforming body parts will recive an aditional +0.3% per turn. (The 'lucky' body part will also change every so often, regardless of if it got full transformed or cured.)

  % chance for transformation to infect new body parts is +20%.

  % chance for transformation to infect new body parts is -1000% when the overall transformation of a body part is <= 20%.

  % all priority gain is at 1.5 times.

  % all priority loss is at 1.25 times.

  % player hunger drains 10% slower.

  % the player recives an additional per turn HP regen of +0.05.

  % the player recives an additional per turn MP regen of +0.02.

  % If reduce curse is active, the player recives the Per turn TF% of rank D instead.

else

  display("This failsafe message should not appear");

end

-----------------------------------------

And, that is about everything I have thought out! Obviously, I couldn't go much further without having to reverse engineer your Body parts system which I think is... going a step too far I think, so I think this is a good place to stop! 

Hopefully, this all is good material to hep your game along, and I am curious how much this has done for you already. I might re-build this without all the comments to make a proper simulation to see how the numbers work out in a more realistic setting, but A, I think you are just as capable of doing that, and B, It might be good to let you figure out things and the actual values you want to work with from here. So, unless you ask otherwise, I think I will leave you too it!

Let me know about any other questions you might have, or if there is anything else that you would want me to do for you or your game before the end of September, or if you want to just generally chat. (i'm happy to just talk about things in general, too!) Like, how has the development been going, as well as your life! I hope my work and opinions hasn't been stressing you out at all, or if I was just being annoying, so sorry if I was. I am excited to see where your game goes in the future!

The last thing I will leave you with for now is this: When I first played your game, I was initially confused as to why you had a list of transformed body parts as opposed to a single TF tracker. But, if you had not guessed by now, I have decided that I actually like that system so much that... why don't we go even further with it? Aside from having some 'hidden'/'special' parts like tails and back mounted wings that are invisible until they are needed, why are hands and arms seperateated but legs are not? How about we split them into feet and legs? (Maybe some select animal paws would disable, or destroy, boots?) For the head, maybe ears and muzzle could be separate? For the body, maybe we could split the torso into waist, chest, and internal organs? … Again, maybe that's just going into the realms of the excessive, but the legs especially, when I considered it, I genuinely thought that maybe those should be split if the hands and arms are.

Anyway, I will leave you too it. Tell me what you think, if you want to! I hope this code framework helps, have a good day!

---------- 

Edit from like four hours later...

Welp, I realized, in my rush to get "the easiest part" finished, I completely forgot to include not one but two things, and have also decided that one of the things I put in there could maybe use a bit of clarification.

Clarification first. So, I mentioned that some of the really big TF speed penalties "won't get saved". Ok, what do I mean by that? Well, you know how I put ten possible previous TF speed values into a vector, and called that the previous values? Firstly, at the very beginning of a  run, all these values are filled with 3.5 so that the run can start stable and at the median value. And, after the big main function is all calculated and run, all the values currently in the vector are shuffled down by one, with the oldest one being deleted completely and the new value getting saved to the newest position in that vector. So, the result of the function is instantly saved to the history of your TF speed,  but still can get some extra changes to it after that point. Amd since those extra changes won't be put into the history vector, they are "unsaved".

As for what I forget, first, about Reduce Curse. I showed it secretly dropping your rank by one or two stages here, but That was merely one possible option. We can also have it give the player an independent -0.1% TF per turn for it's duration, or, have your TF value devided by three, (unsaved obviously), for its duration. There's a lot of possible solutions here, and I think they are all good. Regardless, I think reduce curse should also remove a bit of priority from all animals, I'm thinking (10*player_level*how_much_it_was_upcasted)-(10*TF rank.) With lower ranks being more unwilling to remove priority from Reduce Curse.

The other part I forgot is biome effect. Basically, it can operate similar to Reduce curse, just in the opposite way, where it increases or reduces priority gain and lossper animal based on the current biome, and will increase or decrease per turn TF% gain and loss based on animal. It's too complicated to correctly model here.

% WWEW! Overstretched itch.io's character limit again! I'm really good at that!

% So again, Octave is weird and unusual about how it goes about setting independedt functions. You either have to save them as a seperate file and project with a seperate data type,

% or you have to make them an independedt function, which can be pretty hard to read at times.

% so, for this next part, I will be first showing you the whole final function first, as I will be setting it up as an independent function, then break it apart and explain it in chunks as I explain each component.

% I also have you know, that becuasse of how complicated setting these things up can be, I am also breaking things up in my code for ease of reading, and ease of programming.

% I'm sure I could compress all individual steps into one collossal independent function, then set up only its inital conditions, but I think its better for the both of us that I keep it loose for now, and calculate things in steps.

Transformation_speed_value=@(MoPV,SDoPV,HP_Diff,MP_Diff,Pp,Hunger_Diff,Rndm_Drift,RCB,IdleB,FHB,Ss) ((MoPV)+(-(SDoPV./4)+((sqrt(((HP_Diff).^2)+((MP_Diff).^2)+((Pp(1)+Pp(2)+Pp(3)+Pp(4)+Pp(5)).^2)+(Hunger_Diff).^2)+Rndm_Drift(1))./2)-RCB-IdleB-FHB).*Ss);

% So, yeah, theres... a lot going on in that deathstack of an ewuation. I get it. At the time of writeing this comment, I have half a mind to incorperate things a bit further, namely the whole block of "speed penalties", but I will decide as I go along.

% You may also notice that there's a few things absent from the formula all the same.

% The penalties from death and cursed objects, for example, I think are too strong so I think they should NOT get saved to the history of the TF speed value, and additionally will be applied later,

% Biome, I want that to primarilly inpact priority gain, to seperate it from hunger more, and impact the rank effects.

% As for temprature? Yeah, I don't even know how that works in the current build, so i'm disregarding it for now. I'm sure you can ficure out how to cram it in, somewhere. We have a very dynamic system already.

% anyway, we have a lot of component parts to disect as-is, so we should just start plugging away at them one by one. Starting with the two most important:

% the transformation's mean value. I think the baseline value of the transformation speed should be the adverage value of all of it's previous values. I'm thinking the last ten are a good place to start.

% First, to get most of it, we need it's vector of previous results. So, let's set that up and fill it with a bunch of sample data.

TF_value_results=zeros(10,1);

TF_value_results(1)=3.5;

TF_value_results(2)=3.5;

TF_value_results(3)=4.5;

TF_value_results(4)=5.7;

TF_value_results(5)=7.3;

TF_value_results(6)=5.9;

TF_value_results(7)=0.2;

TF_value_results(8)=11.0;

TF_value_results(9)=5.3;

TF_value_results(10)=4.6;

display(TF_value_results); %and now we have a vector of results. The mean of previous values is coulculated quite simply from this.

MoPV=@(TF_value_results) ((TF_value_results(1)+TF_value_results(2)+TF_value_results(3)+TF_value_results(4)+TF_value_results(5)+TF_value_results(6)+TF_value_results(7)+TF_value_results(8)+TF_value_results(9)+TF_value_results(10))./10);

[MoPV_result]=MoPV(TF_value_results);

display(MoPV_result); % In this case, the result was 4.75. so, ideally, with this being the base value, it will be pretty consistant in ignoreing outliars in the data, but trending in the direction of the more recent values.

% We then will add or subtract three more bits of data, subtracting out a reduced form of the standard deviation of these values from the expected defualt value, subtracting out some small and uncommon bonuses, and adding in all the extra active penalties.

% Starting with the Standard deviation, while I could use the in-built function for standard deviation, i'm going to chose to not becuase Unity might not have it, and I am going to be useing a variant form that is not the norm.

% Instead of useing the mean of our current data set, I am going to instead use the 'assumed adverage' version of the equation, i.e. a fixed value for our mean, being our defualt value of 3.5.

D=TF_value_results-3.5;

SDoPV=@(D) (sqrt(((sum(D.^2))./10)-((sum(D)./10).^2)));

[SDoPV_result]=SDoPV(D);

display(SDoPV_result);

% Here, and assumeing that I didin't make a mathmatical error, the result was 2.6534.

% Unless there was an issue in my formula that I and octave failed to catch, this should be giveing pretty reliable and consistant pressure for the TF speed value at all times.

% This is good, as it helps act as a direct compensator for the running adverage values. The higher your TF speed has been on adverage, the more this will try to bring it back down.

% the only issue I can see with it currently is that, if your adverage value is somehow below that of the defualt, it will continue to try to get it even lower as the finsl value has to be negative due to the square root involved. But, as this effect shouldn't be anywhere to the sane strength as with the higher values, this should be ok.

% Next, we have a much more complex yet mosT simple to understand metric which is the leniariesed form of all the little penalties you might be currently experienceing.

% It is comprised of four seperate metrics. Three of which are all pretty similar, and one of which is not. They are the differential of your HP, MP, and Hunger values, compared to your maximums, and a predetermined number.

% In my eyes, I think it should be the case that a lot of factors will affect your transformation speed; some by a lot, some, not very much. And, wherever possible, they should do so in a more interesting way then "yes or no".

% so, all the TF speed penalties, before being added to the function, should be squared and added together before getting the square root treatment.

% (It's a normal thing in colledge level math and physics. It's not worth explaining, just know that it keeps all the data leniar and consistent. Reduces errors and the impact a single outliar has. just roll with it.)

% The net result is that haveing a lot of high penalties will impact far more substantially, relative to the effect from all of them being low save one really high value.

% So, first, HP and MP. I am giveing them the same values in this example, but I think you can aregue that the effect of one could be higher or lower than the other.

% In this example, the impact they give on the final value should be largely neglegeable. I still imagine that the transformation would be more difficult to passively fight as you get weaker.

HP_Diff=@(current_HP,MAX_HP) (2-((2.*current_HP)./MAX_HP));

[HP_Diff_result]=HP_Diff(27,36);

display(HP_Diff_result); % 0.5

MP_Diff=@(current_MP,MAX_MP) (2-((2.*current_MP)./MAX_MP));

[MP_Diff_result]=MP_Diff(0,22);

display(MP_Diff_result); % 2.

% Here, I am just showing what I think often happens. Often, the player will be running around on low MP in the current build allo the time. Hopefully, a small penalty for doing this, plus a cooldown for Reduce Curse should put a stop to that.

% I'm going to run a very similar set up for hunger. It's going to reflect how it opperates in the current build though, and have a higher price than HP and MP.

Hunger_Diff=@(current_hunger,MAX_hunger) (3.0-((3.5.*current_hunger)./MAX_hunger));

[Hunger_Diff_result]=Hunger_Diff(27,100);

display(Hunger_Diff_result); % 2.055

% You may notice that, while the potential for hunger is a lot more than HP and MP, the minimum is actually less then 0. This is intentional. I think there should be a small window for having full or almost full hunger adds a minor bonus to the TF speed value.

% therefore, i'm going to also have an extra bit of code for the hunger, before it gets sent to the value.

if (Hunger_Diff_result<0)

  FHB=Hunger_Diff_result.*(-1);

  Hunger_Diff_result=0;

  display("not Hungry");

else

  FHB=0;

  display("I'm very hungry");

end

% and lastly, we get the weird one. The one that I think should actually be a bigger threat than hunger, relatively speaking. Priority level!

% Unlike the others, this one is generated in logical compariosons only. Unlike the others, this one can be not a problem at all, or... it can singlehandedly kill you.

% Why? becuase were dealing with something that is added to itself before betting squared and added to the other penalties.

% You may also notice that this one is an evil. don't worry about it.

if (Cat_priority(F) >= 95 || Mouse_priority(F) >= 95 || Bunny_priority(F) >= 95)

  display("Very Very High priority!!!!!"); % 16!!!

  Pp(5)=1;

  Pp(4)=1;

  Pp(3)=1.5;

  Pp(2)=1;

  Pp(1)=0.5;

elseif (Cat_priority(F) >= 90 || Mouse_priority(F) >= 90 || Bunny_priority(F) >= 90)

  display("Very High priority!!!") % 9

  Pp(5)=0;

  Pp(4)=1;

  Pp(3)=1.5;

  Pp(2)=1;

  Pp(1)=0.5;

elseif (Cat_priority(F) >= 80 || Mouse_priority(F) >= 80 || Bunny_priority(F) >= 80)

  display("High priority!") % 4

  Pp(5)=0;

  Pp(4)=0;

  Pp(3)=1.5;

  Pp(2)=1;

  Pp(1)=0.5;

elseif (Cat_priority(F) >= 60 || Mouse_priority(F) >= 60 || Bunny_priority(F) >= 60)

  display("Medium priority"); % 2.25

  Pp(5)=0;

  Pp(4)=0;

  Pp(3)=0;

  Pp(2)=1;

  Pp(1)=0.5;

elseif (Cat_priority(F) >= 40 || Mouse_priority(F) >= 40 || Bunny_priority(F) >= 40)

  display("Low priority");

  Pp(5)=0;

  Pp(4)=0;

  Pp(3)=0;

  Pp(2)=0;

  Pp(1)-0.5;

else

  display("Very Low priority");

  Pp(5)=0;

  Pp(4)=0;

  Pp(3)=0;

  Pp(2)=0;

  Pp(1)=0;

end

% and that is it for the penalties being applied. We're almost done, but we have a bouple more misalanious things to bring up first.

% We have a couple situational bonuses to include to the function, things that will lower your TF speed every recalculation in a more linear way, but are rather small.

% Like other factors that you can shove into the feild for the penalties, both thereand here i'm sure there's a whole ton of little things you could shove into both for little slight situations both positive and negative.

% At this point, we have alcually already set up two of them. The bonus for haveing a full belly, and the bonus for not haveing any TF stimuli for a time.

% Currently, for sake of simplicity I am haveing it be tied to the maximum time of the for loop at the top. This you can agrue that it could be split off into it's own seperate system. for now, it's here to act as an exrea reason to evaid battle, and to make the resting mechanic more useful.

% "If you aren't being exposed to anything that would cuase you to transform, then, your transformation will slowdown somewhat."

% The only other ones that I have are a small reduction that is applied for every recalculation when Reduce Curse is active:

Reduce_curse=0; % off

if (Reduce_curse==1)

  RCB=0.5;

  display("Reduce curse active");

else

  RCB=0;

  display("Reduce Curse inactive");

end

% as well as some random drift that is impossible to control. This is to keep the system from getting too stable, or evenunstable. Hopefully, a small amount of random ajustment either up or down will help the whole thing feel more 'alive' and 'dynamic.'

rng("shuffle");

Random_upper_bound=0.5;

Random_lower_bound=-0.5;

Rndm_Drift_result=(Random_upper_bound-Random_lower_bound).*rand(1000,1)+Random_lower_bound;

display(Rndm_Drift_result(1));

display(Rndm_Drift_result(2));

display(Rndm_Drift_result(3));

% and time for the very last thing here before we get to the actual number generation. It's time for the preallocated slot for that item I suggested earlier, the Strange Supressor.

% How it works in here is pretty simple. If it is on, it muliplys the total CHANGE of the formula, excludeing the base adverage of the value, by 0.95.

% if it was on, set Ss to 0.95. I am going to treat it as being off, so

Ss=1;

% and with that, assumeing there are no bugs with my code, I should be able to build the formula again in it's running mode, and it should give us our result!

[New_TF_speed]=Transformation_speed_value(MoPV_result,SDoPV_result,HP_Diff_result,MP_Diff_result,Pp,Hunger_Diff_result,Rndm_Drift_result,RCB,IdleB,FHB,Ss) % depending on how the random number generator was feeling, the results would range from around 5.5 to 5.9 for this exact set up of inital conditions.

% What the fuck, what do you mean all of my code worked correctly and exactly as expacted after only the second try? What do you mean I wrote everything correctly such that it had minimal bugs???

% This is actually such a weird feeling. When I did this for colledge, I would often be banging my head against a wall for a week over one single function for a project.

% A-anyway, uhhhh... yeah! That is the hardest part of the script all written up and functional!!!

% I will let you attempt to reverse engineer and play around with this on your own time. I am going to work on the ranking system and try to build a more robust simulation for this!

% see you in a few days, most likely.

ALRIGHTY! I am back as promised with a heafty update! I have gotten the largest segment of the new system completed, that being the actual TF speed function and all of it's component parts, assembled and somehow working with seemingly no major issues on my end? (I still have no idea how I managed to get all this set up with no issues that took forever to work through. Maybe all that programming i did last quarter in college accounted for something after all?)

Anyway, I will also repost the first section that I already submitted as I know that I had added at least three lines of code to it, and I might have changed something in there as well, ( I don't recall).  What you should be able to see pretty clearly is that, even if you decide that you want all different numbers for your game in the end, the function that I have prepared, although undeniably daunting. should actually be pretty easy change and modify at your leisure! I hope you can also now see why I think we can consider replacing the priority system, if we are replacing the TF system.

With this, you should have all the tools you need to reverse engineer it and be able to play around with it in your own engine and programming style. My next goal is to finish all this work up with the section on your Transformation rank, which is way less complicated but will contain some extra fluff for you to consider. Then, I think I might try to reorganize all my code to take up less space, (you know, so it is not an essay written in comments.), and so that I can run some simulations to get a better idea of how it works and behaves over time and in a hypothetical gameplay scenario.

Let me know if you want me to send you a copy with all the comment code removed?

-----

clear;

clc;

% Written by DukeofBrittany, 7-25-2024 to 7-30-2024

% Theoretical plan for Transformation Dungeon mechanics

% First things first, understand that it has been a couple months since I last programed at all, and Octave/matlab format is ...unique, to put it one way.

% For example, the way it uses ';' is very unusual, as I am lead to beleive.

% so, half of this is me just doing it under te excuse of 'practice and review'.

% remember, all of this is intended to be hypothetical, and might not be representative of how it would actually work in gameplay.

% General order of operations:

% 1. Run TF speed timer.

% 2. Calculate priorities

% 3. set up base transformationspeed value

% 4.  compute new base transformation speed value

% 5. store that and also figure out wether or not there are any additional factors that need to be applied.

% 6. determine transformation rank useing priorities and found number.

% 7. apply effects of transformation rank.

% First, how and when should we update our TF speed value?

% I am thinking that it should attempt to update either when when their is ample reason to, such as death or a cursed item being updated, or after enough time has passed with no other stimuli.

% How I am going to model this is to perpose that we use an inturuptable 'for' loop.

% It will either update everything after 50 turns, or imidiately after one of several conditions are met.

% for sake of simplicity, and becuase I only know how to write code that can read one line at once and only do one thing at a time, I will also tie the natureal decay of the TF priority to this for now as well.

% So, I need to get those set up. Octave/matlab is very weird about when exactly it lets you redefine variables, so I am going to have to get a bit creative with things.

% (Hopefully, you are not haveing to jump through hoops like these, i would be suprised if you were.)

% I will just use three enemies for sake of argument and simplicity.

Bunny_priority=[0:0.1:100]; % How much influence one enemy is exerting, from 0 to 100, in increments of 0.1. This is NOT to be confused with a measure of your net transformation level.

Mouse_priority=[0:0.1:100];

Cat_priority=[0:0.1:100];

% and becuase Octave is weird like that, i'm going to predefine the priorities further to have an example to work with.

% basically, it's so I can refrence what I have them set as so I don't get confused later, and so you know where the inital consitions of the model are comeing from.

Cat_priority(331)

Mouse_priority(546)

Bunny_priority(159) %In different words, this code here does nothing except call the value stored at that location of the vector. It's redundant outside of me keeping track of numbers.

for F=1:50  %where F refers to the amount of turns passed since our inital condition.

  % Every turn, I will decay the amount of pririty of all enemies by a tiny bit, then check to see if anything inturupted the wait timer.

  % I will try to make this the last time I mention this, but Octave only saved the vector I establised inialy in lines 29-13. Technically, we are doing nothing here, and having to handle numbers manually. I am sure Unity dosent have these issues, and you are able to redefine variables as you plese.

  % [Enemy's_prioroty((F)]=(Enemy's_priority(Inital_test_value-F));

  [Cat_priority(F)]=(Cat_priority(331-F));

  [Mouse_priority(F)]=(Mouse_priority(546-F));

  [Bunny_priority(F)]=(Bunny_priority(159-F));

  %Cat_priority(F) %(I like to comment out my temporary, bad, and refrence code, instead of deleting it.)

  %Mouse_priority(F)

  %Bunny_priority(F) % I did encounter a weird bug at this step where, unsupriseigly, if you went below the vector range, Octave will call an error.

  %Weirdly, though, if the values got too low, but didin't leave the vector, it would start counting back up. Dunno what's up with that, let's just choose to ignore it.

  % It's stange, as Octave is predominantly for being a calculator, and this is how I was tuaght to use it. Anyway.

  % If (Death>=1 || Cursed_item_update >= 1 || TF_from_damage >= 1 || other_relavant_flag >= 1)

    % In the event that another thing happens that would nessesitate the TF speed value be updated, we would first apply the nessasary ajustment to the prioroty:

    % Example:

      % If we died to a Cat,

      % [Cat_priority(H)]=(Cat_priority(F+300)) && "All_Other_Priorities(H)"="All_Other_Priorities(F-50)"

      % Death I feel will raise the priority of the enemy you died too by a lot, and erode the priorites of the others a small amount.

    % Example:

      % If the Bunny ears entered phase three, I.E. it fully activated,

      % [Bunny_priority(H)]=(Bunny_priority(F+700)) && "All_Other_Priorities(H)"="All_Other_Priorities(F-200)"

    % Example:

       % You took damage from a mouse and rolled to get transformed,

       % [Mouse_priority(H)]=(Mouse_priority(F+30)) % No compensation from the others. This I expect to be going off a lot.

    % And then, we will forceably leave the for loop and move onto the next calculation.

    if (F==50)

      IdleB=0.25; % somethiing for later, don't worry about it.

    endif

end

% We will assume, for this example, that the for loop was completed without being inturrupted.

display("----")

Cat_priority(F)

Mouse_priority(F) % just to ensure that my numbers and calculation is working correctly.

Bunny_priority(F)

display("----")

% At this time, the priorities of each enemy is as follows, Cat=28, Mouse=49.5, and Bunny=10.8.

% If fully human and "cured", I.E. not experienceing an ongoing transformation, Any one enemy needs a priority of 25 or higher in order to start a transformation,

% The reason the threshold is at 25/100 is becuase the game will choose the transformation with the highest current priority, I want the various transformations to fight over the player, and there will be a minor TF speed penalty for having high priorities.

% and,, this is the only place the transformations have a hierarchy of any kind. Basically, if there is a tie, then the game will favor one over the other.

% Also, this algorythim here will also check the H value instead of the F value, in the event one of the inturrupt conditiond is set off.

%I kept things simple here, but hopefully, you can see that with every new enemy added to the game, you should be able to just build it out backwards, or maybe use a switch?

if (Cat_priority(F) >= 25 || Mouse_priority(F) >= 25 || Bunny_priority(F) >= 25)

  display("A Transformation is occuring!")

  if (Cat_priority(F)>=Mouse_priority(F) && Cat_priority(F)>=Bunny_priority(F) && Cat_priority(F)>=25)

    display("Cat TF active!") % I.E. set Cat as your current transformation.

  elseif (Mouse_priority(F)>=Bunny_priority(F) && Mouse_priority(F)>=25)

    display("Mouse TF active!")

  elseif Bunny_priority(F)>=25

    display("Bunny TF active!")

  else

    display("This condition should not be able to appear, but is included as a failsafe.")

   end

   % move on to TF speed calculation.

else

   display("No TF active...")

   % move onto TF speed calculation.

end

% assumeing that I set everything up correctly, this should recognise that both Cat and Mouse succeeded the check, but that Bunny failed.

% Then, it compares all the priority values against each other, and concluded that Mouse was the highest, which it is. In the event that the highest two prioritys were equal, cat would have been selected over mouse.

% But, at least on this scale test, you should be able to see how this priority system works, and hopefully you can see how it would be pretty easy to add new enemies to the system without much difficulties.

% Additionally, I hope you can see all the little ways you could ajust the present priorities for all the enemies useing these numbers.

% Like, maybe the biome could, depending on the enemy type, could apply passive multipliers to all priority gain and loss, (excludeing time decay), for how much it likes or dislikes the biome.

% For example, bunnies in the plains (or whatever it's refferd to in game) biome would increase all priority gain by 1.5 times, and reduce all priority loss by 0.8 times.

% However, that's beyond the scope of this project. Moveing onto the actual TF speed calculator finally...

(1 edit)

first off, this item is actually not cursed.

ok, long story short, I thought this up while at work and makeing sure all the math actually would work out the way I expected it too in my head, when I had an idea.

So, an item of this function and purpose I assumed would be put in your game sooner or later, but I felt that even a weak effect would make it too strong and desirable for the player. So I basically decided to make an item that WOULD do as advertised, but do so in a way that was unessasarily complicated, kinda dumb, and had a blatant design flaw.

That being said, I give you the:

"Strange Suppressor"

This item can be found in chests, and has  increased odds to drop from Kobolds.

Description: "This accessory seems to have been designed by the local Kobolds to make living in this dungeon easier. However, it seems too good to be true."

Listed effects: This item may never spawn cursed. No coverage, no resistance. 0.5 weight. Slows all transformation effects by 5%, including reversion!

How it actually works: Per-turn, damage, cursed-item, death, and all other transformation level changes have their final effects multiplied by 0.95. This includes the spell reduce curse! All Cursed items also have a one-time 5% chance to loose their cursed status when attempting to activate.

That, in itself I think will work in the game in its current state, and I think you can see where the obvious drawback lies. However, it gets a lot more ridiculous and questionable when you consider that I am makeing this with the system I'm building in mind.

So, if you do go ahead with implementing my suggestion when I'm done designing it, the Strange Suppressor, in addition to all of the above, will ALSO multiply all TF priority gain, TF priority loss, per-turn TF priority loss, and your final change in tf speed value by 0.95. And again, all of this is still applied to everything, including reduce curse.

So, yeah, I think once I'm done, I think you will be able to see how this item has to potential to actually be rather annoying and a bit of a hindrance at times.

(1 edit)

Ok, since you gave me the go ahead, I started writing up my big pseudocode example on how the transformation system COULD work following it's overdo overhaul. The raw text file I have linked here, (I promise to have not knowingly attached malware),  is by no means complete. After two and a half hours of programming and just relearning how this all actually works myself, this was the result. 

So far, there is no actual TF speed calculation going on here, everything here so far is just me getting a bunch of stuff set up to get my example working in the first place, a mock-up for what causes the TF speed value to update and when, and finally, a proposal for how the TF priority system could be overhauled and how it would apply to to the overhauled TF system. It does not contain any TF speed algorithms, but considering this took about two and a half hours to cook up, hopefully I can get the whole thing written... hopefully about a week at the very longest, but I don't expect it to take that long, assuming nothing gets in my way and there's no significant bugs on my end.

I will say this, this has been, if nothing else, a refresshing change of pace to actually practice my programming skills, even if my training is for colledge level mathmatical operations.

-------

clear;

clc;

% Written by DukeofBrittany, 7-29-2024

% Theoretical plan for Transformation Dungeon mechanics

% First things first, understand that it has been a couple months since I last programed at all, and Octave/matlab format is ...unique, to put it one way.

% For example, the way it uses ';' is very unusual, as I am lead to beleive.

% so, half of this is me just doing it under te excuse of 'practice and review'.

% remember, all of this is intended to be hypothetical, and might not be representative of how it would actually work in gameplay.

% General order of operations:

% 1. Run TF speed timer.

% 2. Calculate priorities

% 3. set up base transformationspeed value

% 4.  compute new base transformation speed value

% 5. store that and also figure out wether or not there are any additional factors that need to be applied.

% 6. determine transformation rank useing priorities and found number.

% 7. apply effects of transformation rank.

% First, how and when should we update our TF speed value?

% I am thinking that it should attempt to update either when when their is ample reason to, such as death or a cursed item being updated, or after enough time has passed with no other stimuli.

% How I am going to model this is to perpose that we use an inturuptable 'for' loop.

% It will either update everything after 50 turns, or imidiately after one of several conditions are met.

% for sake of simplicity, and becuase I only know how to write code that can read one line at once and only do one thing at a time, I will also tie the natureal decay of the TF priority to this for now as well.

% So, I need to get those set up. Octave/matlab is very weird about when exactly it lets you redefine variables, so I am going to have to get a bit creative with things.

% (Hopefully, you are not haveing to jump through hoops like these, i would be suprised if you were.)

% I will just use three enemies for sake of argument and simplicity.

Bunny_priority=[0:0.1:100]; % How much influence one enemy is exerting, from 0 to 100, in increments of 0.1. This is NOT to be confused with a measure of your net transformation level.

Mouse_priority=[0:0.1:100];

Cat_priority=[0:0.1:100];

% and becuase Octave is weird like that, i'm going to predefine the priorities further to have an example to work with.

% basically, it's so I can refrence what I have them set as so I don't get confused later, and so you know where the inital consitions of the model are comeing from.

Cat_priority(331)

Mouse_priority(546)

Bunny_priority(159) %In different words, this code here does nothing except call the value stored at that location of the vector. It's redundant outside of me keeping track of numbers.

for F=1:50  %where F refers to the amount of turns passed since our inital condition.

  % Every turn, I will decay the amount of pririty of all enemies by a tiny bit, then check to see if anything inturupted the wait timer.

  % I will try to make this the last time I mention this, but Octave only saved the vector I establised inialy in lines 29-13. Technically, we are doing nothing here, and having to handle numbers manually. I am sure Unity dosent have these issues, and you are able to redefine variables as you plese.

  % [Enemy's_prioroty((F)]=(Enemy's_priority(Inital_test_value-F));

  [Cat_priority(F)]=(Cat_priority(331-F));

  [Mouse_priority(F)]=(Mouse_priority(546-F));

  [Bunny_priority(F)]=(Bunny_priority(159-F));

  %Cat_priority(F) %(I like to comment out my temporary, bad, and refrence code, instead of deleting it.)

  %Mouse_priority(F)

  %Bunny_priority(F) % I did encounter a weird bug at this step where, unsupriseigly, if you went below the vector range, Octave will call an error.

  %Weirdly, though, if the values got too low, but didin't leave the vector, it would start counting back up. Dunno what's up with that, let's just choose to ignore it.

  % It's stange, as Octave is predominantly for being a calculator, and this is how I was tuaght to use it. Anyway.

  % If (Death>=1 || Cursed_item_update >= 1 || TF_from_damage >= 1 || other_relavant_flag >= 1)

    % In the event that another thing happens that would nessesitate the TF speed value be updated, we would first apply the nessasary ajustment to the prioroty:

    % Example:

      % If we died to a Cat,

      % [Cat_priority(H)]=(Cat_priority(F+300)) && "All_Other_Priorities(H)"="All_Other_Priorities(F-50)"

      % Death I feel will raise the priority of the enemy you died too by a lot, and erode the priorites of the others a small amount.

    % Example:

      % If the Bunny ears entered phase three, I.E. it fully activated,

      % [Bunny_priority(H)]=(Bunny_priority(F+700)) && "All_Other_Priorities(H)"="All_Other_Priorities(F-200)"

    % Example:

       % You took damage from a mouse and rolled to get transformed,

       % [Mouse_priority(H)]=(Mouse_priority(F+30)) % No compensation from the others. This I expect to be going off a lot.

    % And then, we will forceably leave the for loop and move onto the next calculation.

end

% We will assume, for this example, that the for loop was completed without being inturrupted.

display("----")

Cat_priority(F)

Mouse_priority(F) % just to ensure that my numbers and calculation is working correctly.

Bunny_priority(F)

display("----")

% At this time, the priorities of each enemy is as follows, Cat=28, Mouse=49.5, and Bunny=10.8.

% If fully human and "cured", I.E. not experienceing an ongoing transformation, Any one enemy needs a priority of 25 or higher in order to start a transformation,

% The reason the threshold is at 25/100 is becuase the game will choose the transformation with the highest current priority, I want the various transformations to fight over the player, and there will be a minor TF speed penalty for having high priorities.

% and,, this is the only place the transformations have a hierarchy of any kind. Basically, if there is a tie, then the game will favor one over the other.

% Also, this algorythim here will also check the H value instead of the F value, in the event one of the inturrupt conditiond is set off.

%I kept things simple here, but hopefully, you can see that with every new enemy added to the game, you should be able to just build it out backwards, or maybe use a switch?

if (Cat_priority(F) >= 25 || Mouse_priority(F) >= 25 || Bunny_priority(F) >= 25)

  display("A Transformation is occuring!")

  if (Cat_priority(F)>=Mouse_priority(F) && Cat_priority(F)>=Bunny_priority(F) && Cat_priority(F)>=25)

    display("Cat TF active!") % I.E. set Cat as your current transformation.

  elseif (Mouse_priority(F)>=Bunny_priority(F) && Mouse_priority(F)>=25)

    display("Mouse TF active!")

  elseif Bunny_priority(F)>=25

    display("Bunny TF active!")

  else

    display("This condition should not be able to appear, but is included as a failsafe.")

   end

   % move on to TF speed calculation.

else

   display("No TF active...")

   % move onto TF speed calculation.

end

% assumeing that I set everything up correctly, this should recognise that both Cat and Mouse succeeded the check, but that Bunny failed.

% Then, it compares all the priority values against each other, and concluded that Mouse was the highest, which it is. In the event that the highest two prioritys were equal, cat would have been selected over mouse.

% But, at least on this scale test, you should be able to see how this priority system works, and hopefully you can see how it would be pretty easy to add new enemies to the system without much difficulties.

% Additionally, I hope you can see all the little ways you could ajust the present priorities for all the enemies useing these numbers.

% Like, maybe the biome could, depending on the enemy type, could apply passive multipliers to all priority gain and loss, (excludeing time decay), for how much it likes or dislikes the biome.

% For example, bunnies in the plains (or whatever it's refferd to in game) biome would increase all priority gain by 1.5 times, and reduce all priority loss by 0.8 times.

% However, that's beyond the scope of this project. Moveing onto the actual TF speed calculator finally... when I actually get it completed...

alright! Alright! Glad I could help.

I just hope that we all understand that this fix, heck, both fixes, is going to raise the game's difficulty SUBSTANTIALLY. Because I just proved that we have been playing on easy mode since the first build and didn't even know it!

I'm quite certain that this bug has been stopping us from getting gameovers countless times, for all players. 

Shame the fact this game was supposed to be a lot harder than it is was not cuaght until now.

But, it needed to be addressed sometime, and so hopefully seeing how hard this game actually is can enable you to decide how to reevaluate things going forward.

Oh yeah, another thing my extensive testing tuaght me, but I had not gone out of my way to stress test is that the inventory capacity system is broken in some way. For one, I am pretty sure that the nutrient cube spell either does not check to see if you have the inventory space for it, or, the nutrient cube does not actually have a weight despite making the counter go up. The Nutrient cube is the only one I am confidant to have a broken mass value or broken inventory check, but I suspect that it is not the only item to have one or both of these issues.

So, first, I was actually intending to move on from your game by now. However... you released that hotfix, and I got curious if those things actually had gotten fixed, (and I wanted to promote your handiwork in itchio's algorithm while the release was still new.) Curiosity lead to a revelation, revelations lead to the application of the scientific method, the scientific method means experimentation, experimentation lead to test results, multiple different kinds of test results meant I got data, data was analyzed, the analysis was compared to my initial revelation, and I got new revelations, and had another thing to experiment with. 

What does that mean in non-poetic language?

ok, through a bunch of deliberate testing, like, several hours worth all because I had been REALLY wanting to see if it actually did get fixed in the newest hotfix, IT WAS NOT, and then I made it my personal mission to try to identify how the glitch actually works. That being said, I have managed to prove that the, "you can end up in a situation where you straight up can no longer get transformed for any reason" bug is reproduceable, can be deliberately set up by the player, and can be exploited by the player to have a run last indefinitely!

(So buckle up, because it's actually rather complicated, but hopefully, you will be able to reproduce it yourself with this walkthrough! Hopefully, being able to replicate it yourself will allow you to FEEL the root of the problem.)

Context: Remember how I commented that I had a habit of using "reduce curse" on myself several times in a row as soon as I would get a level up? Well, aas it turns out, that is part of the problem. I also had developed a habit of being sparing with my MP whenever I started transforming. like, I would see the first or second TF notification, and use reduce curse twice, then wait a bit to see if the transformation's 'story' would continue. (This was just me trying to avoid wasting a point on inspect self.) This much, I imagine that other players got into similar habits and strategies, but as it turns out, this is actually setting up a weak version of the glitch! However, and I know other people HAVE pointed this out to you, we all assumed it was an intentional design choice at the time. I realize now that it is not.

Step 0. Its easier to pull off and see with the two MP upgrades purchased, but it can also be done without. I suggest that you have them bought for sake of argument. Then start a new game.

Step 1. DON'T DO ANYTHING WHEN THE FIRST FLOOR LOADS! instead, the first thing you should do is open your spell menu and spend all of your MP on Reduce Curse. Seems like a waste? Don't worry about it, just do it!

Step 2. Now that you have lost all of your mana and have not let a single turn in game pass, play the game like normal.

Step 3. As you explore the first and maybe second floor, you might start to notice that despite all the bunnies and mice you are fighting, a TF hasn't started. You might notice that you can even die to a cat at least a couple times, and you wont get transformed from death at all. You remain human for way longer than you otherwise should be able too. But... eventually, you will start changing into a cat.

Step 4. once you start transforming finally, feel free to cast Reduce Curse once or twice, (assuming you have leveled up at least once by now). Whatever you do, make sure that you do NOT actually cure yourself. Allow the cat to remain a part of you.

Step 5. Continue playing the game for a bit, letting the story of the transformation play out. 

Step 6. Once the story has finished, but before you get a game over, first double check (if desired) that every last body part says "Definitely transformed into a cat". 

Step 7. Now, Let's get to exploiting, shall we? Ensure that you have a good supply of mana. As we are still on the lower floors, waiting for your next level is easy enough to do. once you have a good amount, regardless of where you got the MP, Ask yourself, "do I want to play the next few floors as a defacto human, or play with all the attributes of the cat?" Let's go with human, as it is a bit easier to pull off. 

Step 8. open the spell menu, and cast Reduce Curse multiple times. as we are a cat, you should see your vision radius decline with every cast. when doing this, Do NOT cure yourself. Make sure that you are able to have casted the spell many times since you have first started transforming, but also make sure that your inspect self still claims that all your body parts are still a cat's.

Step 9. Now that you are "basically" human with trace amounts of cat across your body, congratulations. You just broke the game. You will notice that as you play, your transformation seems to be progressing VERY slowly, if at all, and nothing, not even DEATH, will change you further. If you do think you are still changing, such as your vision radius slowly growing or getting the cat's attribute modifiers, repeat steps 7 and 8. Eventually, and by that I mean pretty quickly, you will be an anthro cat functionally immune to transformation all together. Neither time, taking damage, dyeing, or being hungry can stop you. If you are a bit more careful with this set up, you can also use this to end up as a fully feral cat that is simply not allowed to get their game over screen. Though, obviously, this is a bit more risky.

Step 10. Have fun!

Step 11. You progress down a few more floors and die to a higher priority enemy. You might notice that one! single! death! by snake caused you to not only loose your "cat armor", but instantly transformed you by like 80%, and gave you the entire transformations story all at once. Don't worry. This is just what happens when the glitch is broken. No matter, you can set the glitch up again immediately with the snake right then and there!

Step infinity. I think you can see the implications of this glitch by now. Most obviously, as bats have the highest priority, you can set this glitch up as a fully transformed bat, and pretty much be able to do whatever you please from that point onwards. You have the power of flight and being able to use weapons and wont get any transformation progress from death, starveing, combat, biomeor time. Now you can easily get a super high floor count and the game ultimately can't stop you! Want to play the game as a pikachu? set this glitch as a fully transformed mouse and don't leave the first couple floors. Want to envision what playing the game with the Wolf's Bane will look like? Grab an Iron Sword, a Wolf, and use the glitch to make yourself functionally human while the game says your body is completely wolf-like.

With this one glitch, EVERY LAST MECHANIC IN YOUR GAME CAN BE EXPLOITED BY PROXY!!!


So, now that we know how to set the glitch up and understand how to exploit it to our own personal gain, now we need to figure out what is actually happening here.

Obviously, the guilty party here is the spell, Reduce Curse. But, how is that possible?

What I suspect is that you intended your game to have you swapping species constantly. I'm sure you assumed that players would usually be trying to make themselves fully human whenever they can, or using reduce curse to stay mostly transformed until they had to stop, or lost. The problem is that this glitch behaves in a manner that enables the exact opposite: Embracing a transformation to keep you functionally immune from transformation entirely.

Weather you had intended it too or not, how Reduce Curse seems to work in practice is that it actually reduces the speed at which your current transformation occurs, in addition to partially curing you of your present transformation. However, with that comes multiple concurrent oversights:

Oversight 1. reduce curse stacks! Whatever transform speed multiplier the spell applies to you, it gets reapplied for every single application of the spell, meaning that after only a few casts, your current transformation has the effects of several reduce curses on it, PERMENANTLY.

Oversight 2.  The speed multiplier basically never gets removed. As far as I can interpolate based on my testing, the only things that clear the effects of reduce curse are getting 'infected' by a species of higher priority, or fully curing yourself. as either of those are what remove all stacks of reduce curse, those are the only ways the glitch can be broken.

Oversight 3. Exploits the TF priority hierarchy. Part of what makes this glitch work as well as it does, is that you are rendered invulnerable from being transformed from all enemies with lower or equal TF priority than you while the glitch is set up. I think this also proves that the priority system also needs to be revaluated in it's own right, as under the current rules, there's little penalty for dyeing to a mouse or bunny while a cat, and so on. I would recommend either replacing it with a more robust system, or consider looking to oversight 4 for inspiration.

Oversight 4. An explosive side effect. Whenever the glitch is successfully broken, for whatever reason but in a way that admittedly does feel very fitting, the higher priority enemy that killed you will somehow do A COLLOSSAL AMOUNT OF TRANSFORMATION to you! While researching the glitch today, there was one instance where I had been setting the glitch up with a snake, I got blindsided by the very first bat to spawn that run, and I got the bat ending right then and there! Let me remind you, I had not even seen a bat up to that point, and had the glitch fully set up as a fully transformed snake. One attack, I died, GAME OVER. What you maybe could do with this secondary effect of the glitch is consider having it so that dyeing to an enemy of lower priority will have MUCH higher transformation effect like this? I would think that would be cool.


So I hope, that with all that being said, you agree with me when I say the best solution to fix this glitch is to go through with your total overhaul of your transformation system altogether. I don't think preventing reduce curse from stacking will do anything, and I think, in its current state, could actually have the opposite issue, where it becomes rather useless.

After all of my testing, I have been suddenly itching to... maybe use my little experience that I do have to write you some pseudo-code that could give you a mock up of what the system I suggested the other day could look like? (I learned a bit of C++ for Aduino and Octave/mathlab for college, and it's very basic. Plus, my code base learned was FAR more numerical in nature, and surely looks very different from C# on unity.) I can't do it today, I don't have any more time. If you don't want me to, that's fair. Just ask, and I will see what I can come up with

Hopefully, this is enough testing for you to figure out how to un-break the game. Have a good day, bye!

ok, something I can't believe that I kept forgetting to mention, dispite being one of the ONLY things in the game that I think is actively bad.

When your inventory is full, or almost full, the text saying that you can't pick up that item MUST say what it is that you can't pick up at all times. Additionally, the text for haveing too many of the same item at once needs to have priority over the general message.

Something that happens way too often is that I go to a chest, attempt to pick up an item, get told my inventory is full but not be told what the item is, drop or waste an item, and try again only to be told that I'm carrying too many swords. That needs to be addressed, so I know if I even want the thing on the ground that I don't have space for.

neat, I will try to translate that later, you know, when I am distinctly not at work. (I'm on a break right now, is all.)

Another thing I meant to say and just sort of didn't was that I wanted all the obviously cursed items to make most players inherently feel that something was off with them. And, I wanted it to come off like that in one of two ways, either A. "I have a weird feeling that there's more to this item than what is stated", or B. "Do I actually want to use this over  more conventional armor? Is it's strategic usage and unorthodox toolkit better than more defense?"

That, and when the game reveals they were cursed, the player is left feeling like that actually makes a lot of sense in hind sight and could have seen it coming.

You may note, I want to have cursed items that appear at random to be the exact opposite. To further the idea that the player is never truely safe from being transformed. That, and I feel a game like this has the right to be a little mean and evil at times.

oh, you do actually have two more cursed items in the game, and one is a consumable? Huh. Yeah, ok, I don't think anyone would have noticed that. In part, I think the only one you really 'advertised' on your change logs was the bunny ears, in addition to the fact those just exude the vibe of being a trap.

If I had to guess, the consumable might be that tea thing that dispite picking up like three times, and actually useing, I'm honestly not sure what it's intended 'benefit' is actually supposed to be. As for the other peice of equipment, yeah, I got nothing.

As such, I think this is probably even more reason to give a notification of some kind in the log once they go off. That's probably how people would figure out that they are cursed at all.

(Apparently I eclipsed itchio's character limit. that's me for ya!)

Ok, ok, I know, that was a LOT of stuff for one item. I imagine that it would be very difficult to program into the game and be a lot of work on your end, but I think figuring out how to get all that infrastructure set up and working could do a lot to help the game in the long run. I can totally respect if that's too much of a hard sell for you right now, though.

so of course, while the last cursed item I have for you is on paper, pretty simple again, at the same time I think it would pretty obvious how this could actually be the hardest to implement, but I thought that I would slip it your way regardless as I think the concept is very fitting. so...

-----

Kangaroo's TF equipment?!?

"Dusty fanny pack"

Discription: "Although worn down over the years and hideous to look at, you got to admit, it WOULD be rather useful at a time like this..."

To be equipped to the torso.

Effect: increases your maximum inventory capacity by 3.0 maximum weight. 5% coverage, very low physical resistances. 0.5 weight.

Full activation: "As you move to slip another item inside,  you stare at the fanny pack in shock as the zippers and buttons on the fabric start popping off one by one!"

Notes: Yeah, I am low key suggesting you add kangaroos to the game next. I'd imagine they be pretty basic enemies, doing decent bludgeing damage. I also think the 'story' of it's transformation could be focused on the tail and feet, but I digress. I think you can totally see the appeal of adding an item like this. It would be something that you would have a lot of difficulty arguing against using in just about any situation, while in itself not being terribly strong. Plus, it's one of those things that just sort of writes itself, yet I have somehow never seen. Female Kangaroos are known for their pouches? How about a fanny pack as the trigger? 

--------

And finally, that is all for cursed items. I only have one more tiny suggestion for you!

When you have the map open, that screen should also list your current floor number. that's it.

Anyway, that is absolutely everything I have to say. I will try to not talk about any thing else beyond bug fixes and very minor suggestions at this point, for both of our sakes! Thank you for your time, I will try to get out of your hair now, as I also have things that I really should be doing instead of this. Have a good day, good luck with your development! BYE!

Alright! This is the last major bit of suggestions that I have for now. I know you have by now read my first, well, essay to be quite blunt about things, so this is all assuming that you know these items and their functionality are centralized around my takes on how those systems should be reworked going forwards. However, even if those ideas ultimately don't pan out, hopefully, these can still feasibly work within the current systems that are in place. So, cursed items. I imagine they are going to be a major facet of your game in the long run. However, so far as I can tell, you only have one so far, being the bunny ears. Somewhat as a result, this feels a bit... restrictive and not as engaging as they should be.  Also, it just feels wrong to be spending multiple runs getting both a helmet and the bunny ears, and I find myself swapping them constantly, equipping the ears for movement and positioning, and switching to the helmet for combat. Let's fix that! I have thought up a few cursed items for you, as well as how their mechanics can work. 

With the exceptions of any equipment you start the run with, I.E. the two rations you have initially as of the current build, and the nutrient cube spell; all items, including equipables and consumables alike, have a one or two percent chance to be cursed when generated. Assuming the idea for Kolbods sometimes dropping items and equipment when defeated is also added, those items have a 10% chance of being cursed! cursed consumables, such as a ration, seem normal on the surface and do nothing while in your inventory, but an invisible timer starts once used. Roughly twenty turns after being used, the log will give, in the TF message color, "You think that [ITEM NAME] might have gone bad, as you are feeling sick to your stomach..." at this time, your torso body part will receive a instant 50% transformation effect towards a new animal, that animal transformation will receive special priority for a time, and you will be hit with a greatly increased transformation speed value for a while. This increase would decay over time, (I think an exponential decay function would be good for this effect and ones like it, though, yeah, I understand you might not be familiar with college level mathematics, or really want to go there for this game.) and it's effects would eventually disappear altogether. I think cursed consumables, in isolation and when left untreated, shouldn't cuase a game over, but I think should force you to be much more cautious about your general well being as the effect is similar to having died, just stronger and MUCH longer lasting.

Cursed consumables are ultimately not that big of a concern at the end of the day. Cursed equipment, however? That's what you need to be wary of. Again, all equipable items have a 2% chance of being cursed. Like the consumables, an invisible timer starts when they are first equipped, though this timer is much longer lasting, (perhaps anywhere from 300-1000 turns chosen at random!). During their activation timer, they actually do nothing unusual, and can be freely unequipped. If they are unequipped, their timer should be paused until they are equipped again. [I do not recommend resetting their timer, as that aspect will get exploited by pros and recommended to new players, ultimately defeating the point of the mechanic entirely.] once that first timer is up, they set another shorter timer, about 100 turns or so, and enter a 'lit fuse phase', where they immediately transform the body part they are equipped to by 2%, give the player a a slightly increased TF priority for their animal of choice, and slightly raise your transformation speed.  For both of these timers, taking damage from the enemy type they intend to transform you into will speed up their countdowns, (The idea being the transformative stimuli reacts with the object's curse and makes it wake up faster.) They can still be unequipped at this time. Once that second timer is up, well, I think you know what happens next. They have now "gone off" and unleash their full payload of effects. First, they become permanently equipped to you. Secondly, their item description in the inventory as well as their status in the inspect self spell both change to say in blunt language that this is a cursed item.  Third, you will get a notification in the log saying that, "yep, that piece of equipment is very cursed!" in a way that makes sense for the kind of equipment that it is, and then finally, they instantly transform the body part they are equipped to by 50% and raise their animals TF priority significantly, and raise your overall transformation speed by a significant amount. from there, they function similarly to the consumables do, except, they will degrade to some minimal effect value, and remain permanently equipped to you. Like, even once their effects are no longer "threatening", they still will continue raise your TF speed slightly, and make it really difficult for another transformation to overtake the body part they are equipped to, though this can and will happen. the only way they can be unequipped is if, A, another transformation fully overtakes the body part the cursed item is equipped to, or after a new specialty spell, "Remove curse from item", is used. This spell will also remove all of their TF related effects and make them functionally normal items again. This spell may only be used on items KNOWN to be cursed, and only when their effects have 'died down'. The point when they have 'died down' and have become only a nuisance rather than a threat will be displayed on their item description, when it comes to pass.

In terms of broad mechanics, that's all well and good, but where's all the obviously weird magic junk like the bunny ears? well, I think I got you covered! I tried to design an item related to every currently existing animal in the game, as well as follow the thought process of the bunny ears in trying to make the equipment not obviously better than everything else, and instead will just be marketed for filling some weird but handy niche. And unless otherwise stated, assume they have the same TF functionality as for regular cursed items. I thought that I might as well introduce them in the order of how interesting I felt the concept was, starting with the least interesting and going to the most interesting at the end.

----

Cat's TF equipment:

"Silted contact lenses"

Description: "Despite their strange shape, the case they were found in says they fit your prescription...?"

To be equipped to the eyes, (The head)

Effect: No coverage, no resistances. They instead passively increase your vision range by about two tiles while equipped. 0.5 weight.

Full activation notification: "These contacts are amazing! You wonder how you ever got by with your crummy vision without them."

Notes: I admit... I kinda had no idea what to do for cats, to be honest. Partially because anything you could do with them can also be done for other animals and feel more unique and appropriate on them. Even then, I would honestly argue that these would be better suited for some sort of bird...

----

Mouse's TF equipment:

"Rubber work gloves"

Description: "These bright yellow rubber gloves provide a good amount of grip, and extend up your forearms."

To be equipped to both hands.

Effect: High electric damage resistance, low fire and low slashing resistance as well. 11% coverage. 1 weight.

Full activation Notification: "Were these gloves always so tight? And hot? …did they always extend all the way up to your shoulder like that?"

Notes: I don't think there is too much to say here. I think they are appropriate for the mouse on both a game play sense, and additionally push the obvious reference slightly further.

----

Bat's TF equipment:

"Ragged cloak"

Description: "Strangely, it seems to have been fashioned from some old and stained flame retardant curtains."

To be equipped to the arms and torso.

Effect: 30% coverage, High fire resistance, low damage resistance for all types except piercing. lowers agility by 5%. 2.5 weight.

Full activation: "You are regretting putting this cloak on. It's heavy, stiff, and getting really uncomfortable."

Notes: Another one that I think that just makes a lot of sense overall. Most equipment in the game lowers fire resistance? Here's an option. It gets equipped to multiple slots? I think you can justify it being stronger than most other defensive options in that case. The big feature of bats is their impressive wings? Well, here you go!

----

Snake's TF equipment:

"Odd EpiPen"

Description: "Didn't expect something like this to be here. Seems like it will be useful for snake venom, however."

To be equipped to your back pocket, (one of the legs).

Effect: No coverage, no resistances. Any time that you might be poisoned by a snake, or another enemy with that ability, you will not. 0.5 weight.

Hidden effect: This item uses the consumable item curse logic instead of the normal equipment curse logic, and has a 20% chance to activate it's consumable timer every time it stops you from being posioned. (The logic being that it it is being used as needed, not being jabbed into you 24/7.) Once it goes off once, it cannot go off again. This item will not become permanently equipped to you. This item also remains functional even when your legs are no longer functional.

Full activation: "You suddenly feel lightheaded, and feel yourself reaching for the Odd EpiPen again. You suddenly think that you might have overdosed, or used it wrong."

Notes: Here's where the items start getting really unique and creative in my opinion! Like with the cats, it took me a while to land on this idea. Unlike the cats however, I am really happy with what I came up with!

----

Kobold's TF equipment:

"Luxurious necklace"

[This item can rarely be dropped by Kobolds, but may never be found in chests.]

Description: "According to tradition, a whole pack of Kobolds will dedicate their few rescorses to the creation of a single piece of treasure which they will present to a young Dragon without any Kobold servants as a form of resume. Dragons, rarely, reward loyal Kobolds with the same treasure they were first presented with, so Kobolds allowed to wear one are treated with the highest of honor."

To be worn around the neck, (the torso).

Effect: very low coverage, high ice resistance, moderate fire and electric resistance. 0.5 weight.

Hidden Effect: Kobolds become friendly and will fight for you! They won't ever attack you, unless attacked themselves or if they witness you attacking another Kobold. Kobolds now have low chances to spawn on all floors of the dungeon when they would otherwise not be able to appear, as long as it's equipped.

Full Activation: "This necklace is so, so pretty! You keep staring into the massive blue gem in the center, hardly noticing your reflection shifting or your fingernails growing."

Notes: So yeah, on one hand, it is a bit more simplistic, but on the other hand, I thought only being able to be dropped by Kobolds, and having a hidden attribute that you would need to just sort of... 'sus out', made it a lot more interesting. And yes, if you were wondering, the original idea was that you would first fully change into a kobold, then start changing again into a dragon. I decided to design it a bit more conservatively though.

----

Before I talk about the next one, I think a bit of context is warranted. Very early on, my thought was that, "a potential flaw with every item possibly being cursed is that there is a chance you pick up a cursed weapon, and curses you into something that can't use weapons. That could be problematic." That idea kept coming back to me, and so I said, "well, maybe... in those particular cases, you still can use the weapon instead of the animals normal attack?" But that still was unsatisfying, given that that, in itself, was a cop out solution and could even be worse sometimes, as the Mouse being able to do electric damage still has a niche, and the Wolf for example still has a respectable damage output most of the time, so in some cases, being forced to use that weapon could actually be a detriment.

Then it hit me: What if being forced to use that weapon as an animal that normally couldn't use weapons was the point? So, with that all being said, let me introduce to you...

----

Wolf's TF equipment:

"The Wolf's Bane"

Description: "This heavy, well forged steel longsword must be someone's master work. It... calls to me."

Equipped to your weapons slot, two handed.

Effect: deals 12-15 slashing damage per hit. 2.5 wheight.

Hidden effects A: The Wolf's Bane, upon activation, is far more brutal, as it will set your transformation speed value to the max, and won't ever let up for any reason. It is also completely immune to the "remove cursed equipment" spell.

Full activation notification: "You feel like you have been struck by lightning! The Wolf's Bane! It's filling you with an unbelievable power! It... wants you to wield it!"

Once you inevitably become a complete Wolf, the run is actually not over yet. In fact, you can say it has just started. 

At this time, you are given a pop up textbox saying something along the lines of, "Despite the intensity of the transformation and how close you you are to becoming a complete Wolf, you have somehow managed to stay on two legs, and keep your hands wrapped around the Wolf's Bane's grip. In one last desperate attempt to remain a [current base form], you fight the weapon's power and manage to let go of the blade. When it falls to the dungeon's floor, you instantly regret your actions, as your hands spasm and turn fully into the paws of a Wolf, while your hips crunch noisily into a quadruped position. You crumple to the ground, hearing the sword call out to you even more desperately! You lay one of your front paws on the weapon's hilt, and watch as they both become hands again. Very Wolf-like hands, but hands. Your hips revert as well."

- textbox break-

"You stand back up with the sword, tail wagging as you come to understand the sword's agenda. It was designed by it's creator as a trap to punish would be thieves, but it truly just wants to be wielded by a fine swordsman. You have already proven your skill and it offers you a challenge: be the sword's wielder, and show it just how strong you truly are, on the condition that you will embrace the Wolf's curse if you fall. It also promises that if you refuse, it will let you go peacefully, in accordance with it's original design. Do you accept the sword's challenge?"

You are then actually given that choice. If you say no, it will in fact be a weapon of it's word,  reverting your transformation speed back to what it otherwise should be, reverting your overall transformation by 75%, and remove itself from your inventory completely. Then the game will continue on like normal.

And if you say yes, your Wolf transformation is completed, and the nature of the game shifts. Now, an (technically anthro) Wolf is your new base form, and your transformation speed is fully reset back to it's default value. Now, anything that would cuase your transformation to recede back to human is now redirected back to wolf instead, and you are prevented from getting a game over from becoming a Wolf. You can still get a game over from fully transforming into any other creature, and furthermore, a new game over condition is introduced.

Instead of transforming a bunch and way more quickly from dyeing in battle, having your HP fall to zero for any reason will mean instant game over as you had lost the Sword's challenge. This presents you a unique game over message where the sword holds up it's own end of the arrangement, but does tell you the 'score' you achieved while wielding it, including how many kills you got, how many new floors you reached, and how much total damage you endured. (this 'score' information should also still be given if you get a transformation game over.) 

"Yes, it does do a lot of damage, but if its one death and that's it, how do you stay alive?" Well, at this time, the weapon's stats completely change.  now, the weapon's stats look something like this:

Effects: 0 weight! This weapon may not be unequipped for any reason ever, and if is somehow unequipped, that's a bug. This weapon deals 13-20 damage per hit, and ignores all resistances. (If the enemy would somehow take more damage than normal from slashing damage, this weapon will also ignore that.) provides low damage reduction to the player for all damage types at 100% coverage, raises max HP by 50, max MP by 8, and increases passive HP and MP regeneration independently from your normal regens. and lastly, you gain an EVER SO SLIGHT passive Wolf transformation, independent from all other transformation calculations. 

However, all this comes at a cost. Aside from now getting a game over on death, your hunger drains more quickly (which is a problem when Wolves don't like the nutrient cube!), and the transformation speed increases from having low hunger, low HP,  low MP, taking damage in battle, and biome affinities are all more punishing! (I like to imagine that since the sword was intended to transform indiscriminately, now that you are completely transformed, those effects are implicitly also being applied to other creatures as well as an unintended side effect from the blade being used in a way it was never intended to.)

and lastly, there is one additional effect here that is not declared, but is present. Other wolves will ignore you. It's not like with the Kobold item where they will fight with you, no, Wolves will just act like you are not there, unless of course you attack them.

Last thing about the wolf's bane I promise! At the end of a run where you accepted the blade's challenge, a statue of it will appear outside the wolves pen in the zoo, and act as a sign similar to the other ones found in the zoo. It should also display your current records for the best run you had on a run that you found it. The idea is that, this would be the first thing that would act as a measure of your completion that is not just another creature for the zoo, and I am hoping to see a lot more of those if possible.

Yeah, no, don't sweat it. The other day, I was just in the mood to get a lot of this said, lest it be permanently in the back of my mind, never being able to move on from it. So I thought that I would just get it all said now, so that I can actually get back to what's important: Like college. And my own writing. and my own part time job. and playing Persona 4. Because, you know, having too many things on the mind means that I can't focus on any one thing! So, let me just SOLVE THE PART THAT CAN MOST EASILY BE FIXED FIRST.
And don't sweat it! at the end of the day, my advice for you is to make sure you are having fun with this project as your top priority! I'm the same way! I can see that you are also one of those weirdoes that actually wants criticism and feedback, and again, I am the same way. I post some fan fics to my deviantart account every once in a while, (Still DukeofBrittany there too!), and I am always looking for feedback and ways to improve... and half the time I feel like I can only get one of my friends to actually read and criticize my stuff.  (And since I spent so many hours giving you a full deconstruction of your work, is it possible you could look over some of my stuff at some point? If not, that's fine. There's no TF related content on there, and most likely if I was to start making TF content, I would make an alt account to do it, so...) So, yes, I very much understand the tedium and suffering that can come with the creative process. People don't understand how important giving and receiving criticism is, so i'm glad that a lot of my ideas resonate with you. Hope whatever your current situation is either sorts itself out, or you are able to sort things out positively!

Anyway, i'm going to write you your second essay on cursed items, then get back to my college work. Hope you have a good day!

Hi, it's me again. I am writing this under the assumption that you already saw the post I made to the bug report thread. If not, i'd read that first as it gives a bit of context and insight into where my thoughts with this game lie.  Brace yourself, because I have frankly way too much to say! And, I will say this up front, my experience with your game is largely positive! You are doing very well, keep it up! I think it has some good ideas and I would love to see it improve and evolve over time. Plus, I have never gotten in on a project in an early state such as this,  so i'm curious what you have to say about the crazy directions my mind can go. No ill will is intended with this, I genuinely want to see this improve is all. But first, before I get into the big ticket suggestions, I'd thought that I would start with some more small and isolated ideas.

  • I think the ascii works well for the game's current state, and while I think you should keep the @ symbol for the player, I think it would be neat if the color value of the player would be able to gradually shift to the color of the enemy they are turning into.
  • For what it currently has to offer, the hub is needlessly big. in particular, the long vertical hallways in the zoo are completely unnecessary, and I think should be done away with. 
  • more shop options and purchasable things. Things like, extra carrying capacity, maybe the ability to start a run with one of a few pieces of equipment, tips and advice, in-game clarification on how some of the game's mechanics work, things of that nature. Perhaps some of the other suggestions that I have can also be sold in the shop as an upgrade?
  • I think the shop should also allow you to toggle purchased upgrades on and off, so you can challenge yourself while showing your current game completion. "Now that I have used the upgrades I have purchased to get better at the game and get to higher floors, I want to see how good I am without them. I don't want to reset my zoo, achievements, and other collectables to do this!"
  • Also tied to either the shop or the zoo: Being able to take an animal type you have gotten an ending for, and starting a run with that animal as your BASE FORM I think would be really cool! (Though of course, that would likely mean that the story for each transformation might need to be rewritten for every animal type, and might also require a rework to the level system to balance out all the animal types.) 
  • Maybe, depending on the relative strength of each animal type you can start a run as, the extent they get transformed for any reason also changes? Like, a run where you start as a Wolf or Bat for example means that you are TF'd a lot on death, whereas weaker ones are more resistant to change? Maybe, select animals like Mice and Snakes possess higher innate Mana regen? food for thought.
  • I think the cats need to be toned down somewhat. They are far too common on the first floor for how much damage they deal per hit, and it feels like I'm always dyeing to them, and not the bunnies and mice of the lower floors, the enemies that stop appearing very quickly.  At the same time, its weird how the kobolds are relatively rare on the first two floors, but are much easier to deal with than the cats. That feels... wrong. 
  • I suggest that cats should have their attack dropped, only like one or two points really, and either will try to attack mice and bunnies in addition to the player, or should be less common on the first two floors with the other enemies' odds increased to compensate. (I'm always loosing because one or two cats spot me from a mile away and wont ever leave me alone, when really, on floor two, i'd think it funny for the player to get trampled by a pile of mice and bunnies instead. Leave the cats's true power for floor three and up. Plus, their TF priority seems a bit high as well...
  • as for Kobolds, I think they should be able to open chests, pick up items, spawn with and use equipment they possess or find, and can sometimes drop equipment and items when defeated. (Items and equipment that are dropped by Kobolds have a slightly higher chance of being cursed!)
  • I think the "examine self" spell should be more useful, as the information it gives, for being something you want players to not over rely on, (an opinion I agree with), kind of doesn't say much. Sure, it does say a bunch of body parts and says either, "Looks Human", or "Definitely transformed into a [BLANK]", but frustratingly, that's all it says. The reason this is annoying is that it does not make it clear if a body part can be partially transformed, or if it a simple yes or no system (I am pretty sure the latter is not the case) and altogether it makes it really hard to see to what extent "reduce curse" has on you. So far as I can tell, it does not revert any body part's changes period until you have been totally "cured", which I say then makes it a bad system for seeing how transformed you actually are.
  • my suggestion for that is, for the status of each individual body part, you could give ballpark descriptions for each of them. For example: at TF %'s of 0-10%, "Looks human".  For 11%-30%, "Seems normal, but it feels strange...?" For 31%-60% or if two or more transformations are fighting over the body part, "It's actively transforming!" For 61%-90%, "It's mostly transformed into a [Blank]'s [Part of the new species body]". and for 91%-100%, "It's completely transformed into a {blank]'s [part of body]!" On one hand, I think this can better show how much you are transformed, how fast you are transforming, show how effective "reduce curse" is being, and show how close you are to a game over.
  • Also, consider maybe adding an extra one or two body part slots that are active only while you are transforming into a creature that would have them. You know, things like tails, and wings extending from the back, for example. Having that stuff be pegged to the torso while having the other limbs be in two parts seems odd to me.
  • in addition, while it is nice that this menu does show what you have equipped to each body part, I think you could do more with it. For example, if your transformation is currently rendering a piece of your equipment unusable, it should say so. Like, Right hand: Armor: Gauntlets (Disabled by Wolf's paw), Weapon: Wooden Spear (Disabled by Wolf's paw, superseded by Wolf's claws).
  • Also for the examine self spell, as a bit of a future-proofing thing: beside the read out on the body parts, I think you could have a second set of read-outs containing, for example, current hunger level,  including if the protagonist thinks their diet has shifted, any known status conditions including cursed equipment that has 'gone off', the overall amount that you have been transformed on a more objective capacity, and how quickly you are transforming. (that last one I will get back to later). All of these I think should be given in broad terms, as if they are being said by the protagonist, and not just be some number value. (Weirdly enough, the one that I think I most want added to the 'examine self' spell is the hunger information...)
  • You have stated repeatedly that you don't want new players paranoidly using inspect self and reduce curse over and over again, and ultimately not knowing how the mechanics actually work. I agree! But, quite often, when I go up a level I find myself instantly useing most of my gained Mana on reduce curse anyway, sometimes five or six times until I am actually cured. So, I think I know exactly how to fix both these issues, and make TF management a whole heck of a lot more interesting: 
  • Give reduce curse a cool down, and make it's effects work over time like the regular transformations do! Don't want players spamming reduce curse over and over again? Well, the simple solution to not let them! Force them to have to wait 100-300 steps or something like that before they can use it again! Plus, make it weirder and more robust.
  • For example, consider splitting the spell into two different options that share the same cooldown. One option, "reduce curse", will only instantaneously drop your net transformation by a small amount, (say, 5%), and primarily will slow the rate that you are transforming, or make it possible to naturally transform back, slowly, depending on other factors. The other option, "Remove curse" would be more expensive, but would cure you immediately by about 35%, but would do very little to slow down the rate at which your transformations are progressing. this more expensive option can also be found as a random item!
  • I purpose that we radically rework the way transformations are handled so that the mechanics are more clear to understand by the player, but also more difficult for the player to manage in a way that hopefully feels rewarding. firstly, while I think the very slight transformation effect from taking damage is fine, I have decided that I kinda don't like how much dyeing can immediately add to how transformed you are, and so I believe that it would be better if most of the effect was handled over a period of time after you respawn, by greatly increasing the speed by which you transform for a time.
  •  For the rate at which your transformation progresses, this should be a very complicated but robust system. lets suppose the speed at which your transformation is progressing is largely independent of the animal you are transforming into. imagine a scale from zero to twelve, with any possible number in-between, including non-integers, is the final value of your transform speed. Before explaining how this number is gained, lets talk how it is interpreted and used first, as, this is not a value to be taken as is. Rather, it is to be then used to determine the player's actual TF conditions.
  • Now, take that scale, and divide it into five unequally sized groups. for example: Group A is 0-2. B is 2-3.5. C is 3.5-7.5. D is 7.5-10. and E is 10-12. So, now we have five different "Transformation speeds" based on the result of the previous number. What do they do? Well, E is where you are transforming into another creature very fast. Usually, you will only get here if you just died more than once in a quick succession, or are being subjected to the peak of a cursed item's effects, or are suffering from several factors at once. If you end up in here somehow without actually having an active transformation, feel free to then GIVE the player an active transformation! D is for the transformation progressing at a decent pace. This is where you would get one of the notifications for the transformation's 'story' about once a minute. For C, the transformation is progressing VERY slowly. Akin to watching grass grow, paint dry, and water boil, its very gradual but always progressing further, creeping ever further into your body. You can be at a transformation speed of D and C and not have an active transformation, but I think these levels will raise the odds that a transformation will start because you took damage. B, the transformation actually is paused and won't progress. The default value of the TF speed is at 3.1, and this is the value the run starts at as well as what the tf speed value tries to settle at most of the time. and in A, the transformation will actually recede back in the direction of your base form at a rate somewhere between C and D. 
  • I think these TF speed groups can also be put under the examine self spell, with the protagonist having different comments for that menu depending on the level the TF value is currently in. For example: A can say, "I think I am returning to normal!" B can say, "I feel fine." or "My body feels stable." C can say, "I feel a little off" or "Something is not quite right with me." D can say things like, "My skin is so itchy!", "I keep having these tingly feelings!" and "I am definitely transforming!" and E can say things like, "These changes... I can't... stop them!" and "The transformation is so intense!"  I also think that there can be more of them that can be displayed then these, and perhaps you can have some unique ones for specific animals.
  • Does any of this make any sense at all as a mechanic? I hope so. I just want to talk about it so I can get it off my chest, really.  Anyway, i'm about to get pretty dam mathematical, so please keep in mind that I have not actually run any numbers and just trying to give you a good idea of what sorts of numbers we could be dealing with. obviously, if you actually try to build and test this system, the actual results would likely need a lot of fine tuning, and could look very different from what i'm suggesting here..
  • Anyway, As for how we get our TF value in the first place, it would be a bit convoluted, but I want it to be something that is always slowly drifting back towards its default value of 3.1, but does so a bit erratically. It shouldn't make big jumps, (Unless cursed items or player death is involved, of course), but will stubbornly insist on hanging around the C area a lot of the time. I think it's current value could be  based at least partially, if not mostly, on the standard deviation of the last ten or so values it recorded, how it compares to its regular value, and I think have some slight RNG involved to change the result up or down slightly. That number can then be adjusted by other, additional factors that are accumulated as multipliers, such as biome impact of the animal you are currently transforming into, like what you already have; but I think other factors that could reflect your body's ability to fight the transformation with things like how hungry you are, i.e. being well fed multiplies the result by 0.9 and as you get more hungry, the multiplier increases to 1.3 at almost starveling; (The idea being that your body is using the fuel to keep itself the same, and/or being very hungry increases one's desire to 'give in'.) current HP and MP levels could have similar, if more mild impacts, and having been recently introduced to transformation stimuli like the chance to TF from taking damage, can also add a small multiplier, unless it was a recent player death where it would be a much bigger multiplier.
  • Also, if you had any plans to introduce difficulty options to the game, one effect from difficulty could be a permanent multiplier of 0.9 and 1.2 to your TF speed value for a hypothetical 'easy' and 'hard' modes respectively. (I can't believe difficulty options was one of the things that I didn't consider this whole time, now that I am writing this.)
  • After all those factors are compiled, I think that is the value the game should record for it's standard deviation calculations, and for what the game displays for the inspect self spell.
  • However, even after that, there's still more we can impact the value with before we USE it. Namely, the factors that don't effect what is saved to the Standard Deviation or the inspect self spell are the dampening provided by "reduce curse", which I think can add an extra 0.4 multiplier and a flat -1 for it's duration,  recently dyeing can add a flat +5 to the value, and cursed objects... before they activate they do nothing, about 100 steps before they activate they add +1 to the TF speed value and transform the body part they are equipped to by 1%, when they activate, they add 50% progress to the body part they are equipped to and 20% to two adjacent and relevant body parts, become permanently equipped, and add another +7 to your TF speed! Once their activation period is over, they stop trying to get you to transform into their preferred animal outside of their equipped body part, but remain permanently equipped and still provide a constant 1.05 multiplier and add a +0.5 to your TF speed until you find a way to remove them.
  • I do have a lot more to say about cursed items in particular, but as they are the only subject I still want to talk about and since this one post is getting way too long anyway, I think I will cut this post off here and give the CURSED ITEM EMPORIUM its own thread.

another very minor one that I think should be mentioned: The "waiting" text for when you hit space to pass your turn? It is layered underneath chests and items for some reason. (I think it is also layered underneath enemies as well, but I can't quite tell.)

This is being played on the hotfix you released a few days ago. (I greatly appreciate you for making sure Bats are not carrying shotguns anymore! I also had numerous issues with that!) In the following images, I have ended up in a situation that I can more or less PROVE that your TF system does not even remotely work the way it is supposed to. For reference, this is the first floor of a new run, I'm still level 0, I maxed out upgrades, no equipment found. I had been running around for awhile then, and died to some cats like three times, and a bunny at least once. I realized that I was not transforming at all, and when I died again and realized a kobold had spawned ten spaces from spawn,  and thought, "Screw it! Might as well let him kill me just so a cat can't!" Next thing I know, two Kobolds are spawn camping me, and I am mashing the spacebar. Ten deaths later, no transformations. Two cats and a mouse show up and join in the blood bath. Twenty intentional deaths later, still no TFing. That's when I hit the windows key, grabbed these screenshots, and made an itchio account to give you your feedback. Aside from how the game is obviously not working, I think another takeaway can be that, in the event this spawn camping business could occur with the stronger enemies on lower floors that would be impossible to take out even if you were trying to actively fight them, something should be done about it.

I will also assure you that this is by no means a first time occurrence, either. This is just the first time I was able to set up an experiment to prove the glitch existed, once I realized it had gone off again. In what I believe to be the same glitch, Last patch. I recall spending four floors stuck as a 85% cat, and another time there was this gargantuan floor where I was stuck as, so far as I could tell, fully TF'd bat, perpetually starving and not able to find or make food, unable to find an exit OR end the run,  and repeatedly dyeing to bats over and over again because this was the patch they lugged shotguns around. I also recall both times being completely unable to force the requisite game over screen, or get the reduce curse spell to do anything whatsoever beyond wasting Mana. 

Altogether, along with just some examples of just being really inconsistent and hard to understand in a way that does not feel intentional on your end, the main draw of your game seems to be fundamentally broken. And I do have some evil ideas on how to overhaul this system... I will try to talk about those at a later time, its midnight where I am, and that dungeon winds FAR AWAY from the realms of this bug reporting thread.

On another, unrelated issue, and I admit this might be an issue on my end exclusively but I figured I might as well bring it up regardless; something that happens consistently roughly a minute after I extract the game from it's zipped folder,  my copy of norton protection will scan your extracted game and decide, "Assembly Csharp?! That can't be trusted, burn it!" If I attempt to luanch the game before that happens, it appears to run fine, even after it is auto-deleted. If I attempt to luanch it afterwards, well, the game does not run. So, I have made a habit of deleting all the extracted files any time I close the game, and running a fresh extraction any time I wish to play your game. Again, I don't know if there is anything you can do about that, just thought i'd bring it up.

That being said, I do applaud the fact you game saves progress in a manner that is not impacted in any way by uninstalling and reinstalling the game every time I want to play it. I was just curious if there were any plans to incorporate a "start new save file" option in the future. Moreover, or alternatively, I think you could consider allowing for the option to toggle already purchased shop upgrades on or off, so that you could play the game on harder settings without undoing your zoo/achievements/overall-progress.