mirror of
https://github.com/afritz1/OpenTESArena.git
synced 2026-09-11 12:56:41 +02:00
Page:
Movement
Pages
Character Generation
Chasms
City Generation
Combat
Dialogue
Diseases
Dungeon Generation
Home
Interiors
Items
Light levels
Loot
Movement
NPCs
Name generation
Player stats
Resting
Save File Formats
Services
Shops
Sky behavior
Skybox
Spellmaker
Spells
Thieving
Time and Calendar
Timing
Travel
User interface
Weather
Wilderness
No results
3
Movement
Carmina16 edited this page 2018-05-02 19:30:15 +07:00
Table of contents
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.
nis 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:
baseSpeedcalculated w/oencumbranceMod
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