local module = {} local cool_rate = 0.5 function module.new(this,turbine,context) this.heat = 0 this.hinge = _G.GetInstance(turbine,"HingeConstraint") this.speed = _G.GetInstance(turbine,"Speed") this.inverted = _G.GetInstance(turbine,"Inverted") end function module.run(this,turbine,context) this.heat = this.heat * (1 - cool_rate * context.delta) -- wrong but idc local mul = 1 if this.inverted.Value then mul = -1 end this.hinge.AngularVelocity = (1-(1/(1 + this.heat))) * this.speed.Value * mul this.hinge.MotorMaxTorque = 10000 * this.speed.Value context.replicate(this,turbine,module,this.heat) return true end function module.replicate(this,turbine,context,heat) this.heat = heat end module.update = module.new module.messages = { flux = function(this,turbine,context,heat) this.heat = this.heat + heat end, } module.messages.default = nil module.manifest = { "Turbine1" } return module