Today I've decided to spend lunch tackling the effect of having max taint. I have plans this evening so won't have any time to work on this, and I've been making very good progress so I want to continue to chip away at it before I get distracted by other things.
I log into the game and go visible, and ask if anyone needs anything. I spend a few minutes answering questions and fixing a bug in a quest (~15 mins to patch up the mobol) that is related to the weapon changes I made to make medium blades heavier. The mob asks for several weapons at once, and now it is too heavy to carry them all. I replace one of the weapons with a lighter weapon that I think is about as difficult to acquire. I am not 100% sure, but good enough. Back to coding.
I debated leaving this for a surprise, but it took a fair amount of time to do so I thought it would be good to include. I want to really hone in on the feeling of paranoia taking over, so we are going to make everyone appear as shadowspawn and be hit by "dark" as a target. It's hard to get to that level of taint, so we wanted something to really make you feel like you've gone off the deep end.
This requires adding a new check to targeting, and a new check to the function that renders how a player appears in the room. The code for shadowspawn/dark already exists, so I piggy-back on that and add in a check that essentially says: "this person is shadowspawn OR you are completely insane."
It occurs to me that we do not want Imms to be hit by "k dark" or appears as enemies (one might be in your room, and we don't want you to accidentally hit someone that might be wielding an uber-weapon like the Wet Ramen Noodle of Punishment). I create a special carve-out so Imms aren't caught by this.
This compiles nicely.
We also need a third test character here, which we will call Afriend.
* HP:Healthy SP:Strong MV:Fresh > l
Execution Square
The streets open up into a large square meant for executions. Large steel
cages hang in corners, and very few of the stocks remain empty. Several
mean looking guards stand watch in the crowd. A large wooden platform has
been erected in the center of the square, and a bloodied block of wood
rests on top. Several strange sharp utensils can be seen on a table nearby,
and a large axe rests against the platform.
[ obvious exits: N E ]
Aureus the Creator is standing here.
Afriend of Two Rivers is standing here.
* HP:Healthy SP:Strong MV:Fresh > k dark
They aren't here.
Everything is normal. Let's change that.
* R:1035 S:Inside HP:Healthy SP:Good MV:Fresh > <special imm command>
Atest's taint set to: 50000.
Now our poor fellow is set at maximum taint. Let's check in again:
* HP:Healthy SP:Bursting MV:Fresh > l
Execution Square
The streets open up into a large square meant for executions. Large steel
cages hang in corners, and very few of the stocks remain empty. Several
mean looking guards stand watch in the crowd. A large wooden platform has
been erected in the center of the square, and a bloodied block of wood
rests on top. Several strange sharp utensils can be seen on a table nearby,
and a large axe rests against the platform.
[ obvious exits: N E ]
*Afriend* is standing here.
Aureus the Creator is standing here.
* HP:Healthy SP:Bursting MV:Fresh > k dark
Wimpy reset to: 140 hit points.
You try to hit Afriend, but he deflects the blow.
* HP:Healthy SP:Bursting MV:Fresh - Afriend: Healthy >
Afriend tries to hit you, but you deflect the blow.
You try to hit Afriend, but he deflects the blow.
* HP:Healthy SP:Bursting MV:Fresh - Afriend: Healthy >
Afriend says 'I thought we were friends!'
Working better! Two things I notice are wrong here though: the first is that Afriend is showing in cyan (as an enemy human), but I want it to be red (as shadowspawn). The second is that this isn't carrying through to the combat messages, say, etc. So I have missed somewhere else this occurs.
The first one is relatively easy to fix -- I just re-order the way the checks occur, and add in some better branching logic that will actually speed up the function (minorly). It's unlikely to be noticeable to players, but when I notice small issues like this as I'm going through the code, I will clean them up if I am modifying that code already. If I notice something like that in code I am not already modifying, I will make a note of it in Trello but leave it be -- combining unrelated changes into a single "pull request" (essentially, a request for changes to be made to the primary/"real" code, as opposed to the siloed side copy I am working in) together is a bad practice, because it: 1.) makes the code harder for Flash and others to review and work out what is happening, and 2.) makes it harder to figure out what has happened if there are bugs or something goes wrong.
I do a quick search and locate the other part of the code where the cross-race colors and stars are handled. This all takes about 30 minutes to fix, as this is a tricky part of the code and I have to spend a bit of time understanding what is happening. I compile and it has an error: I forgot a parentheses. I fix it and recompile, then boot up the test mud again and log in my test characters.
* HP:Scratched SP:Bursting MV:Fresh > l
Execution Square
The streets open up into a large square meant for executions. Large steel
cages hang in corners, and very few of the stocks remain empty. Several
mean looking guards stand watch in the crowd. A large wooden platform has
been erected in the center of the square, and a bloodied block of wood
rests on top. Several strange sharp utensils can be seen on a table nearby,
and a large axe rests against the platform.
[ obvious exits: N E ]
*Afriend* is standing here.
Aureus the Creator is standing here.
* HP:Scratched SP:Bursting MV:Fresh > k dark
You try to hit *Afriend*, but he deflects the blow.
* HP:Scratched SP:Bursting MV:Fresh - Afriend: Scratched >
*Afriend* tickles your left leg with his hit.
You try to hit *Afriend*, but he dodges the attack.
* HP:Scratched SP:Bursting MV:Fresh - Afriend: Scratched >
*Afriend* hits your right leg.
You try to hit *Afriend*, but he deflects the blow.
* HP:Scratched SP:Bursting MV:Fresh - Afriend: Scratched >
*Afriend* says 'I thought we were friends!'
Now this is working. Though I've spent about 2 hours instead of the 1 I'd hoped. And now back to actual work.
I also realize I am still logged into the game, and have been visible. I check my list of tells to make sure I haven't been ignoring someone. Fortunately not really, just a sarcastic joke from someone. I tease them and log off.