1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Find your way through the deepest dungeon in the 18th Mini Mapping Contest Poll.
    Dismiss Notice
  3. A brave new world lies beyond the seven seas. Join the 34th Modeling Contest today!
    Dismiss Notice
  4. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
Hive 3 Remoosed BETA - NOW LIVE. Go check it out at BETA Hive Workshop! Post your feedback in this new forum BETA Feedback.
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

[vJass] (system) Missile

Submitted by Anachron
This bundle is marked as approved. It works and satisfies the submission rules.
I have worked on this missle engine for 2 months now and start the first official beta today.

Please post feedback, critism, pros, cons, bugs, etc.
Thanks all for your patience!

And thanks for downloading.
Preview image by Furby. Thanks a lot!

Edit:
I've updated the testmap and added a second spell.
There is a lot of improvements in version 0.1.7 and I plan to make it even faster and even more modular. I also plan to create an easy to understand API.

Used librarys:

Changelog for 0.1.7

Changed all constants (TRUE, FALSE) to true/false
Changed interval to 0.03125
Fixed object leaks
Performance improvements on MissileMovement: Less object generation
Merged MissileLocHelpers to Missile<type>Target
Removed HomingMissile wrapper
Added second spell (Rain of Fire)
Removed Libraries from Modules


ChangeLog for 0.1.4

Changed name to Missile.
Completely remade in modules, supports now a lot of optional stuff.
Added SpellHelper, fixed a lot of problems, made the Miranas Arrow example WAY more powerful to show what this system is able to be capable of.


Keywords:
Missile, Projectile, xe, xemissile, xecollider, projectile, collider, awesome, anachron, collide, colliding, vJass
Contents

CustomMissile 0.1.7 (Map)

Reviews
Moderator
BPower: 11:02, 25th Feb 2016 Reason for re-review: Nowadays the spell section is packed full of missile systems from different authors, therefore a more qualified moderator comment than "this is neat stuff" is required. There is keen...
  1. Anachron

    Anachron

    Joined:
    Sep 9, 2007
    Messages:
    6,220
    Resources:
    66
    Icons:
    49
    Packs:
    2
    Tools:
    1
    Maps:
    3
    Spells:
    9
    Tutorials:
    1
    JASS:
    1
    Resources:
    66
    Thanks, I will take a look at it.

    Well, missiles have (like in xe) an decay. Make it higher for a chosen type of missiles if you know that those missiles are slower.

    Well, if you change the model you see that it's the models fault.

    I haven't missed them, thanks for reporting them, I already fixed them in the new coming version. I've made some major update which make this system faster and even more noob friendly.

    Well, I am recalculating it and there is no problem with it?! I mean, that is even better than how wc3 handles arcs.

    Please note that the new coming version has a lot of bugfixes and I am remaking the examples, while one is a lineshoot arrow that deals AOE dmg to targets and slows them for a few seconds and the 2nd is a starfall rain.

    Thanks for all of your feedback guys.
     
  2. Berb

    Berb

    Joined:
    Jan 21, 2006
    Messages:
    2,539
    Resources:
    2
    JASS:
    2
    Resources:
    2
    Though you don't always know how much time will be required for the missile to hit it's mark. When the projectile is fired from a very far distance or it doesn't move very fast, the amount of time it requires will change indefinitely.

    [​IMG]

    Well I was testing it with a whole bunch of different settings (as you should have been) but here, here's a picture with buffed up projectiles so you can clearly see the pitch rotation is messy. If you re-create this, you'll also notice that projectiles have a twitch in their pitch angle.
     
  3. Anachron

    Anachron

    Joined:
    Sep 9, 2007
    Messages:
    6,220
    Resources:
    66
    Icons:
    49
    Packs:
    2
    Tools:
    1
    Maps:
    3
    Spells:
    9
    Tutorials:
    1
    JASS:
    1
    Resources:
    66
    Yes, so you set the decay to zero for that missile type.

    I don't see how that is wrong? I take every locations xy into account. Maybe that's my mistake?
     
  4. Berb

    Berb

    Joined:
    Jan 21, 2006
    Messages:
    2,539
    Resources:
    2
    JASS:
    2
    Resources:
    2
    Okay, good, so you've got 0 as a sentinel for indefinite. That's how it should be.

    I don't see what the location X/Y has to do with anything, this is strictly a problem with the pitch of the unit. Also, what do you mean "maybe it's your mistake"? Last time I checked you were the author of CustomMissile, so I don't see how it could be anybody else' mistake.

    Okay, so then have you ever seen an object move through the air? If you fire an arrow it doesn't face downwards while going up. It faces the direction that it is moving. In the picture I posted above it is blatantly obvious that the projectile's pitch is being calculated wrong, as the projectile is at the very beginning of it's projection yet it's facing downwards. It might as well be facing backwards, too.

    I took the time out to review your system, and within 10 minutes I found major mechanical problems that would result in the complete failure of a projectile. To this you've responded with "oh well maybe I'll fix it in the update" and then suggested that possibly, at some point in time as if it were by magical occurrence you made a mistake. Now you're failing to realize that a projectile that faces a different direction from where it is fired is physically impossible.

    I really don't know what everybody else sees in this. I've dedicated some time to trying to help you and you've done nothing but ignore and dismiss what I've presented as if it isn't relevant. I'm amazed at how many people credit this system, though I doubt a whole lot of them actually use it since it's obvious that nobody has come across problems that I've found in 5 minutes.

    Whatever, then, you can play with your own system and do things how you want to do them, and then convince yourself that it's the right way so that you don't have to do any real work. Good luck.
     
  5. Anachron

    Anachron

    Joined:
    Sep 9, 2007
    Messages:
    6,220
    Resources:
    66
    Icons:
    49
    Packs:
    2
    Tools:
    1
    Maps:
    3
    Spells:
    9
    Tutorials:
    1
    JASS:
    1
    Resources:
    66
    Yes, and I am calculating the pitch with taking the start and aim vectors into account.
    Maybe that's the problem. I see that it looks wrong. Have you tried less zArc?
     
  6. Berb

    Berb

    Joined:
    Jan 21, 2006
    Messages:
    2,539
    Resources:
    2
    JASS:
    2
    Resources:
    2
    I haven't tried anything, other than testing out some projectiles with various settings. The pitch-rotation always seemed to be weird. Either way I've given you like 3 screen-shots and lengthy explanations of the problems, you'd think you would at least know what the problem is by now.

    I thought this was easy to use. I opened up your map, tested it, and changed a bit of data here and there to make sure everything worked under more extreme circumstances. The first thing I noticed (on your "ideal" situation projectiles) was that the pitch was off.

    I then posted here, and you're telling me that you don't see anything wrong. Or you were.
     
  7. Anachron

    Anachron

    Joined:
    Sep 9, 2007
    Messages:
    6,220
    Resources:
    66
    Icons:
    49
    Packs:
    2
    Tools:
    1
    Maps:
    3
    Spells:
    9
    Tutorials:
    1
    JASS:
    1
    Resources:
    66
    I was tyring to say maybe THAT'S my mistake, like maybe that's the thing I am doing wrong.

    Well, I haven't seen anything wrong in the new version, so I guess I already fixed it. Sorry for any annoyance this version gives.

    None were a complete failure, more optimal issues which I already solved.

    What? It isn't. You can change the start point at any time.

    I guess you are just not understanding how to use the system then?

    ... Seriously, what the fuck do you want to tell me with that?

    Well, not really, since the new version has some really big core updates.

    I said everything is optional and that is how it should be.

    Well, because you don't believe that I am still improving this system and already did a lot of work, here is the pastebin preview of the new version. I guess that one should be more safe, faster and with less bugs. (Please note, other bugs can occur, since I haven't tested it fully yet)

    Paralyzing Shot (Testspell for new engine)

    (Check out ParalyzingShot and negate the static if to see a line shot, I did this only so you can see everything is going well)
    (And no, I haven't finished rain of arrows yet)
     
  8. Berb

    Berb

    Joined:
    Jan 21, 2006
    Messages:
    2,539
    Resources:
    2
    JASS:
    2
    Resources:
    2
    The problem with the pitch could also be the unit you are using. Check to make sure it's maximum pitch/roll angles are all 0.00 so you don't have any unwanted rotation. In the new map you posted there doesn't seem to be this problem.

    It's not that I fear you're not doing any work on the system, it's that the actual work you put into the system is all under your own pretenses. I mean, you've gone through over 25 versions now and there are still problems with fundamental missile mechanics. I highly doubt that even in the next 10 versions you're going to sort it out. You seem to be adding more and more bull onto a poor foundation.

    When it was quite obviously wrong, you "failing" to see how it is incorrect and then saying "maybe that's my mistake" sounds like you're completely discarding the evidence that I presented you, but that's not the point. It seems like the pitch-rotation has been fixed.

    Reduce the "hit-range" value to something low. When you've got a moving target it really screws things up.

    Well my point is that either your system is flawed or your test map is really poorly put together. I was using your preset values when I discovered error, and after 20-some versions I really didn't expect to encounter bugs that quickly. Also, you have to ask, if I'm encountering bugs so quickly then how can anybody be sure that this system truly is bug-free, especially when you keep piling more features on without ensuring the stability of fundamental features.

    Are you serious? I made my own projectiles system that is more stable than this one and you're telling me that I don't know what I'm doing? I'm sorry but after finding various bugs within 5 minutes you are in no place to say that I am the one who doesn't know what he's doing. I am not the one who releases bug fixes every version because I can't comprehend what it is I'm doing, and I do things properly the first time.

    Though, I did have some time to review TriggerHappy's review of this system. I absolutely love how you take his comment about all your globals having the same prefix and then immediately threw it at me in my own thread.

    You still haven't done shit all to improve the demo-map, either, yet you've been nagging at him to review this again for months. Not only does the demo-map have absolutely no eye candy but none of the projectiles created test the integrity of the system. They're all really, really basic cookie-cutter projectiles that have extremely poor limitations, such as only being able to last 6 seconds before immediately dying. Everything is easier when the environment is completely controlled, which is why I give the user the option to use nearly every feature of mine in as simple an action as a right-click.

    You don't display any methods of projectile enumeration, though you say it is possible. I like how you also use my idea for grouping projectiles (which you implemented long after me), but I'm not going to whine about you taking my ideas as you already did that with the interface handler.
     
    Last edited: Jun 1, 2010
  9. Anachron

    Anachron

    Joined:
    Sep 9, 2007
    Messages:
    6,220
    Resources:
    66
    Icons:
    49
    Packs:
    2
    Tools:
    1
    Maps:
    3
    Spells:
    9
    Tutorials:
    1
    JASS:
    1
    Resources:
    66
    Oh crap, its 180.
    (maxRoll and maxPitch)

    I changed it. Thanks.
     
  10. Berb

    Berb

    Joined:
    Jan 21, 2006
    Messages:
    2,539
    Resources:
    2
    JASS:
    2
    Resources:
    2
    Yea, I noticed that. If you even look in the test-map that I've got submitted in my system that is a problem (though it's fixed now) because until recent I haven't looked at my submission (and it's taking forever to be approved). But now that I went through I noticed that my pitch/roll maximums were at 10, and it was causing my projectiles to shiver when moving over steep terrain changes.

    Hm. Everything I've said in the past couple of posts has seemed a lot more harsh then it was when I typed it.
     
  11. Anachron

    Anachron

    Joined:
    Sep 9, 2007
    Messages:
    6,220
    Resources:
    66
    Icons:
    49
    Packs:
    2
    Tools:
    1
    Maps:
    3
    Spells:
    9
    Tutorials:
    1
    JASS:
    1
    Resources:
    66
    Well, you still have helped me, and your feedback did let me think about my system once again.
     
  12. Berb

    Berb

    Joined:
    Jan 21, 2006
    Messages:
    2,539
    Resources:
    2
    JASS:
    2
    Resources:
    2
    I don't know. I'm starting to think that maybe this system just has a different type of projectile in mind than what I would consider a Warcraft III projectile.

    I don't see how you can tell me that a simple division is a waste of processor speed while you use function calls for all of your location operations, which are way slower. Leads me to believe that you're only trying to disagree with me to save yourself some trouble, because you truly don't understand what you're doing.

    Because the distance is 2 (or 3) dimensional, while time is only one. There is less room for error.

    In many cases calculating the time is not easy, but to be frank I do it very well in my own system and you're trying to tell me that it doesn't work. Not only is my system more efficient than yours, it also uses time as I have tried to explain to you how to do.

    Also, if you think that there is absolutely no way to calculate time then you truly don't understand physics or mathematics.

    First of all, the velocity doesn't have to be calculated on each iteration. It only has to be calculated when it is changed. Second of all, you don't even need to calculate it since you can quite easily store the value in the struct and update it whenever the user changes it.

    Except you've still got the bugs that I've mentioned above. Your system still breaks quite easily, it shouldn't take a mathematician to use your system without error, and currently the system's stability is based on the user's ability to calculate what all of their values are going to result in.

    At least I know how to control my projectiles. You clearly don't.

    You have absolutely no idea what you're talking about.

    Are you like, really stupid or something? I've just given you example after example of instances where your "distance" check will bug, and you continue to refuse my evidence. As I said already, 3 fucking times, distance is based on multiple dimensions while time is only based on one. Why would you use many variables to calculate when the projectile has reached it's target when you only need a single one.

    Fuck man I thought that you knew what you were doing, but it's clear you really don't understand a single fucking thing about what you are doing. You're taking all of the easier roads because you don't understand the mathematics behind your actions, instead you just pile a whole fuck-ton of data into a struct and then send the projectile on it's way without any control over whether or not the projectile will do what it is supposed to.

    This system should be Graveyarded. You continue to remain ignorant to factual evidence, and so far it seems like the only reason you've found to disagree with me is that your system has more features than mine. I can open your test-map and within a couple of minutes get some values that completely break your system. In fact, I could do it in even less than that. I'd like to see you do the same with mine.
     
  13. Anachron

    Anachron

    Joined:
    Sep 9, 2007
    Messages:
    6,220
    Resources:
    66
    Icons:
    49
    Packs:
    2
    Tools:
    1
    Maps:
    3
    Spells:
    9
    Tutorials:
    1
    JASS:
    1
    Resources:
    66
    Well, but distance is not so complicated as time is.

    There is a way but it's bad because I'll have to correct the formula everytime I change something on CustomMissile.

    Well not really, I am just forcing them to use proper values which make sense.

    Of course I do, but I also want the user to have their free area so it's getting harder as your script. (Because you force the user to create his own framework to do things such as onLoop etc)

    Yes, absolutely. That is what it's supposed to be. A framework where you can do whatever you want with missiles, they don't need to hit or so, you can just create them and shoot them somewhere else.

    1st. We clearly have another sense of what is useful and what not. Your system does not seem useful for me, because the user has to do all the shit which you could easily do.
    2nd. I have not put any valid value thing into it because this is not finished.
    3rd. The only thing you are currently complaining about is how the distance thing is done, right? Well that is my way in doing the collide check, and I am pretty sure it allows users to do tons more things than with your one.
    4th. If you can't stop harassing I will merge your posts into a single one with the only fragments that actually are helpful, because in most of the sentences you seem to make this system and/or me bad, which I can not really understand. Why is it so hard to tell:
    "The pitch function seems to be broken, you should check it.
    I did the following: blargh"
    But instead you talk about 3 long posts how bad it is that I release features to test them, dude seriously, cool down.

    5th. Just because you don't like the way I make programs does not mean it's wrong. In fact my engine is used by tons of more people because it actually is useful, because I do not force the user to use a feature.

    6th. I will easily break your engine by just trying to remove the zArc temporary in flight, it is impossible with your system. Don't tell me your system is any more stable than mine.

    7th. If you are still trying to defend your points without seeing my arguments, there clearly is no way to make a proper discussion with you just by using relevant arguments.
     
  14. Berb

    Berb

    Joined:
    Jan 21, 2006
    Messages:
    2,539
    Resources:
    2
    JASS:
    2
    Resources:
    2
    It's more complicated but the results are more accurate. Do you think Calculus would have been invented if Newton said, "well, addition is not so complicated".

    No, you're forcing them to do the math that your system should be doing.

    Not allowing the user to reference the timer iteration is not forcing him to create his own framework. The only thing is forces them to do is use their own timer, that is not a framework. I suggest you look up the definitions of words before throwing them around.

    It's not "easily" done, as you've even said yourself. None of your extra features that you consider "easily done" are even done properly. You can't just throw data into a struct and call that a feature.

    Exactly, you have no control over your projectiles. It's entirely up to the user to determine whether the system works or not.

    Such as break the functionality of their projectiles.

    First you tell me that distance is better than time, then you tell me that time is more complex which is why you're not using it. If you can't produce the mathematical support necessary to make your projectiles work properly, then your system is bad.

    As I was replying to your thread I was testing out the capabilities of this system. The only feature that I noticed you provided was the ability to make projectiles dysfunctional.

    I find it hard to believe there is as much activity with this system as you say there is based on the fact that I barely scratched the surface of your system's problems within 5 minutes of testing it. If you have so many users using it then why is it that these fundamental problems still exist?

    It's either because there aren't nearly as many using it as you think there are, or your ability to produce functional code is lacking.

    Lmao. You just contradicted yourself in the same sentence.

    Why? You're the one telling me that it's impossible.

    What do you mean, "defend my points". I don't have to defend facts. If you're still choosing to be ignorant then, as you said, "there clearly is no way to make a proper discussion with you just by using relevant arguments".
     
  15. Anachron

    Anachron

    Joined:
    Sep 9, 2007
    Messages:
    6,220
    Resources:
    66
    Icons:
    49
    Packs:
    2
    Tools:
    1
    Maps:
    3
    Spells:
    9
    Tutorials:
    1
    JASS:
    1
    Resources:
    66
    Not really. You can't make a missile that has no aim with your timer system.

    As for now, yes, I am forcing them to input proper values. That is not really math, everybody that can use the object editor can use my missile engine.

    I suggest staying at the main topic before writing any more sentence.

    I didn't, and I did tons of system changings to include the features.

    Not about if it works nor not, but more HOW it works.

    None did ever break the functionality.

    I am just not liking time, is that that hard to understand? Just get it.

    Stupid values bring stupid results. Even your engine will break if I insert some stupid things into it. But since you have rarely anything for the user to test, you can tell that it works, because it nearly does have no functionality.

    It's because you are doing it wrong.

    Nope, the last part belonged to the "removing the zArc while flying", learn to read.

    You are only trying to say why your system is so great whatever, without even looking what I have to argue.

    You don't know anything of this system, and since you don't want to, I think you really shouldn't post anything more, not that I don't like feedback, most of your feedback just isn't helpful in any way.
     
  16. Berb

    Berb

    Joined:
    Jan 21, 2006
    Messages:
    2,539
    Resources:
    2
    JASS:
    2
    Resources:
    2
    Well you can, but you have to know what you're doing. You can't just send random missiles on their way, but you can improvise and make it look like they have no target when they really do. This is a much better work-around than having all of your projectiles as mindlessly moving units.

    Stop trying to use words like "proper values" to save your pride. You force the users to do the math themselves because your system is unstable. This has nothing to do with "proper values". An improper value is a string when a real is required, not 5 when 3 is ideal.

    Yes, that is math. Anybody can choose random numbers but those random numbers won't always work. Mathematics is required to ensure the numbers chosen do work.

    What? I was answering a topic that you brought up and now you're telling me to stay on topic? If you want to stay on topic then don't bring up irrelevant information. God man you're not too bright.

    Coming from the same guy who won't use time because the mathematics is too complex, I have a hard time seeing what complex changes you could have possibly incorporated that "enabled" these amazing features that don't work without strict values.

    Just to clear things up, too, I'm not talking about giving a projectile 30000 speed and seeing whether or not it will break, I'm talking about precise mathematical situations where common problems can arise due to the incoherency of your calculations.

    Exactly. Nobody cares about how many features you have it's about how stable those features are. Well, nobody with half a brain anyway.

    Do you really expect me to believe that? If you could use time and have absolute accuracy you would, you just don't understand the math behind it and you don't want to do the work that would be required to use a more accurate method of target-detection.

    Please provide some examples instead of just pulling things out of your ass to throw at me. Monkey-boy.

    I don't really know what you're trying to say here. You haven't provided any examples or situations where my system breaks, as I have for you, so I'll assume you mean that you couldn't actually find anything to present.

    This sentence makes about as much sense as your argument as a whole.

    Since when is the malfunction of a system the user's fault?

    You tell me that it's easy to break my system, and then you follow up by saying, quite simply, that you can't. In fact you use the word "impossible".

    I like how you're telling me to learn how to read after a sentence like this one:

    Learn how to write a proper sentence, and perhaps some properly functioning code to. Then get back to me.

    What are you talking about? I've picked absolutely every inch of your arguments apart and revealed how much bullshit that you produce. Not only that but you haven't actually provided a single fact, screen-shot, or example to back up any of your arguments.

    Also, I am not trying to say "how great my system is" I am trying to show you how much error you have in yours. This isn't about me. It's about you, and this system. That's why we're in this thread. I found problems with your system, and since I happen to have a projectiles system I thought I'd help you out, but you're too bloody arrogant and ignorant to learn from people who actually know what they're doing.

    What do you mean, I don't know anything about this system? Last time I checked you were coming to my submission thread asking me why your event handler (the idea of which you stole from me) did not work.
     
  17. Anachron

    Anachron

    Joined:
    Sep 9, 2007
    Messages:
    6,220
    Resources:
    66
    Icons:
    49
    Packs:
    2
    Tools:
    1
    Maps:
    3
    Spells:
    9
    Tutorials:
    1
    JASS:
    1
    Resources:
    66
    Holy crap, you call it stealing when I use the eventhandler xe has? Yes, I based my system on xe, as already said. And using great features isn't stealing anything. Everybody uses inheritance and eventhandlers in such situations.

    I rather give the user the easily possibility to make mindless missiles as to force him to do a workaround for such common things.

    Time is never accurate in a system with changing values. It is just to useless to update the time every few ms so I can just stick with my 3 dimension check.

    Talking about your system:
    Why the hell do you force the user to use the arc everytime or not to use it? Can't a user say, let's change it while flying?
    And to be even more specific: Your system does only do the basics, and disable features like targetless flying and such things.
    Making a workaround just to create a flight with no aim is one of the stupidest things to show the users how easy your system is to use.

    Learn how not to be arrogant.
     
  18. Berb

    Berb

    Joined:
    Jan 21, 2006
    Messages:
    2,539
    Resources:
    2
    JASS:
    2
    Resources:
    2
    Alright, fair enough; you didn't steal it. That is besides the point.

    "I have it exactly the same as yours now".

    Enough said.

    Since when is having a projectile with absolutely no target common? Keep in mind that no target means an instant action that creates a projectile at random and launches it in no particular direction.

    Clearly uneducated.

    Since when can the "arc" of a projectile change after it has been set in motion? If I wanted to allow the user to change the arc of the projectile it would be as simple as making the readonly declaration public instead, but I choose not to allow users to do that because it's not normal. I tried to base my system off of plausible events, not magic.

    Okay, but it works all the time. All values are acceptable.

    And what exactly is the Cosine of "no particular direction"? And the Sine? In order for there to be motion there needs to be a specified direction. If there is direction, then there is a target.

    That isn't arrogant. You told me to learn how to read after composing a sentence that didn't make any sense, and now you're calling me arrogant.
     
  19. Anachron

    Anachron

    Joined:
    Sep 9, 2007
    Messages:
    6,220
    Resources:
    66
    Icons:
    49
    Packs:
    2
    Tools:
    1
    Maps:
    3
    Spells:
    9
    Tutorials:
    1
    JASS:
    1
    Resources:
    66
    Offtopic.

    Well, it should be common (and it should be the default). I know a lot of spells which uses this. For example, DotA:
    Jakiros breath, the pudge hook, Miranas arrow,...

    Cleary differently educated as you.

    So your system is plausible, mine is magic. (Because in mine you can do that and it will work properly)

    It isn't hard to make a system working when it nearly has nothing to pass to.

    Randomness does not have any direction.

    It made sense, you called me an idiot if I believe in what I said.
    Originally the "it is impossible with your system" belongs to the "remove the zArc temporary in flight". That is why I told you to read it again.
     
  20. The Reborn Devil

    The Reborn Devil

    Joined:
    Dec 31, 2006
    Messages:
    1,325
    Resources:
    0
    Resources:
    0
    Guys, stop this.
    I'm deleting your posts (not permanently though, they will still be stored on the hive if it so happens you both want the posts to be here).

    Keep it friendly!

    Edit: Okay, I've deleted some of your posts. The others seem to be helpful.


    Edit: Bah, on seconds thoughts, I've restored them, BUT KEEP IT FRIENDLY. Things like "you obviously don't know what you're doing" and similar will NOT be tolerated.
     
    Last edited: Jun 2, 2010