vehicles: a kind's numbers are a VehicleSpec the game hands over (vehicles_spec), not constants
The seat height, the horse's walk, gallop, acceleration and turn (VE_HORSE_*), its stamina (a gallop over 6 m/s spends 6 a second, a walk gives back 3, 5 needed to gallop) and hay (0.02 a metre, VEHICLE_HAY_MIN), the boat's stroke, turn and wind (VE_ROW, VE_ROW_TURN, VE_WIND) and where a rider gets off (the horse's 1.2 m flank, the boat's 1.25 m wade) move into VehicleSpec (spec.ludic), held per kind in VehiclesState.ve_specs and kept across a reset. vehicles_spec(kind, spec) sets one, vehicle_spec(kind) asks it; a kind with no spec cannot be called. VEHICLE_HORSE and VEHICLE_BOAT stay the kinds. The tests hand Maroon Lake's numbers in, and a new one holds a spec's walk and seat_h. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
a87f20c66e
commit
668a9ecf69
10 changed files with 137 additions and 34 deletions
|
|
@ -3,17 +3,17 @@
|
|||
@alloc_ok("a player's own boat or horse, made the first time it is called and fetched after")
|
||||
function ve_add(vehicles_st: VehiclesState, kind: int, owner: int, x: float, z: float, yaw: float) -> Vehicle {
|
||||
if kind != VEHICLE_HORSE and kind != VEHICLE_BOAT { return null }
|
||||
let spec = vehicle_spec(vehicles_st, kind)
|
||||
if spec == null { return null }
|
||||
let v = new Vehicle
|
||||
v.nid = VehicleWorld.next_id()
|
||||
v.kind = kind
|
||||
v.owner = owner
|
||||
v.yaw = yaw
|
||||
v.seat_h = spec.seat_h
|
||||
if kind == VEHICLE_HORSE {
|
||||
v.seat_h = 1.35
|
||||
v.fuel = 100.0
|
||||
v.food = 40.0
|
||||
} else {
|
||||
v.seat_h = 0.30
|
||||
}
|
||||
ve_put(v, x, z)
|
||||
ve_file(vehicles_st.ve, v)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue