|
| 1 | +lightning_blade_data: |
| 2 | + type: data |
| 3 | + debug: false |
| 4 | + # For the sake of the color, Denizen escpaing is used, so &ns is # - see https://meta.denizenscript.com/Docs/Search/escaping%20system |
| 5 | + lightning_color: &nsFDD023 |
| 6 | + maximum_distance: 100 |
| 7 | + explosion: |
| 8 | + power: 2 |
| 9 | + extra_damage: 20 |
| 10 | + |
| 11 | +lightning_blade: |
| 12 | + type: item |
| 13 | + debug: false |
| 14 | + material: diamond_sword |
| 15 | + display name: <aqua><bold><italic>Lightning Blade |
| 16 | + |
| 17 | +lightning_blade_handler: |
| 18 | + type: world |
| 19 | + debug: false |
| 20 | + events: |
| 21 | + after player right clicks block with:lightning_blade: |
| 22 | + - ratelimit <player> 5t |
| 23 | + - define config <script[lightning_blade_data].data_key[]> |
| 24 | + - define maxDistance <[config.maximum_distance]> |
| 25 | + - define target <player.target.within[<[maxDistance]>].location.above.if_null[<player.cursor_on_solid[<[maxDistance]>].if_null[null]>]> |
| 26 | + - if <[target]> == null: |
| 27 | + - stop |
| 28 | + - define loc <player.location.above.face[<[target]>]> |
| 29 | + - define distance <[loc].distance[<[target]>]> |
| 30 | + - define color <[config.lightning_color].unescaped> |
| 31 | + - while <[distance]> > 1: |
| 32 | + - define nextSpike <util.random.decimal[0.5].to[2]> |
| 33 | + - define distance:-:<[nextSpike]> |
| 34 | + - define spikeStart <[loc].forward[<[nextSpike]>]> |
| 35 | + - playeffect effect:redstone offset:0,0,0 at:<[loc].points_between[<[spikeStart]>].distance[0.2]> special_data:1|<[color]> visibility:<[maxDistance]> |
| 36 | + - define spikeLength <util.random.decimal[1].to[4]> |
| 37 | + - define spike <[spikeStart].forward[<[spikeLength].div[2]>].random_offset[2]> |
| 38 | + - define distance:-:<[spikeLength]> |
| 39 | + - define spikeEnd <[spikeStart].forward[<[spikeLength]>]> |
| 40 | + - playeffect effect:redstone offset:0,0,0 at:<[spikeStart].points_between[<[spike]>].distance[0.2]> special_data:1|<[color]> visibility:<[maxDistance]> |
| 41 | + - playeffect effect:redstone offset:0,0,0 at:<[spike].points_between[<[spikeEnd]>].distance[0.2]> special_data:1|<[color]> visibility:<[maxDistance]> |
| 42 | + - define loc <[spikeEnd]> |
| 43 | + - define explosion <[config.explosion]> |
| 44 | + - explode <[target]> power:<[explosion.power]> fire source:<player> |
| 45 | + - hurt <[explosion.extra_damage]> <[target].find.living_entities.within[<[explosion.power].mul[2]>]> source:<player> |
0 commit comments