He snickered unconsciously. They HAD to insert him. The government audited the company for insertions. If he hadn’t been inserted, they’d have to answer to the government during the next audit. This way, everything looked on the up and up. He was inserted, but he was a monster and couldn’t tell anyone about it.
But he wasn’t just your average Joe. He was a programmer. And not just any programmer, he was a WorldCog programmer.
He had worked on nearly every routine in the game at some point. He knew how the code worked and he knew of the backdoors.
He laughed. In the ogre body, it came out as a wickedly loud, ominous sound. WorldCog thought they could silence him. Jace would show them. He’d use his knowledge of the game to get the word out. If he couldn’t save himself, he might at least be able to save others by getting the word out and forcing WorldCog to fix their code.
In the process, hopefully they’d fix him too and he could live out his days as Mordred. It wouldn’t be so bad. He had been about to become a raider and have access to the top content in the game. It would be fun.
He was still thinking that when he felt a heavy foot on his shoulder. He opened his eyes and looked up to see a huge bipedal bear. It was a werebear, one of the “good” races, which meant it was probably a player.
The werebear looked down at him with a huge, two-handed axe poised over his head. “Ello poppet.”
The last thing Jace saw was the axe descending towards his neck and then a sharp pain and blackness.
After a few moments, just like before, glowing words appeared.
System message 4307895E - Entity killed.
Experience rewarded.
Loot generated.
Return code: __
Then, like before a cursor blinked at the end of the words “Return code:” Out of curiosity, he mentally clicked on the cursor and was rewarded with a virtual keyboard. He pressed the “1” key and then the Enter key. The words disappeared to be replaced by new messages.
Return code 1.
AI module retrieved.
Selecting new host.
Inserting AI module.
Spawning…
There was a darkness and then once again he was a physical body. He looked around. He was in an orc village. Looking at his arms, he was the same color as the orcs and guessed he was an orc this time. Just great.
Chapter 9
Jace looked around to see if there were any players nearby to kill him. When he didn’t spot any, he found a nearby tree stump and sat down on it. None of the other orcs gave him more than a passing glance so he thought it would be safe to think for a while.
He tried to remember his train of thought before he'd been rudely interrupted by an axe to his neck. Jace involuntarily rubbed his hand across his neck and shivered. That had been a little too realistic. He made a mental note to avoid beheadings in the future.
Jace thought about his predicament until the sun went down without interruption. In the three or four hours, he’d come up with a few theories on what had happened to him. All had flaws except the last one.
In the game, everything was classified as an entity and each entity had a type. Unless he was mistaken, somehow, he’d been inserted with the wrong type. Instead of a player type, he was a monster AI type. That would explain why he was jumping from monster to monster. Each AI module, or AI entity, went to a pool until a monster was spawned. At that time, the monster “body” was given an AI to run it based on certain parameters. When the monster died, the AI module went back to the pool to get reassigned, which helped cut down on resource use.
That appeared to be exactly what was happening to Jace. He was put into a monster body until he died and then he was sent to a newly spawned body. But, since Jace wasn’t really an AI, he wasn’t bound by any parameters like real AI.
He didn’t have to respond to Taunts, didn’t have to act “in character” for the monster. He could do whatever he liked - until he died.
If he could somehow change his entity type, he could change himself into whatever he wanted. He could even change himself into a player type and get back into his Mordred character. The problem was, without access to his data, he couldn’t make any changes. And the only way to access his data was from the real world with a terminal connected to the game world.
Jace stretched. He’d been sitting for hours and he was getting sore - and hungry he noticed. He stood up and looked around the village. The orcs were going about their business, seeming oblivious to him. Apparently, he wasn’t a very important orc in the tribe.
He did some quick stretching and then sat back down. Surprisingly, his stomach growled, and he looked down at it. Did monsters really feel hungry like this? It felt very real. But Jace couldn’t think about stuffing his face right now.
He stopped in mid-thought. Stuffing his face. The thought had triggered something in the back of his mind. Stuffing his face. Stuffing his face. It was right on the tip of his brain. Something about stuffing.
Suddenly it hit him. Not stuffing. Injection. He could do an injection attack on the return code. By loading actual programming code into the return code, the system should run the code. In theory. And assuming the original developers didn’t build in checks for an injection attack. But Jace felt certain they wouldn’t have. After all, players would never be monsters, so why build security around a return code only AI’s would have access to. But he couldn’t be certain.
Jace needed to test it. He needed to be sure before he got his hopes up. Of course, there was only one way to test it. He had to die.
***
System message 4307895E - Entity killed.
Experience rewarded.
Loot generated.
Return code: __
It had taken Jace nearly an hour to get killed. This time, there were no players, and, in the end, he ended up punching the chief in the face. The chief was a boss and had killed him with one blow.
Once more he brought up the virtual keyboard. It was the moment of truth. Please let this work. Jace typed in his code:
System.out.printf("Hello World");
It was the most basic of code, but it would definitely let him know if he could use the injection exploit. He held his breath and hit the Return key.
Return code Hello World.
AI module retrieved.
Selecting new host.
Inserting AI module.
Spawning…
The messages flashed by quickly, but he had seen what he needed to. It had worked! And then he was in another body.
After a quick examination, Jace found he was in the body of a kobold. Kobolds were small reptilian creatures about the size of a goblin but looked more like a half-dragon. They were crafty little things that loved to set traps and lay ambushes for unwary players.
Jace didn’t care right now. He was so overjoyed that he did a little dance, and then tripped over his own tail. Oops! He’d forgotten that kobolds had tails. It didn’t matter, he just rolled around on the ground laughing. He was ecstatic that he’d found a solution. If he could do a code injection, he should be able to change his entity type to player.
He stopped rolling around as a thought struck him. He didn’t actually know what the entity types were. He’d seen them before, sure, but he didn’t have them memorized. Why should he when he could always just look them up in the documentation.
That sobered him up. He’d have to guess on the entity type. If he guessed wrong, he could end up permanently as a monster or worse, he could be a plant or even a sword. Spending eternity as a piece of ivy didn’t appeal to him at all.
Jace turned over onto his belly and propped his head in his hands. He had thought this would be a solution - and maybe it still was - but there was a lot of risk involved. If he guessed wrong, he would be completely screwed - for eternity.
But what choice did he have really? Eternity as a monster, hopping from body to body? Is that what he wanted? Plus, if he stayed as a monster, he’d never be able to get justice a
gainst WorldCog for doing this to him.
And how many other people had been inserted with the same bug. They’d be doomed to live their eternities as monsters too. And unlike him, they had no choice. The people who had been affected by the bug would be doomed for all eternity if he didn’t do something. Of course, if he screwed up and ended up a rock or an eggplant, they’d still be doomed.
Darn it! He was getting nowhere. He had to try. If he didn’t, all the people who had been inserted with this bug were doomed. He was doomed. And WorldCog would get away with it. Jace couldn’t let that happen. He would try.
Jace took a deep breath as he made his decision. He had to try. But what number should he use for the new entity type. He knew it was an integer, a whole number. And it would be a positive number. But which number?
He tried to think back to the last time he’d done any work with entity types. Something clicked in his mind and he thought maybe it was a number in the teens. Maybe 12 or 17. But which one? He didn’t know. He decided to go with 17. It was as good as any. Now he had to die.
Looking around, Jace immediately saw a way to kill himself. Down the hall to his right, an area on the floor glowed red. It was the same ability he had as Mordred - the ability to detect traps. He picked himself up and ran towards the trap. As soon as his foot touched the red glowing area, a large spike shot up through the floor and impaled him.
He felt unbelievable pain and his body spasmed and then things went black. In a moment, the familiar text appeared:
System message 4307895E - Entity killed.
Experience rewarded.
Loot generated.
Return code: __
Jace mentally took a deep breath and summoned the virtual keyboard. He quickly typed in the code he would need.
this.entityType = 17;
His finger hovered over the Return key, but he hesitated. Was it 17 or could it be 12? He erased the 17 and put in 12 and hit Return before he could change his mind again.
Return code ERROR.
ERROR: WRONG ENTITY TYPE.
ERROR - INVALID FACTION. FACTION = 0.
ERROR - INVALID RACE. RACE = 0.
DNA DETECTED.
BODY GENERATION COMPLETE.
CLASS 0 DETECTED.
UNKNOWN ERROR.
UNKNOWN ERROR.
UNKNOWN ERROR.
UNKNOWN ERROR.
SPAWN ERROR.
SPAWN ERROR.
Suddenly, the darkness was gone, and he was back in the kobold body. Then pain like he had never experienced erupted across his entire body. He could feel muscles tearing, bones breaking and reforming and then breaking again. He tried to scream but the spike was still sticking through him, impaling him. All that came out was a gurgle and some blood.
The pain continued until he passed out. At least, he thought he passed out. Then the next thing he knew, the world was gray, and he was staring down at his body impaled on a stake. Only, it wasn't a kobold body, it was a human body. Looking closer, he saw that it was HIS human body. It looked almost identical to his real body except in much better shape.
Then familiar words popped up and he thought they were the most beautiful words he’d ever seen.
You have died.
Do you wish to respawn at your last spawn point? (Yes or No)
Without a moment’s hesitation or even caring where he ended up, he mentally chose Yes. And everything faded away.
Chapter 10
Jace felt a sensation that felt like falling and tingling at the same time. Then his vision was obscured by a golden light that was almost blinding. It was an all too familiar feeling, though more intense than he was used to. It was the respawning process.
Respawn complete.
New spawn point: Sinking Springs
Do you wish to set Sinking Springs as your bind point? (Yes or No)
After mentally choosing yes, the prompt disappeared. He was still blinded from the golden light, but he could feel the grass beneath his feet, his bare feet. He blinked his eyes until he could see.
The first thing he noticed was that he was in a graveyard, on a grave with a tombstone marked “Unknown Adventurer”. But that wasn’t his primary concern. He held up his hands in front of his face. They were human. He felt elated. But then he realized that they were, in fact, human, not vampyre.
He looked down at the rest of himself. He was naked except for a loincloth and his body was definitely human and not vampyre. In fact, he actually looked like a version of his real-world body, but in peak condition and maybe a few inches taller. But he definitely wasn’t Mordred. So, maybe he was a player now, but not in his normal character.
Bile rose in his throat. Had it deleted his Mordred character?
Please God no! He had so much time and money invested in Mordred! And he had been right on the cusp of becoming a raider! He could have made millions of gold!
Defeated, Jace dropped to his knees. He thought of the hours of work he’d put into his character, carefully crafting it and building up the skills. Then there were all the adventures he’d gone on to accumulate the equipment. The equipment! He’d finally gotten the full Kobadera set! And now it was gone?! This couldn’t be happening!
“Noooooo!!!!!” he screamed to everyone and no one in particular.
For long minutes, he just sat there kneeling on the ground, thinking of what he had lost. Finally, he took a deep breath and stood up and looked down at his body. It was him, or at least his ideal body based on his DNA. In VEIL, players were always in their ideal body locked at age 25. Jace didn’t know why the developers chose that age, but that was the way it had been designed. But that was BEFORE the race template was applied. And Jace should be a vampyre, not a human!
Was it the same bug? The bug had made him jump from monster to monster as some sort of AI. The bug was obviously WorldCog’s fault. Once he brought it to their attention and they’d fixed the bug, they’d HAVE to restore his character. Wouldn’t they? He hoped so.
For a moment, he remembered the stark reality that he was dead. That he would never be in the real world again. He shook his head to clear his mind. No, he couldn’t think about that right now. He needed to contact support somehow. But how?
There was no in-game support. Everyone knew that. It broke immersion and the original developers didn’t want things that broke immersion.
The main way to get support was on their website but Jace knew there were other ways most people didn’t know about. He only knew about them because other developers complained when a player had stumbled onto them and they had to manually log a ticket for the players.
There was a hidden room inside the palace of every country sovereign. Inside the room, there was a desk - a “Help Desk”. On the desk was a book entitled “Entreating the Gods”. If a player opened it in that room, it would summon the developer on call, and they would appear in game.
The method was in the original game code as a way to immersively ask for help. Unfortunately, they didn’t anticipate how many users would use it and how much their staff’s time it would take up. They quickly learned the error of their ways and moved all support to the website where it could be better managed. They left the code in the game but hid the activators where they thought players wouldn’t find them. But it did happen occasionally.
When a player did find the Help Desk, its location was moved but it always stayed in the royal palace since that was one of the most difficult places for a player to get. In addition, the player was given a special buff called “Entreated the Gods” which gave them a permanent +1 to all their stats, which they lost if they told anyone about the room. It kept most players from telling and those that did could never lead the players back since the room had moved.
All Jace had to do was get to the capital, get into the palace, find the room and entreat the gods. He took a deep breath and let it out. It seemed overwhelming when he thought about it. He had no idea how he was going to do any of those things. He might have managed it with Mordred, b
ut now. He paused. Actually, come to think of it, he knew nothing about his new character.
Curious now, he tried to activate his HUD. There was a weird flash and some strange characters he’d never seen and then the HUD flickered on and off, then back on. In the lower left of his vision was the system message icon and it was blinking. He had system messages waiting.
He mentally selected the icon and his screen filled with red error messages. He scrolled through them, trying to get a sense of what was going on. After several minutes of reading, he realized that he hadn’t really respawned as a player, he had TRANSFORMED into a player. Because of the way in which he’d become a player, there were some issues. He appeared to have some sort of residual characteristics of the kobold he’d been before he became a player.
He brought up the General section of his status page.
Name: Dedrurrurth
Race: Human
Class: Rogue
Level: 1
Experience: 0
Jace frowned. It appeared that it either gave him some random name, or he’d kept the name of the kobold he’d been previously. Still, it wasn’t the end of the world. What’s in a name, after all. He’d been right that his race was human. It certainly wouldn’t have been his first choice, but it was better than being a kobold.
Next, he looked at class. He had been given the Rogue class. He frowned again. Rogue was one of the base classes. No one took a base class anymore because the newer classes were so much better. It irked him that he hadn’t gotten to choose which class he’d be.
Then, he looked at level and experience. Considering the way he become a player, he wasn’t surprised that he was back to level 1 with no experience. That probably meant his Mordred character was gone completely. They’d have to restore it from a backup - assuming they would.
He decided to check out his Attributes and brought up that section.
VEIL Online - Book 1 Page 6