After Mr. Ito’s class I rush back to my dorm, luckily Sara isn’t home yet so I have some peace and quiet to work on my magic.
My idea is to program a smaller, faster fireball, hopefully the smaller size will result in a reduced mana-cost.
I guess I’ll just modify the size and speed of the fireball-code I got from Lance…
I type the new code into the unknown yellow cartridge and hit save…
ERROR |
|
Dammit… ah I see, I forgot to add a semicolon at the end. This reminds me of my old mobile-game coding days…
After fixing the syntax error, I hit save again and get this pop up:
Statistics |
|
Mana Price: 41 Mana/Use |
|
Explosion Efficiency: 36% |
|
Save |
Edit |
What’s this efficiency stat? Well let’s just ‘trial and error’ a bunch I guess.
I changed the speed and size back to the original code I got from Lance, the Explosion Efficiency is now 100% and the Mana Price went back up to 100 Mana/Use… If my guess is correct, this ‘Explosion Efficiency’ measures the amount of potential energy from the fireball that’s actually converted into the heat and kinetic energy of the explosion it creates when it comes into contact with something.
Or in normal people speech: a higher efficiency means a bigger boom.
It appears that a smaller fireball can’t convert a lot of potential energy into the explosion which would make it a lot less powerful… Looks like the mana count is based on a combination of speed, size and power.
Wouldn’t it be possible to alter the size of the fireball when it hits something in order to create a bigger explosion?
Alright, let’s program a smaller faster fireball that’ll expand when it hits a target, this should increase the ‘Explosion Efficiency’ since the fireball is big when it explodes. But It should also consume less mana since it still has a small volume when I fire it.
I tried adding another modifier at the end of my code to expand the fireball, but I got an error, this time a ‘Modifier overflow’ error. Looks like I can only add two modifiers to my magic right now.
This means that I can’t apply the burn effect from the original fireball though, since I need an open modifier spot, but maybe by removing the burn effect I can lower the total mana cost even more…
After a lot of testing and syntax errors I finally got some statistics I liked:
Statistics |
|
Mana Price: 50 Mana/Use |
|
Explosion Efficiency: 100% |
|
Save |
Edit |
It should have a fair bit more power than a regular fireball and it’s also a lot faster, however, it doesn’t have a burn effect like a regular fireball would have. That did make it a lot cheaper though.
I hit the Save option and I get another window telling me to name my new code.
“What about… Explosion!”
I enter the name ‘Explosion’ and hit enter.
[Yellow] Explosion:
import Magic_Class.Projectile;
import User;
public class Fireball extends ManaActivity{
@Override
protected void onActivation() {
boolean active = true;
while(active) {
if (User.Brain.Thought_detection == "Shoot") {
private Projectile fireball = new Projectile;
// fireball initiation
fireball.shape = "SPHERE";
fireball.volume = 0.0000001; // in m³
fireball.velocity = 180; // in m/s = Kinetic energy
fireball.acceleration = 0; // in m/s²
fireball.power = 900; // in KiloJoule = Potential energy
fireball.element = "FIRE";
fireball.starting_point = User.limbs.hand.palm;
fireball.trajectory = "Y = V0y*t - 1/2*g*t²";
// shoot the actual fireball
fireball.launch();
private boolean fired = true;
long start = System.currentTimeMillis();
long end = start + 5*1000;
while(fired && System.currentTimeMillis() < end){
if(CollisionDetected(fireball)){
fired = false;
ExpandProjectile(fireball);
}
}
fireball.detonate; //unleashes explosive force of the fireball
}
if (User.Brain.Thought_detection == "Deactivate") {
active = false;
}
}
};
// Modifier 1: Collision detection
public boolean CollisionDetected(Projectile fireball){
if(fireball.velocity = 0){ //fireball stops when it hits anything
return true;
}
else{
return false;
}
};
// Modifier 2: Expansion
public void ExpandProjectile(projectile fireball){
fireball.volume = 0.09; // in m³
};
};
The cartridge starts to glow and sizzle but stops after a while, I insert the cartridge and get the prompt:
Yellow Revealed Cartridge: Explosion |
Store |
Eject |
Analyze |
Nice! This could work! I can actually become a powerful Machia like this, fuck gift-cartridges, fuck mana-count, I’ll just do this my way!
Let’s start with winning the dual tomorrow, I’m curious about which lackey Kaori will send my way though. I hope someone from wood [I] or [II].
I can only hope to one-shot my opponent with explosion, they shouldn’t see it coming since the projectile is only visible on impact. Now that I think about it, I really created something superior to a regular fireball. Not only is it faster, it’s also near undetectable and more powerful.
Or well… it should be at least… I’m confident in my coding abilities, but I couldn’t actually test the magic itself out. It also looks like I can’t reprogram an already revealed cartridge, this is totally a nightmare for any debugger…
Also, I don’t think I’ll get a lot of time to practice my explosion magic before the match...
*SMACK*
I hear the front door swing open, presumably Sara returned home.
*KNOCK* *KNOCK*
“I know you’re in there pervert, let’s eat together, I bought too much sushi.”
What a shock, is she finally opening up to me? L-Lets not make any bold assumptions, it’s Sara we’re talking about after all…
“Sure, give me like 5 minutes!”
I just noticed that if the spell explodes through timing out, it never ends up expanding
yeah in that case, presumably, you didn't hit anything, so it shouldn't just expand and explode mid air. I guess expanding after timing out also has some merit, but i think the possible friendly fire might outweigh those merits.
@Niku20 you could add a User.Brain.Thought_detection for it to allow him to trigger it for proximity damage. I.e. fire it past an obstacle and trigger it alongside to take out someone taking cover.
I think I'm going to have to stop torturing myself...
This guy is not a very good programmer.....
Based on his original code
import Magic_Class.Projectile;
import Magic_Class.Effect;
import User;
public class Fireball extends ManaActivity {
@Override
protected void onActivation() {
boolean active = true;
while(active) {
if (User.Brain.Thought_detection == "Shoot") {
private Projectile fireball = new Projectile;
// fireball initiation
fireball.shape = "SPHERE";
fireball.volume = 0.06; // in m³
fireball.velocity = 100; // in m/s = Kinetic energy
fireball.acceleration = 0; // in m/s²
fireball.power = 600; // in KiloJoule = Potential energy
fireball.element = "FIRE";
fireball.starting_point = User.limbs.hand.palm;
fireball.trajectory = "Y = V0y*t - 1/2*g*t²";
// shoot the actual fireball
fireball.launch();
private boolean fired = true;
long start = System.currentTimeMillis();
long end = start + 5*1000;
while(fired && System.currentTimeMillis() < end){
if(CollisionDetected(fireball)){
fired = false;
ApplyBurnEffect(fireball);
}
}
fireball.detonate; //unleashes explosive force of the fireball
}
if (User.Brain.Thought_detection == "Deactivate") {
active = false;
}
}
};
// Modifier 1: Collision detection
public boolean CollisionDetected(Projectile fireball){
if(fireball.velocity = 0){ //fireball stops when it hits anything
return true;
}
else{
return false;
}
};
// Modifier 2: Burn effect
public void ApplyBurnEffect(projectile fireball){
private Effect burn = new Effect;
// Effect initiation
burn.shape = "SPHERE";
burn.effective_radius = 0.065; // in m³
burn.target = "ORGANISMS" && "SURFACES";
burn.center_point = fireball.center_point;
burn.duration = 6; // in seconds
// Start the effect
burn.apply();
};
};
At this time we don't know if he can edit existing cartridges or not....
And it's quite obvious from that code that he has the ability to have it do multiple actions. (It specifically lists 2.....'Shoot' and 'Deactivate')
So why is he crippling himself with just 2 actions?
Why not have multiple versions....
Shoot Standard
Shoot Explosion
Shoot Flame (rather than exploding just burn)
Could have variants for fast/slow and different radius
Also, why doesn't he try to see if he can add other types?
Freeze/Freezing/Ice/Poison/Wind/Sonic etc...
If he's not able to edit and this is a single write only then he's stuck.
Yeah, he can't edit already revealed cartridges (see line: "It also looks like I can’t reprogram an already revealed cartridge, this is totally a nightmare for any debugger…") and i might not have made it very clear, but yellow cartridges can only have 2 modifiers (better cartridges can have more) and the main body of the code is only for initialization of the primary magic. But don't worry, he'll program more cartridges with different types of magics in the future :)
@Niku20 I see, if a cartridge's rank determines how much he can rewrite a code, then his programming abilities will be tied down by it. I like that there will a downside. And also that annoying bug where you can't debug the already made programs, so seething 🙂
By the way, I noticed that he can actually program his own spell unlike what he did just now that he only reprogrammed it to be more powerful and more efficient. I mean, I feel he can already make a spell of lightning or ice or something just by basing it on how the 'Fireball' spell is programmed. Just a theory tho haha 😄
cd home\Reo\Code\Cardiges\bd416696521150d7246dde77295603f3\
rm Explosion.jar