Date: 2019/02/14 13:26:42 UTC-08:00
Type: Denizen Script
Fire_Spell:
type: task
debug: false
definitions: Player|PlayerTarget|Range
script:
- define StartPosition <def[Player].location.add[0,1,0]>
- define FalsePositive <def[Player].eye_location.add[<player.location.direction.vector.mul[<def[Range].sub[2]>]>]>
- define MiddleDiff <def[PlayerTarget].eye_location.y.sub[<def[PlayerTarget].location.y>].div[2]||null>
- define IsObstructed <def[Player].location.cursor_on.points_between[<def[StartPosition]>].distance[1].size.is[LESS].than[<def[Range]>]>
- define ObstructedPosition <def[Player].location.cursor_on>
- define UnObstructedPosition <def[PlayerTarget].location.add[0,<def[MiddleDiff]>,0]||<def[FalsePositive]>>
- define EndPosition <tern[<def[IsObstructed]>]:<def[ObstructedPosition]>||<def[UnObstructedPosition]>>
- define string <def[StartPosition].points_between[<def[EndPosition]>].distance[0.02]>
- define pitch <def[player].eye_location.pitch.add[90].to_radians>
- define yaw <def[player].eye_location.yaw.mul[-1].to_radians>
- foreach <def[string]>:
- define vector <location[<def[loop_index].sin.div[1.5]>,0,<def[loop_index].cos.div[1.5]>]>
- if <def[loop_index].mod[3]> = 1:
- playeffect at:<def[value].add[<def[vector].rotate_around_x[<def[pitch]>].rotate_around_y[<def[yaw]>]>]> quantity:3 offset:0.01,0.01,0.01 visibility:50 effect:REDSTONE special_data:.3|255,<li@200|150|100.get[<def[loop_index].mod[4]>]>,0 data:0
- if <def[loop_index].mod[100]> == 1:
- wait 1t
- if <def[loop_index].mod[15]> == 1:
- playeffect at:<def[value]> effect:flame offset:0.2,0.2,0.2
- playeffect at:<def[value]> offset:0.1,0.1,0.1 visibility:50 effect:REDSTONE special_data:.5|255,<li@200|150|100.get[<def[loop_index].mod[4]>]>,0 data:0