I've realised that in the game I am making that it is possible to leave in the middle of a battle. Even though it saves whenever someone leaves, hence hindering their hp and such, it doesnt seem like much of a punishment.

What i want to know is how would you punish someone that cheated in such a way? (this is a pokemon game, but you can mention anything.)

Also, i want you to give me some constructive criticism on my idea; my idea being reducing anyone's level by one, and halving their current monetary level.

Thoughts/ideas please?
You have to take into consideration that people might not have the most stable of connections, and could disconnect in battle too, though as far as I know there's no way to tell if a person legitimately crashes or if they just leave.
In response to LordAndrew
I understand that. But i cant take the risk of people taking advantage of a possible flaw in my coding. I will have moderators who watch the game, but i still do not want the chance for people to use this if i can help it.
In response to SadKat Gaming
You should put in the proc where they leave the battle, either the HP is reset, or the HP becomes lower, however a cheat like that is not really punishable, you can put in a proc to see if the person DC'd or logged out, and If it's a DC the battle continues for 15-20 more seconds so as the person can have time to get back on, and if its a logout, you'll be alerted. However since this is a pokemon game, the reality is you can't really punish them minus taking away their pokemon or badges. Your best bet would be to make a jail, like I did in my game, Master series, and have a command to jail, and take away their battle verb. If you have a login system that adds commands to the staff as they login, add that into the coding, and change the verbs to the set, like, /mob/verb/challenge, and replace the += with a -=. Other than that, unless you can use your imagination good, you cannot really punish them.

src.verbs+=typesof(/mob/verb/Challenge)//give them the Challeng verb

the other side would be;

src.verbs-=typesof(/mob/verb/Challenge)//Take away the Challenge Verb

it would work on basically any type of verb.
In response to SadKat Gaming
Then don't let it save while in battles.
What I tend to do in situations like this is give the disconnecting player a few moments to reconnect (for the case of accidental disconnection) in which things are suspended and things will continue when the person returns. BYOND is good about this, if you don't delete their mob when they leave they'll automatically reconnect to that mob if it still exists when they return.

If the player doesn't return the game should act as if they lost the battle inflicting the maximum loss possible for losing a battle even if their losses wouldn't have been as severe. This basically means they'll lose either way and nobody is "cheated" out of any winnings.
In response to Nadrew
Not to go off topic (considering this is design philosophy) but i like the idea of that, and wonder how it would be coded? I use Client/Del for the sake of saving, so if you could point me in the right direction, i'd be very grateful.
In response to SadKat Gaming
Logout() doesn't delete a mob. Just let it wait for a minute or so before it deletes the mob. If the player reconnects within that minute, they can reclaim their mob in the state that it is in. Otherwise, it is deleted and the player has to start over (or whatever you would like them to do).
To understand the problem, you need to understand the cause. Basically, many people blunder through life with little understanding of right or wrong is. Maybe they're too young to know any better, maybe they're retarded, or maybe they're just jerks. But the bottom line is that their way of determining what's right in life is that it's whatever gets them what they want. This approach might make them tolerable enough in real life with adequate law enforcement keeping them in line but, once they get online, their true colors become evident: see John Gabriel's Greater Internet Fuckwad Theory.

It's never as easy for the players to know how a game is intended to be balanced or played as it is the inventors of the game. Thus, whether or not you should hold them responsible depends on just how reliably you can determine they should have known better.

Some examples:
  • If it's a single player game, I figure they can cheat to their heart's content, it hurts no one but themselves. Although, if they're stupid enough to submit scores to the Internet from their cheating, that is no longer the case. Ideally, you will have added a mechanism to identify cheating and flag the game to prevent score submission.
  • If I accidentally coded the game in such a way that the user can get some advantage doing something I didn't think of, then it's totally my bad. Any properly engaged player will be bending every fiber of their intelligence towards finding the path of least resistance, and I can't hold them responsible for being a good player. It's my job as a game developer to make sure all paths have the proper resistance. Patch the mistake in the game and move on.
  • Okay, so I've acknowledged the mistake in the game was my bad, and for some reason I wasn't able to immediately fix it. I informed all the players that this part of the game is off-limits because exploitation of this bug will cause damage to the shared environment used by all players. I find someone doing it anyway, somebody I knows knows better because I already told them personally. They're going to get slapped with the ban stick. They shouldn't be surprised. Basically, if I expect any rule I lay down to matter, I've got to enforce it, or they're going to count it as a rule that doesn't exist at all.
  • What if, in a shared online environment, there's a user who tracked down a third-party program that directly modifies the game works (such as directly adjusting their scores, making them unkillable, or able to see things they shouldn't), or otherwise gained an upper hand through external influences (such as RMT)? That's pretty obvious, just about everybody should know that's wrong. Permaban. Maybe a warning if I'm feeling charitable, but that's just letting the little misanthrope know they were caught.
But, in the end, there's no hard and fast rules. Justice is blind, not out of obliviousness, but out of respect to all being equal in its eyes. Think a situation through and decide what's best in a given situation. Identifying and ejecting the wanton misanthropes versus the accidental blunderers takes an open mind and a lot of consideration. It is a never-ending battle of the sysops against the world.