Files
Ben10OmintrixandGitHub 173185ea9a [no gbp] few repairbot fixes and some beacon pathing improvements. (#88144)
## About The Pull Request
this fixes some few sentient repairbot-related issues that were reported
a few days ago. ive also given sentient repairbots a new simple UI to
manage their materials.

![image](https://github.com/user-attachments/assets/bc269769-439e-4aa8-82ca-e433c031fbec)

while I was at it, i also fixed bots continuously trying to path to
unreachable beacons, which can be quite costly since they're regularly
very far away.

## Why It's Good For The Game
closes #88067

## Changelog
🆑
fix: repairbots no longer get flashed by their own welder
fix: repairbots no longer break glass tables they step on
fix: repairbots can no longer flush their own welders
fix: fixes some runtimes when emagged repairbots try to deconstruct
things
fix: fixes sentient repairbots not being able to see or remove their
material counts
/🆑
2024-11-27 11:29:20 -07:00

185 lines
6.8 KiB
Plaintext

//bitfield defines
///can honkbots slip people?
#define HONKBOT_MODE_SLIP (1<<0)
///can honkbots check IDs?
#define HONKBOT_CHECK_IDS (1<<1)
///can honkbots check records?
#define HONKBOT_CHECK_RECORDS (1<<2)
///can honkbots handcuff people?
#define HONKBOT_HANDCUFF_TARGET (1<<3)
DEFINE_BITFIELD(honkbot_flags, list(
"CAN_SLIP" = HONKBOT_MODE_SLIP,
"CHECK_IDS" = HONKBOT_CHECK_IDS,
"CHECK_RECORDS" = HONKBOT_CHECK_RECORDS,
"CAN_FAKE_CUFF" = HONKBOT_HANDCUFF_TARGET,
))
///can we fix breaches
#define REPAIRBOT_FIX_BREACHES (1<<0)
///can we fix grilles
#define REPAIRBOT_REPLACE_WINDOWS (1<<1)
///can we replace tiles
#define REPAIRBOT_REPLACE_TILES (1<<2)
///can we fix girders
#define REPAIRBOT_FIX_GIRDERS (1<<3)
///can we build girders
#define REPAIRBOT_BUILD_GIRDERS (1<<4)
DEFINE_BITFIELD(repairbot_flags, list(
"FIX_BREACHES" = REPAIRBOT_FIX_BREACHES,
"REPLACE_WINDOWS" = REPAIRBOT_REPLACE_WINDOWS,
"REPLACE_TILES" = REPAIRBOT_REPLACE_TILES,
"FIX_GIRDERS" = REPAIRBOT_FIX_GIRDERS,
"BUILD_GIRDERS" = REPAIRBOT_BUILD_GIRDERS,
))
// bot keys
///The first beacon we find
#define BB_BEACON_TARGET "beacon_target"
///The last beacon we found, we will use its codes to find the next beacon
#define BB_PREVIOUS_BEACON_TARGET "previous_beacon_target"
///Location of whoever summoned us
#define BB_BOT_SUMMON_TARGET "bot_summon_target"
///salute messages to beepsky
#define BB_SALUTE_MESSAGES "salute_messages"
///the beepsky we will salute
#define BB_SALUTE_TARGET "salute_target"
///our announcement ability
#define BB_ANNOUNCE_ABILITY "announce_ability"
///list of our radio channels
#define BB_RADIO_CHANNEL "radio_channel"
///list of unreachable things we will temporarily ignore
#define BB_TEMPORARY_IGNORE_LIST "temporary_ignore_list"
///penalty cooldown if we are unable to path to any beacons
#define BB_BOT_BEACON_COOLDOWN "bot_beacon_cooldown"
// medbot keys
///the patient we must heal
#define BB_PATIENT_TARGET "patient_target"
///list holding our wait dialogue
#define BB_WAIT_SPEECH "wait_speech"
///what we will say to our patient after we heal them
#define BB_AFTERHEAL_SPEECH "afterheal_speech"
///things we will say when we are bored
#define BB_IDLE_SPEECH "idle_speech"
///speech unlocked after being emagged
#define BB_EMAGGED_SPEECH "emagged_speech"
///speech when we are tipped
#define BB_WORRIED_ANNOUNCEMENTS "worried_announcements"
///speech when our patient is near death
#define BB_NEAR_DEATH_SPEECH "near_death_speech"
///in crit patient we must alert medbay about
#define BB_PATIENT_IN_CRIT "patient_in_crit"
///how much time interval before we clear list
#define BB_UNREACHABLE_LIST_COOLDOWN "unreachable_list_cooldown"
///can we clear the list now
#define BB_CLEAR_LIST_READY "clear_list_ready"
// cleanbots
///key that holds the foaming ability
#define BB_CLEANBOT_FOAM "cleanbot_foam"
///key that holds decals we hunt
#define BB_CLEANABLE_DECALS "cleanable_decals"
///key that holds blood we hunt
#define BB_CLEANABLE_BLOOD "cleanable_blood"
///key that holds pests we hunt
#define BB_HUNTABLE_PESTS "huntable_pests"
///key that holds emagged speech
#define BB_CLEANBOT_EMAGGED_PHRASES "emagged_phrases"
///key that holds drawings we hunt
#define BB_CLEANABLE_DRAWINGS "cleanable_drawings"
///Key that holds our clean target
#define BB_CLEAN_TARGET "clean_target"
///key that holds the janitor we will befriend
#define BB_FRIENDLY_JANITOR "friendly_janitor"
///key that holds the victim we will spray
#define BB_ACID_SPRAY_TARGET "acid_spray_target"
///key that holds trash we will burn
#define BB_HUNTABLE_TRASH "huntable_trash"
//hygienebots
///key that holds our threats
#define BB_WASH_THREATS "wash_threats"
///key that holds speech when we find our target
#define BB_WASH_FOUND "wash_found"
///key that holds speech when we cleaned our target
#define BB_WASH_DONE "wash_done"
///key that holds target we will wash
#define BB_WASH_TARGET "wash_target"
///key that holds how frustrated we are when target is running away
#define BB_WASH_FRUSTRATION "wash_frustration"
///key that holds cooldown after we finish cleaning something, so we dont immediately run off to patrol
#define BB_POST_CLEAN_COOLDOWN "post_clean_cooldown"
//Honkbots
///key that holds all possible clown friends
#define BB_CLOWNS_LIST "clowns_list"
///key that holds the clown we play with
#define BB_CLOWN_FRIEND "clown_friend"
///key that holds the list of slippery items
#define BB_SLIPPERY_ITEMS "slippery_items"
///key that holds list of types we will attempt to slip
#define BB_SLIP_LIST "slip_list"
///key that holds the slippery item we will drag people too
#define BB_SLIPPERY_TARGET "slippery_target"
///key that holds the victim we will slip
#define BB_SLIP_TARGET "slip_target"
///key that holds our honk ability
#define BB_HONK_ABILITY "honk_ability"
//firebot keys
///things we can extinguish
#define BB_FIREBOT_CAN_EXTINGUISH "can_extinguish"
///the target we will extinguish
#define BB_FIREBOT_EXTINGUISH_TARGET "extinguish_target"
///lines we say when we detect a fire
#define BB_FIREBOT_FIRE_DETECTED_LINES "fire_detected_lines"
///lines we say when we are idle
#define BB_FIREBOT_IDLE_LINES "idle_lines"
///lines we say when we are emagged
#define BB_FIREBOT_EMAGGED_LINES "emagged_lines"
//vibebots
///key that holds our partying ability
#define BB_VIBEBOT_PARTY_ABILITY "party_ability"
///key that holds our birthday song
#define BB_VIBEBOT_BIRTHDAY_SONG "birthday_song"
///key that holds happy songs we play to depressed targets
#define BB_VIBEBOT_HAPPY_SONG "happy_song"
///key that holds grim song we play when emagged
#define BB_VIBEBOT_GRIM_SONG "GRIM_song"
///key that holds neutral targets we vibe with
#define BB_VIBEBOT_PARTY_TARGET "party_target"
///key that holds our instrument
#define BB_VIBEBOT_INSTRUMENT "instrument"
//repairbots
///key that holds the floor we should tile over
#define BB_TILELESS_FLOOR "tileless_floor"
///key that holds the turf we should place a girder over
#define BB_GIRDER_TARGET "girder_target"
///key that holds the girder we should place a wall over
#define BB_GIRDER_TO_WALL_TARGET "girder_to_wall"
///key that holds the grille we must fix
#define BB_WINDOW_FRAMETARGET "grille_target"
///key that holds the machinery we repair with a welder
#define BB_WELDER_TARGET "welder_target"
///our wall girder ability
#define BB_GIRDER_BUILD_ABILITY "girder_build_ability"
///key that holds breached floors we should repair
#define BB_BREACHED_FLOOR "breached_floor"
///key that holds our emagged speech
#define BB_REPAIRBOT_EMAGGED_SPEECH "emagged_speech"
///key that holds our normal speech
#define BB_REPAIRBOT_NORMAL_SPEECH "normal_speech"
///key that holds the thing we should deconstruct
#define BB_DECONSTRUCT_TARGET "deconstruct_target"
///key that holds our speech timer
#define BB_REPAIRBOT_SPEECH_COOLDOWN "speech_cooldown"
///key that holds our target borg
#define BB_ROBOT_TARGET "robot_target"
///key that holds materials we can refill
#define BB_REFILLABLE_TARGET "refillable_target"