Skip to content

Movement

Carmina16 edited this page May 2, 2018 · 3 revisions

Camera height

  • 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

Falling and climbing

  • Fall speed: 2^(2+(frame/2)), player is attracted to the block center by 16 units/frame.
  • Climbing speed: 6

Jumping

  • 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).

Speed

  • Base speed: (((pc.attr[SPEED]*20)/256)*(256-pc.encumbranceMod))/256 + 20
  • Speed: baseSpeed
  • Turn speed: baseSpeed/2 + 13
  • NPC speed: baseSpeed calculated w/o encumbranceMod

Movement

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
Clone this wiki locally