What does this suggestion change/add/remove
This suggestion will comprise of 2 smaller changes to disguise card logic and 1 change to how they are coded.
Add: Cooldown Bar
After nabbing someone's disguise, if you try again you are always given the "wait 5 minutes before taking another disguise" prompt. I feel like this kind of cooldown reminder is unintuitive and annoying. It doesn't even change with the amount of time you have left always 5 minutes. There are 2 possible changes that can be made to fix this problem.
1: Detailed Messages
Instead of repeating the same message, the cooldown will be displayed in the message changing it to "wait X minutes XX seconds before taking another disguise." While I feel like this is the clunkier way of doing things it would at least be better than what we have now and wouldn't be too hard to implement.
2: Charge Bars
With the release of Type-Greens we were also given a system of cooldown bars for their powers. Why not use these cooldown bars in other areas? This version of the change would add a cooldown bar above the card information in the bottom right. Pretty simple. Take something we already have and apply it to a different system.
(You could also just use both)
Change: Disguise Taking Range
Right now, left clicking with a disguise card shoots an infinite range raycast looking for any player (top drawing). Since disguise sniping is already against the rules as an unintuitive "unlisted rule" why not just physically limit the range of taking a disguise (bottom drawing)? This is just a simple change that should already be in the game. I think the range should be slightly bigger that melee range to still allow for some sneaky disguise stealing (~200-300 HU maybe?).
REWORK: How Disguise Cards Store Data
This is the big one. As I'm sure anyone who's used a disguise card knows, they are really unreliable at actually keeping you disguised. The most notable is when someone leaves the server, your disguise is completely removed, leaving deep covers from GOIs completely exposed in the foundation. Or when your disguise target changes to another job that is impossible to use like D-Class, meaning you're not able to undisguise because redisguising would make you a D-Class. This is just really stupid but there is an understandable reason why this happens. To explain it I will have to go into some code jargin (stay with me here).
Pointers are a type of variable that store the memory address referencing another variable. This is very useful when you need a copy of larger data types like strings. Pointers take up the same memory as a long integer (64 bits / 8 bytes on a 64 bit machine) compared to a string which can easily bloat storage by being way more bytes than 8 depending on length. They can be very effective in reducing memory usage in programs but their main issue is that when the data that's being referenced is removed, the pointer reverts to null. (is this sounding familiar yet?) See the image below for an image of what I'm talking about.
This is how the disguise cards work. It stores references to the relevant data of the player you're disguising as such as the model, name, rank, and team. On the surface this is fine and saves the server memory but there are some very fatal flaws with this system that I've pointed out. Because of this I think it would be best for the player experience to forgo the memory optimization in favor of smoother gameplay. This change would make it so that the relevant information such as name and model is stored directly as a copy instead of a reference to the player's information. Doing this would prevent unexpected changes in your disguise information or just completely removing it entirely when they leave since you are now given a copy of their name and the model path they are using instead of a reference to what their current name and model is. (going from old on the left to new on the right)
Addendum: Remove team indicator from disguise cards
I realized this after the fact but when taking the disguise of a disguised enemy, the disguise card had their team icon on it so you can tell the person who's disguise you took is an enemy, but you can't use that information because it would be metagaming. So why even have it on the card? I say just remove the icon or change it to represent the proper team of who the disguised person is disguised as (complicated).
Has something similar been suggested before? If so, why is your suggestion different?
I don't believe there has been a suggestion to change to the actual code of the disguise card but with no efficient way of searching through prior suggestions I can't be entirely sure.
Possible Positives of the suggestion
No more forced undisguising when disguise target leaves
No more disguise sniping rules with a physical limit
Disguise information stays the same regardless of the actions of the disguise target
Better accuracy of disguise cooldown with a descriptive message / cooldown bar
Addendum: Removes accidental/unknowing metagaming through team indicator on card
Possible Negatives of the suggestion
Obligatory dev time negative point
Increased memory usage by changing off pointers
Based on the Positives & Negatives, why should this suggestion be accepted
The current disguise cards feel very clunky and surface level. They are usable but they can be so much better. Compared to the stuff that's being released nowadays like type green this just feels like a relic of old, more inexperienced coding and it's very much due for a change. A DC mission shouldn't be completely ruined because the target decided to get off the server.
This suggestion will comprise of 2 smaller changes to disguise card logic and 1 change to how they are coded.
Add: Cooldown Bar
After nabbing someone's disguise, if you try again you are always given the "wait 5 minutes before taking another disguise" prompt. I feel like this kind of cooldown reminder is unintuitive and annoying. It doesn't even change with the amount of time you have left always 5 minutes. There are 2 possible changes that can be made to fix this problem.
1: Detailed Messages
Instead of repeating the same message, the cooldown will be displayed in the message changing it to "wait X minutes XX seconds before taking another disguise." While I feel like this is the clunkier way of doing things it would at least be better than what we have now and wouldn't be too hard to implement.
2: Charge Bars
With the release of Type-Greens we were also given a system of cooldown bars for their powers. Why not use these cooldown bars in other areas? This version of the change would add a cooldown bar above the card information in the bottom right. Pretty simple. Take something we already have and apply it to a different system.
(You could also just use both)
Change: Disguise Taking Range
Right now, left clicking with a disguise card shoots an infinite range raycast looking for any player (top drawing). Since disguise sniping is already against the rules as an unintuitive "unlisted rule" why not just physically limit the range of taking a disguise (bottom drawing)? This is just a simple change that should already be in the game. I think the range should be slightly bigger that melee range to still allow for some sneaky disguise stealing (~200-300 HU maybe?).
REWORK: How Disguise Cards Store Data
This is the big one. As I'm sure anyone who's used a disguise card knows, they are really unreliable at actually keeping you disguised. The most notable is when someone leaves the server, your disguise is completely removed, leaving deep covers from GOIs completely exposed in the foundation. Or when your disguise target changes to another job that is impossible to use like D-Class, meaning you're not able to undisguise because redisguising would make you a D-Class. This is just really stupid but there is an understandable reason why this happens. To explain it I will have to go into some code jargin (stay with me here).
Pointers are a type of variable that store the memory address referencing another variable. This is very useful when you need a copy of larger data types like strings. Pointers take up the same memory as a long integer (64 bits / 8 bytes on a 64 bit machine) compared to a string which can easily bloat storage by being way more bytes than 8 depending on length. They can be very effective in reducing memory usage in programs but their main issue is that when the data that's being referenced is removed, the pointer reverts to null. (is this sounding familiar yet?) See the image below for an image of what I'm talking about.
This is how the disguise cards work. It stores references to the relevant data of the player you're disguising as such as the model, name, rank, and team. On the surface this is fine and saves the server memory but there are some very fatal flaws with this system that I've pointed out. Because of this I think it would be best for the player experience to forgo the memory optimization in favor of smoother gameplay. This change would make it so that the relevant information such as name and model is stored directly as a copy instead of a reference to the player's information. Doing this would prevent unexpected changes in your disguise information or just completely removing it entirely when they leave since you are now given a copy of their name and the model path they are using instead of a reference to what their current name and model is. (going from old on the left to new on the right)
Addendum: Remove team indicator from disguise cards
I realized this after the fact but when taking the disguise of a disguised enemy, the disguise card had their team icon on it so you can tell the person who's disguise you took is an enemy, but you can't use that information because it would be metagaming. So why even have it on the card? I say just remove the icon or change it to represent the proper team of who the disguised person is disguised as (complicated).
Has something similar been suggested before? If so, why is your suggestion different?
I don't believe there has been a suggestion to change to the actual code of the disguise card but with no efficient way of searching through prior suggestions I can't be entirely sure.
Possible Positives of the suggestion
No more forced undisguising when disguise target leaves
No more disguise sniping rules with a physical limit
Disguise information stays the same regardless of the actions of the disguise target
Better accuracy of disguise cooldown with a descriptive message / cooldown bar
Addendum: Removes accidental/unknowing metagaming through team indicator on card
Possible Negatives of the suggestion
Obligatory dev time negative point
Increased memory usage by changing off pointers
Based on the Positives & Negatives, why should this suggestion be accepted
The current disguise cards feel very clunky and surface level. They are usable but they can be so much better. Compared to the stuff that's being released nowadays like type green this just feels like a relic of old, more inexperienced coding and it's very much due for a change. A DC mission shouldn't be completely ruined because the target decided to get off the server.
Last edited: