# TDGS MOVEMENT & POSITIONING - AI REFERENCE
Document 14 | Structured specification for AI parsing
## DISTANCE SYSTEM (HYBRID)
GRID_SYSTEM:
unit: "square" // Abstract unit
scale: "1 MOV = 1 square"
content_defines: "real-world scale (e.g., 5 feet, 1.5 meters)"
diagonal_cost: 1 // Not 1.5, gameplay > geometry
RANGE_BANDS:
adjacent: {squares: "0-1", description: "Touching, melee range"}
near: {squares: "2-4", description: "Close, easy reach"}
far: {squares: "5-10", description: "Ranged combat distance"}
distant: {squares: "11+", description: "Long range"}
MOV_TO_BANDS:
mov_6_or_less: 1 band per Move
mov_7_to_12: 2 bands per Move
mov_13_plus: 3 bands per Move
MEASUREMENT_UNITS_NOTE:
engine_unit: "square"
content_examples: [
"1 square = 5 feet (fantasy)",
"1 square = 1.5 meters (metric)",
"1 square = 2 meters (sci-fi)"
]
weight_unit: "WU (Weight Unit)"
see_also: "Document 15 (Equipment & Slots)"## MOVEMENT ACTIONS
MOVE_ACTION:
cost: "Action"
distance: "Up to MOV squares"
STEP:
cost: "Free action"
distance: 1 // Always 1 square
terrain_affected: false
triggers_opportunity_attack: true
## TERRAIN
TERRAIN_TYPES:
normal:
movement: "Full MOV"
difficult:
movement: "Half MOV (round down)"
examples: ["mud", "rubble", "undergrowth", "shallow water"]
very_difficult:
movement: "Quarter MOV (round down)"
examples: ["deep snow", "dense jungle", "waist-deep water"]
hazardous:
movement: "Varies"
effect: "Damage on entry or start of turn"
damage: "Defined by content"
examples: ["fire", "acid pools", "spike traps"]
blocking:
movement: "Cannot pass"
blocks_los: true
examples: ["walls", "boulders", "closed doors"]
obscuring:
movement: "Normal"
blocks_los: true
examples: ["fog", "smoke", "magical darkness"]## LINE OF SIGHT
LINE_OF_SIGHT:
method: "Center to center"
clear: "Can see/target"
blocked: "Cannot see/target"
blocked_by: ["blocking terrain", "obscuring terrain"]## ADJACENCY
ADJACENCY:
definition: "Within 1 square"
includes_diagonals: true
adjacent_squares: 8 // Ring around entity## WEAPON RANGE
WEAPON_RANGE:
melee:
optimal: "Adjacent"
extended: null
maximum: "Adjacent"
reach:
optimal: ["Adjacent", "Near"]
extended: null
maximum: "Near"
opportunity_attack_range: ["Adjacent", "Near"]
thrown:
optimal: "Near"
extended: "Far"
extended_penalty: -2
maximum: "Far"
ranged:
optimal: "Far"
extended: "Distant"
extended_penalty: -2
maximum: "Distant"
long_range:
optimal: "Distant"
extended: null
maximum: "Distant"## COVER
COVER:
partial:
obscured: "25-50%"
bonus: "+2 REF"
half:
obscured: "50-75%"
bonus: "+4 REF"
full:
obscured: "75%+"
effect: "Untargetable"
applies_to: "Ranged attacks"
note: "Melee attackers are adjacent - cover doesn't help"## OPPORTUNITY ATTACKS
OPPORTUNITY_ATTACK:
trigger: "Leaving adjacent square of hostile entity"
attack_type: "One free melee attack"
resolution: "STR vs REF (normal attack)"
timing: "Before movement completes"
limit: "One per triggering movement"
AVOIDANCE:
step:
distance: 1
triggers_oa: false
REACH_WEAPONS:
threat_range: ["Adjacent", "Near"]
oa_trigger: "Leaving Adjacent OR Near"## FLANKING AND SURROUNDED
POSITIONAL_BONUSES:
flanking:
requirement: "2 allies on opposite sides of enemy"
condition: "Both adjacent, straight line through target"
bonus: "+2 to hit"
surrounded:
requirement: "3+ adjacent enemies"
bonus: "+4 to hit"
overwhelmed:
requirement: "5+ adjacent enemies"
bonus: "+6 to hit"## HIGH GROUND (OPTIONAL)
HIGH_GROUND:
optional: true
requirement: "Higher elevation than target"
bonus: "+2 to hit"## FALLING
FALLING:
damage: "1d6 per 2 squares"
cap: "10d6 (20 squares)"
reduction: "Content decides (skills, abilities)"
FALLING_TABLE: // Squares are engine unit; feet are content example
2_squares: {damage: "1d6", example_5ft: "10 feet"}
4_squares: {damage: "2d6", example_5ft: "20 feet"}
10_squares: {damage: "5d6", example_5ft: "50 feet"}
20_plus_squares: {damage: "10d6 (capped)", example_5ft: "100+ feet"}## FORCED MOVEMENT
FORCED_MOVEMENT:
push:
effect: "Move target X squares directly away from you"
pull:
effect: "Move target X squares directly toward you"
slide:
effect: "Move target X squares in any direction"
triggers_opportunity_attack: false
note: "Not choosing to leave - being moved"## SUMMARY: ALL POSITIONAL MODIFIERS
ATTACK_MODIFIERS:
flanking: +2
surrounded_3_plus: +4
overwhelmed_5_plus: +6
high_ground: +2 // Optional rule
extended_range: -2
DEFENSE_MODIFIERS:
partial_cover: "+2 REF"
half_cover: "+4 REF"
full_cover: "Untargetable"## KEY CONSTANTS
MOVEMENT_CONSTANTS:
step_distance: 1
diagonal_cost: 1
distance_unit: "square" // Abstract, content defines scale
TERRAIN_MULTIPLIERS:
normal: 1.0
difficult: 0.5
very_difficult: 0.25
FALLING_CONSTANTS:
damage_per_2_squares: "1d6"
max_damage: "10d6"
max_distance: 20 // squares
COVER_BONUSES:
partial: 2
half: 4
full: "untargetable"
POSITIONAL_BONUSES:
flanking: 2
surrounded: 4
overwhelmed: 6
high_ground: 2## DESIGN NOTES
DESIGN_PRINCIPLES:
- Hybrid distance supports both grid and theater-of-mind
- Diagonal costs 1 (gameplay > geometry)
- Square is abstract unit; content defines scale
- Opportunity attacks create sticky melee engagement
- Cover bonuses offset flanking bonuses (natural counters)
- Forced movement never triggers OA (you're not choosing to leave)
- Falling caps at 10d6 (terminal velocity)
- Weight uses WU (Weight Unit), distance uses squares