{"action":"created","issue":{"url":"https://api.github.com/repos/OpenRA/OpenRA/issues/9357","labels_url":"https://api.github.com/repos/OpenRA/OpenRA/issues/9357/labels{/name}","comments_url":"https://api.github.com/repos/OpenRA/OpenRA/issues/9357/comments","events_url":"https://api.github.com/repos/OpenRA/OpenRA/issues/9357/events","html_url":"https://github.com/OpenRA/OpenRA/pull/9357","id":106706209,"number":9357,"title":"Added a LineImpactProjectile (Attempt 2)","user":{"login":"UberWaffe","id":2726355,"avatar_url":"https://avatars.githubusercontent.com/u/2726355?v=3","gravatar_id":"","url":"https://api.github.com/users/UberWaffe","html_url":"https://github.com/UberWaffe","followers_url":"https://api.github.com/users/UberWaffe/followers","following_url":"https://api.github.com/users/UberWaffe/following{/other_user}","gists_url":"https://api.github.com/users/UberWaffe/gists{/gist_id}","starred_url":"https://api.github.com/users/UberWaffe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/UberWaffe/subscriptions","organizations_url":"https://api.github.com/users/UberWaffe/orgs","repos_url":"https://api.github.com/users/UberWaffe/repos","events_url":"https://api.github.com/users/UberWaffe/events{/privacy}","received_events_url":"https://api.github.com/users/UberWaffe/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-09-16T06:10:12Z","updated_at":"2015-09-16T06:57:19Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/OpenRA/OpenRA/pulls/9357","html_url":"https://github.com/OpenRA/OpenRA/pull/9357","diff_url":"https://github.com/OpenRA/OpenRA/pull/9357.diff","patch_url":"https://github.com/OpenRA/OpenRA/pull/9357.patch"},"body":"Attempt number 2 at  #6252\r\n\r\nNew projectile can create multiple weapon impacts along its travel vector.\r\n(i.e. apply all warheads effects at multiple positions as it travels).\r\n\r\nIt has a leading head position, and a following tail position, and renders a beam (LaserZap) between these two positions. Weapon impacts are created (iteratively over the distance) between the head and tail, at definable intervals.\r\n\r\nThe tail position (origin of beam) tracks the firing actor until it detaches and travels on its own. This means that if you move the firing actor while the beam is firing, it does track correctly.\r\n\r\nYou can currently tell it to:\r\n* Define how many ticks the tail must lag the head (i.e. the length of the travelling beam).\r\n* Create an impact every WRange, every X ticks, between head and tail.\r\n* Only create an impact if at least WRange away from its source.\r\n* Only create an impact if at least within WRange of its target.\r\n* Keep traveling for up to WRange beyond its target.\r\n* Have damage falloff (essentially passed as a firepowermodifier to the weapon during impact) that\r\n  * Has a WRange before it starts\r\n  * Has a WRange at which it reaches maximum falloff\r\n  * Has a maximum falloff.\r\n\r\nWas based of mixture of Bullet and LaserZap.\r\n\r\nDoes NOT support\r\n* Raycasting. I took a look, but our current warhead setup (which define their own shapes) does not lend itself to a raycasting approach.\r\n* Falloff per actor hit. (Would require plumbing rework to weapon and warheads).\r\n* Only a single impact per actor. (If you give the warheads a large spread, and you make the WRange between impacts small, you can hit a single actor multiple times. I suggest using AbsoluteSpreadDamage warheads for more accurate control. To do only single hits per actor would require plumbing rework to weapon and warheads.)\r\n* A proper rendering engine to make it look like something other than a basic beam. (Currently looks fine for 'thin' beams. But thick beams are ugly.)\r\n\r\nI still have to do:\r\n* The target is a static position, so if you fire at a moving actor, even while the firing actor is still busy emitting the beam, the head does not 'track' the target. Not sure how to do this. (Would like to make this an Info setting.)\r\n* When the actor is ordered to stop, the beam should stop emitting if still busy.\r\n* When the actor dies, the beam should stop emitting if still busy.\r\n\r\nStill to be tested:\r\n* That walls properly block the beam if the beam is not set to be 'High'.\r\n* That the projectile properly works for 'short' beams, such as D2K sonic ball.\r\n* That the projectile properly works for brief instant-hit beams, such as TS railguns.\r\n\r\nPossibly Closes  #4458.\r\n\r\nI've attempted to apply it to the D2K sonic tank, and the TS disruptor tank, but balancing needs work.\r\n\r\n@pchote: I've re-read and attempted to apply all the requests in #6252. But given that this is over an year overdue, I suspect much has changed and the requirements need revisiting.\r\n\r\nSidenote: I apologize for dropping the ball on this last year."},"comment":{"url":"https://api.github.com/repos/OpenRA/OpenRA/issues/comments/140648277","html_url":"https://github.com/OpenRA/OpenRA/pull/9357#issuecomment-140648277","issue_url":"https://api.github.com/repos/OpenRA/OpenRA/issues/9357","id":140648277,"user":{"login":"UberWaffe","id":2726355,"avatar_url":"https://avatars.githubusercontent.com/u/2726355?v=3","gravatar_id":"","url":"https://api.github.com/users/UberWaffe","html_url":"https://github.com/UberWaffe","followers_url":"https://api.github.com/users/UberWaffe/followers","following_url":"https://api.github.com/users/UberWaffe/following{/other_user}","gists_url":"https://api.github.com/users/UberWaffe/gists{/gist_id}","starred_url":"https://api.github.com/users/UberWaffe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/UberWaffe/subscriptions","organizations_url":"https://api.github.com/users/UberWaffe/orgs","repos_url":"https://api.github.com/users/UberWaffe/repos","events_url":"https://api.github.com/users/UberWaffe/events{/privacy}","received_events_url":"https://api.github.com/users/UberWaffe/received_events","type":"User","site_admin":false},"created_at":"2015-09-16T06:57:19Z","updated_at":"2015-09-16T06:57:19Z","body":"Note: I will rebase and squash these commits before merging, since I suspect there will be a load of changes before this is ready anyhow."}}