initial
This commit is contained in:
commit
193e2ecb65
|
@ -0,0 +1,12 @@
|
|||
# Superhot - Factorio mod
|
||||
|
||||
Time runs as fast as you run.
|
||||
|
||||
This mod is inspired by the game [Superhot](http://superhot.jp)
|
||||
|
||||
If you have problems you can reset the timing in you wold with:
|
||||
```
|
||||
/c game.speed = 1
|
||||
```
|
||||
|
||||
Download the Mod [here](https://mods.factorio.com/mod/Superhot)
|
|
@ -0,0 +1,83 @@
|
|||
--local movingActive = 673 -- this value is actually not random, but carefully calculated , src value: 0,1484375
|
||||
local miningActive = 100
|
||||
|
||||
function init()
|
||||
if not global.Superhot then
|
||||
global.Superhot = {}
|
||||
end
|
||||
if not global.Superhot.playermovement then
|
||||
global.Superhot.playermovement = {}
|
||||
end
|
||||
end
|
||||
|
||||
function getDist(mov)
|
||||
return math.sqrt((mov[1] * mov[1]) + (mov[2] * mov[2]))
|
||||
end
|
||||
|
||||
-- caps the speed using a logarithmic function, is undefined for x <= 0!
|
||||
function movementcap(x)
|
||||
return (75.88 * math.log(x)) + 244
|
||||
end
|
||||
|
||||
script.on_event({defines.events.on_tick},
|
||||
function (e)
|
||||
init() -- init variables TODO: do somewhere else!
|
||||
local activeMax = 0
|
||||
local lastplayer -- just for DEBUG
|
||||
for index,player in pairs(game.connected_players) do --loop through all online players on the server
|
||||
lastplayer = player
|
||||
if player.valid and player.connected and player.character then
|
||||
local active = 0
|
||||
-- is mining?
|
||||
if player.mining_state.mining then
|
||||
active = miningActive
|
||||
end
|
||||
|
||||
--is moving
|
||||
local newpos = player.position
|
||||
local oldpos = global.Superhot.playermovement[player.index]
|
||||
local mov = {0,0}
|
||||
if oldpos ~= nil then
|
||||
mov = {oldpos.x - newpos.x, oldpos.y - newpos.y}
|
||||
|
||||
local dist = getDist(mov)
|
||||
if dist > 0 then
|
||||
active = active + movementcap(dist)
|
||||
end
|
||||
end
|
||||
|
||||
--update movement
|
||||
global.Superhot.playermovement[player.index] = newpos
|
||||
|
||||
--update max
|
||||
if active > activeMax then
|
||||
activeMax = active
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local goal = activeMax/100.0
|
||||
local diff = goal - game.speed
|
||||
|
||||
-- make acceleration smoother
|
||||
if diff > 0.2 or diff < -0.2 then
|
||||
diff = diff / 2.0
|
||||
end
|
||||
goal = game.speed + diff
|
||||
|
||||
--clip to upper and lower bound
|
||||
if goal < 0.1 then
|
||||
goal = 0.1
|
||||
elseif goal > 10 then
|
||||
goal = 10
|
||||
end
|
||||
|
||||
--actually set it
|
||||
game.speed = goal
|
||||
end
|
||||
)
|
||||
|
||||
-- spped modifyer: game.speed=1
|
||||
-- freeze time: game.player.surface.freeze_daytime=true
|
||||
|
||||
-- defines.events.on_pre_player_mined_item
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"name": "Superhot",
|
||||
"version": "0.1.0",
|
||||
"title": "SuperHot",
|
||||
"author": "MrBesen",
|
||||
"contact": "https://git.mrbesen.de/mrbesen/superhot/issues",
|
||||
"homepage": "https://git.mrbesen.de/mrbesen/superhot",
|
||||
"factorio_version": "0.17",
|
||||
"dependencies": ["base >= 0.17"],
|
||||
"description": "Time runs as fast as you run."
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/bash
|
||||
cd ../ && zip Superhot/Superhot_0.1.0.zip -r Superhot/*.lua Superhot/info.json && cp -f Superhot_0.1.0.zip ~/.factorio/mods/ && echo "Done."
|
Binary file not shown.
Loading…
Reference in New Issue