local module = {}

local cool_rate = 0.25
function module.new(this,balloon,context)
	this.heat = 0
end

function module.run(this,balloon,context)
	this.heat = this.heat * (1 - cool_rate * context.delta) -- wrong but idc
	local force = Vector3.new(0,1,0) * (1-(1/(1+this.heat))) * 1000 * context.delta * balloon.Size.Magnitude
	balloon:ApplyImpulseAtPosition(force,balloon.Position)
	context.replicate(this,balloon,module,this.heat)
	return true
end

function module.replicate(this,balloon,context,heat)
	this.heat = heat
end

module.update = module.new

module.messages = {
	flux = function(this,balloon,context,heat)
		this.heat = this.heat + heat
	end,
}
module.messages.default = nil

module.manifest = {
	"LongBalloon",
	"RoundBalloon"
}

return module