-
Notifications
You must be signed in to change notification settings - Fork 68
Movement
Carmina16 edited this page May 2, 2018
·
3 revisions
- Normal: 60
- Levitating: 68 to 76, in sawtooth manner, 2 units per frame (?)
- In a chasm: -80
- Swimming, interior: -25
- Swimming, interior, boat: -10
- Swimming, cities: -50
- Swimming, wilderness: -10
- Swimming, wilderness, boat: -1
- Fall speed:
2^(2+(frame/2))
, player is attracted to the block center by 16 units/frame. - Climbing speed: 6
- When in boat, leave boat instead (spawn boat at player location)
- Impossible to jump if camera height < 60, or over chasm of any type
- Impossible to jump during jumping or levitation
- Jump duration is 10 frames, twice as long for Acrobats (i.e.
n
is increased each other frame) - Standing jump adds forward movement for at least 30 units (or the current speed).
The actual movement per frame is
(dist*pc.attr[STRENGTH])/128
. - Jump vertical distance per frame is
10-(2*n)
.
- Base speed:
(((pc.attr[SPEED]*20)/256)*(256-pc.encumbranceMod))/256 + 20
- Speed:
baseSpeed
- Turn speed:
baseSpeed/2 + 13
- NPC speed:
baseSpeed
calculated w/oencumbranceMod
Forward/backward/left/right
dist <- speed
if backward then dist <- dist / 2
if pc.swimming and not pc.inBoat then
if pc.race == ARGONIAN then dist <- dist / 2 else dist <- dist / 4
endif
pc.move(<corresponding angle>, dist * speedMod)
endif
speedMod
is a proportion of the click location to the movement screen zone.
Keyboard movement simulates clicks at 0, X=316, and Y=144 correspondingly.
On each forward/backward movement frame, acceleration
increases by 32 to the maximal value of 256. After movement ends, acceleration
decreases by 64 each frame, and the character keeps moving until it is positive. acceleration
affect the distance as (acceleration * dist)/256
.
Turning
if pc.paralyzed then return
delta <- turnSpeed
if pc.swimming and not pc.race == ARGONIAN then delta <- delta / 2
pc.angle <- pc.angle ± delta * speedMod