function init() RegisterTool("dynamite_bundle", "loc@TOOL_NAME_DYNAMITEBUNDLE", "MOD/data/vox/tool/bomb.vox", 4) --SetBool("game.tool.dynamite_bundle.enabled", true) --SetInt("game.tool.dynamite_bundle.ammo", 2) end function tick() if GetString("game.player.tool") == "dynamite_bundle" then if GetInt("game.tool.dynamite_bundle.ammo") > 0 then SetToolTransform(Transform(Vec(0.3, -0.57, -0.55))) local playerT = GetPlayerCameraTransform() if InputPressed("usetool") and GetBool("game.player.canusetool") then local hit, dist, normal, shape = QueryRaycast(playerT.pos, QuatRotateVec(playerT.rot, Vec(0, 0, -1)), 4.5) if hit then if HasTag(shape, "horse") then return end local hitPos = TransformToParentPoint(playerT, Vec(0, 0, -dist)) if normal[2] > 0.9 then local spawnTransform = Transform(hitPos) Spawn("MOD/prefabs/tools/dynamite_bundle.xml", spawnTransform, true) else local xAxis = Vec(1.0, 0, 0) normal = VecScale(normal, -1.0) local rotateAxis = VecCross(xAxis, normal) rotateAxis = VecNormalize(rotateAxis) local angle = (180.0 / math.pi) * math.acos(VecDot(xAxis, normal)) local spawnTransform = Transform(hitPos, QuatAxisAngle(rotateAxis, angle)) local entity = Spawn("MOD/prefabs/tools/dynamite_bundle_rope.xml", spawnTransform, false, false) local newbody = GetShapeBody(shape) local newtransform = Transform() if newbody~= 1 then newtransform = TransformToLocalTransform(GetBodyTransform(newbody), GetShapeWorldTransform(entity[3])) newtransform2 = TransformToLocalTransform(GetBodyTransform(newbody), GetShapeWorldTransform(entity[4])) else newtransform = TransformToParentTransform( GetBodyTransform(newbody), GetShapeWorldTransform(entity[3])) newtransform2 = TransformToParentTransform( GetBodyTransform(newbody), GetShapeWorldTransform(entity[4])) end SetShapeBody(entity[3], newbody, newtransform) SetShapeBody(entity[4], newbody, newtransform2) end SetInt("game.tool.dynamite_bundle.ammo", GetInt("game.tool.dynamite_bundle.ammo") - 1) return end end else SetToolTransform(Transform(Vec(0, -100, -0))) end end end