# Upstream definitions
- type: entity
  parent: [ MobSiliconBase, BaseVehicle]
  id: MobSiliconBaseVehicle # for vehicles
  abstract: true
  components:
  - type: NoSlip
  - type: GhostTakeoverAvailable
  - type: GhostRole
    makeSentient: true
  - type: UnpoweredFlashlight
  - type: PointLight
    enabled: false
    radius: 3.5
    softness: 2
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true

- type: entity
  parent: MobSiliconBaseVehicle
  id: MobTaxiBot
  name: taxibot
  description: Need a ride?
  components:
  - type: Sprite
    sprite: Mobs/Silicon/Bots/taxibot.rsi
    layers:
    - state: taxibot
      map: ["enum.VehicleVisualLayers.AutoAnimate"]
  - type: GhostRole
    name: ghost-role-information-taxibot-name
    description: ghost-role-information-taxibot-description
    rules: ghost-role-information-nonantagonist-rules # Frontier?
  - type: Strap
    buckleOffset: "0, 0"
    unbuckleDistanceSquared: 0.09 # Frontier: (30 cm)^2 - seems unnecessary, but for consistency with vehicles
  - type: Construction
    graph: TaxiBot
    node: bot
  - type: VehicleHorn # Frontier: beep beep

# Frontier
- type: entity
  parent: MobSiliconBaseVehicle
  id: MobHoverTaxiBot
  name: hovertaxibot
  description: Need a ride? IN SPAAAAACE!
  components:
  - type: Sprite
    sprite: _NF/Mobs/Silicons/Bots/hovertaxibot.rsi
    layers:
    - state: hull
    - state: engines
      map: ["enum.VehicleVisualLayers.AutoAnimate"]
      shader: unshaded
    - state: unshaded
      shader: unshaded
  - type: GhostRole
    name: ghost-role-information-hovertaxibot-name
    description: ghost-role-information-hovertaxibot-description
    rules: ghost-role-information-nonantagonist-rules
  - type: MovementIgnoreGravity
  - type: MovementAlwaysTouching
  - type: CanMoveInAir
  - type: Strap
    buckleOffset: "0, 0"
    unbuckleDistanceSquared: 0.09 # (30 cm)^2 - seems unnecessary, but for consistency with vehicles
  - type: MovementSpeedModifier # Matches a hoverbike
    baseAcceleration: 2
    baseFriction: 1.5
    baseWalkSpeed: 4.5
    baseSprintSpeed: 7
  - type: Construction
    graph: HoverTaxiBot
    node: bot
  - type: UserInterface
    interfaces:
      enum.RadarConsoleUiKey.Key:
        type: RadarConsoleBoundUserInterface
  - type: IntrinsicUI
    uis:
      enum.RadarConsoleUiKey.Key:
        toggleAction: ActionObserverShowRadar
  - type: RadarConsole
    followEntity: true
  - type: VehicleHorn

- type: entity
  parent:
  - MobCleanBot
  - BaseC3SyndicateContrabandNoValue
  - NFBaseMobRestrictions
  id: MobCleanBotSyndie
  name: syndicate cleanbot
  description: The creep of automation now threatening space janitors with a knife.
  components:
  - type: NpcFactionMember
    factions:
    - NFSyndicate
  - type: Sprite
    sprite: _NF/Mobs/Silicons/Bots/syndicatecleanbot.rsi
  - type: HTN
    rootTask:
      task: CleanbotCompound
  - type: NFSalvageMobRestrictions
    despawnIfOffLinkedGrid: false
    addComponentsOnDeath: []
    removeComponentsOnDeath: []
