mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 19:47:22 +01:00
The Divine Flock - DaedalusDock Flockmind Port (#31984)
* Initial commit - FLOCKMIND - Probably has like a billion things to fix * Do after conversions * Config * Moved the files, icon fixes * Tick everything, language work, event, spawn landmark, role prefs, beginning mob port * Spans and some other fixes. Also the tickening * More tickening * More fixes. Lots of fixes. * More Fixes * A whole lot more. Also flock TGUI. * Fixes fixes fixes fixes fixes * FIXES * More fixes - PR ready, still needs a fuckton of testing * Fixes * fix incomplete upstream merge * fix FlockPanel + sort button name * TGUI review * Fixes tealprint list * Fixes * More fixes * Incapacitator Fix * Filenames * Linters * Interceptor range buff * Reagent counts * Linters * Fabricator vendor fix * Keybinds and HUD - Flockdrones, Fixes Vendor Conversion, Cube Materials * Reworks reagent, adds flock grilles, fixes compute node overlays * Intent-based flockdrone parts * Intent based drone parts * Radial control panel for controlling drones manually, phasing through windows/grilles * Movement fixes * Radio talk power, stare fix * Flock health HUD * Fixes flock lights, linters * Unit tests * Adds countdown to relay * Relay improvements * Small fix * Logic Schmogic * Relay overlay and looping sound effect * Ignore air when converting turfs * Cage fixes and improvements * Improved flock bolt * Turret conversions * Flock bolts taze simple or basic mobs * Sentience type * Fixe * Linter * tgui review stage 2 * Concentrated Repair Burst * Improves radio detection * Removes extra space * Adds healing visual effect * Cube tech levels * Ghooost * Excess * Flock doors, chairs, lattices. Centralizes conversion code. Crafting with Gnesis * Update code/modules/antagonists/flockmind/ai_behaviors/flock_wander.dm Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com> Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> * Fixes the fix * Astar movement detection * Fix, extraneous code, language stuff * Language fixes and wander fix * Fixes * Another fix * Lints * Another linter * Language improvement * More language improvements * Time requirement and appearing in orbit menu as an antag * Cube glow * TGUI * Minicache * Linters * Grammar * Material ID fix * Lid fix * Reagent turf reaction * Reagent fix * Butcher results * Conversion rates * Flock stare fix * Fixes stare behavior * Staring * Flock mob blood * Flock mobs gibs and blood. Also some runtime fixes * Flock mobs now resist out of grabs, buckles, lockers, and more * Fixes flock orbit, fixes a runtime I think, * Target mechs, damage mechs, other bug fixes * Cage fix * Cage resist change * Some mind changes, gatecrash buff * Drones now shoot mechs, stare improvement * Cut down on spam a little * Nest fix * No more resist spam * Fixed drone death control * Resist statement * Makes the relay alarm scarier * Fixes dead flock camera mobs having no ghost sprite, something with ghosting * Enhanced flockphasing * Improved flockmob pathing * Added required turf restriction to relay * Increased needed bandwidth for relay construction * Nerfed drone substrate rate * Added new status tab items for relay progress * Another relay cost adjustment * Improves drone AI responsiveness * Computer frames now become flock computers * Improves target finding for conversion, building, and replicating * Reduced flock event pop requirements * Adjusts flock protection on structures. Adjusts overlays. * Relay unlock tweak * Fixwes flock being able to gib mech'd AIs with one button * Map conflict * Flock can no longer be outed by merely existing * Fied bug causing drones to shoot themselves * Prevents mobs from attacking while in a cage * Converter tool can now open closets and crates. * Adds descriptions to flockdrone tools. * More informatic blurbs * Adds xenobiology organs * Organ lint * TGUI merge * bundle and mm --------- Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Co-authored-by: Toastical <20125180+Toastical@users.noreply.github.com> Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
This commit is contained in:
co-authored by
Kapu1178
Toastical
Burzah
parent
ab05a4ee3a
commit
24845b238a
@@ -3,6 +3,13 @@
|
||||
#define HAS_AI_CONTROLLER_TYPE(thing, type) istype(thing?.ai_controller, type)
|
||||
|
||||
//AI controller flags
|
||||
|
||||
#ifdef DEBUG_AI
|
||||
#define DEBUG_AI_LOG(controller, message) if(controller.debug_focus) { to_chat(world, span_debug("AI DBG: [message]")) }
|
||||
#else
|
||||
#define DEBUG_AI_LOG(...)
|
||||
#endif
|
||||
|
||||
//If you add a new status, be sure to add it to the ai_controllers subsystem's ai_controllers_by_status list.
|
||||
/// The AI is currently active.
|
||||
#define AI_STATUS_ON "ai_on"
|
||||
@@ -51,6 +58,9 @@
|
||||
/// Does this behavior NOT block planning?
|
||||
#define AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION (1<<4)
|
||||
|
||||
/// Magic value to tell the G.O.A.P selector to ignore a behavior.
|
||||
#define AI_GOAP_SKIP_BEHAVIOR (-1000001)
|
||||
|
||||
// AI flags
|
||||
|
||||
/// Don't move if being pulled
|
||||
|
||||
@@ -22,6 +22,10 @@
|
||||
#define BB_BASIC_MOB_FLEE_DISTANCE "BB_BASIC_FLEE_DISTANCE"
|
||||
#define DEFAULT_BASIC_FLEE_DISTANCE 9
|
||||
|
||||
/// Path we should use next time we use the JPS movement datum
|
||||
#define BB_PATH_TO_USE "BB_path_to_use"
|
||||
/// Max path length we should use next time we use the JPS movement datum
|
||||
#define BB_PATH_MAX_LENGTH "BB_path_max_length"
|
||||
// Searching
|
||||
|
||||
/// key holding a range to look for stuff in
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
// Flockmind Keys]
|
||||
#define BB_FLOCK_STARE_TARGET "BB_flock_stare_target"
|
||||
#define BB_FLOCK_WANDERING "BB_flock_wandering"
|
||||
#define BB_FLOCK_STARE_CD "BB_flock_stare_cooldown"
|
||||
#define BB_FLOCK_CONVERT_TARGET "BB_flock_convert_target"
|
||||
#define BB_FLOCK_DECON_TARGET "BB_flock_decon_target"
|
||||
#define BB_FLOCK_HARVEST_TARGET "BB_flock_harvest_target"
|
||||
#define BB_FLOCK_WANDER_FRUSTRATION "BB_flock_wander_frustration"
|
||||
#define BB_FLOCK_HEAL_TARGET "BB_flock_heal_target"
|
||||
#define BB_FLOCK_HEAL_FRUSTRATION "BB_flock_heal_frustation"
|
||||
#define BB_FLOCK_REPLICATE_TARGET "BB_flock_replicate_target"
|
||||
#define BB_FLOCK_NEST_TARGET "BB_flock_nest_target"
|
||||
#define BB_FLOCK_OVERMIND_CONTROL "BB_flock_overmind_control"
|
||||
#define BB_FLOCK_CONTAINER_TARGET "BB_flock_container_target"
|
||||
#define BB_FLOCK_RUMMAGE_TARGET "BB_flock_rummage_target"
|
||||
#define BB_FLOCK_CAPTURE_TARGET "BB_flock_capture_target"
|
||||
#define BB_FLOCK_ATTACK_TARGET "BB_flock_attack_target"
|
||||
#define BB_FLOCK_ATTACK_COOLDOWN "BB_flock_attack_cooldown"
|
||||
#define BB_FLOCK_ATTACK_RUN_COOLDOWN "BB_flock_attack_run_cooldown"
|
||||
#define BB_FLOCK_ATTACK_STRAFE_COOLDOWN "BB_flock_attack_strafe_cooldown"
|
||||
#define BB_FLOCK_ATTACK_FRUSTRATION "BB_flock_attack_frustration"
|
||||
#define BB_FLOCK_DEPOSIT_TARGET "BB_flock_deposit_target"
|
||||
@@ -120,6 +120,7 @@
|
||||
|
||||
#define COLOR_BLOOD_BASE "#A10808"
|
||||
#define COLOR_BLOOD_MACHINE "#1F181F"
|
||||
#define COLOR_BLOOD_FLOCK "#4d736d"
|
||||
#define COLOR_BLOOD_XENO "#05EE05"
|
||||
|
||||
// Pipe colours
|
||||
|
||||
@@ -85,6 +85,8 @@
|
||||
#define MAT_IRIDIUM "iridium"
|
||||
#define MAT_SILK "silk"
|
||||
#define MAT_CARDBOARD "cardboard"
|
||||
#define MAT_GNESIS "gnesis"
|
||||
#define MAT_GNESIS_GLASS "gnesisglass"
|
||||
|
||||
/// The amount of materials you get from a sheet of mineral like iron/diamond/glass etc
|
||||
#define MINERAL_MATERIAL_AMOUNT 2000
|
||||
|
||||
@@ -20,3 +20,6 @@
|
||||
#define COMSIG_AI_CONTROLLER_PICKED_BEHAVIORS "ai_controller_picked_behaviors"
|
||||
///sent from ai controllers when they stop possessing a pawn: (datum/ai_controller/source_controller)
|
||||
#define COMSIG_AI_CONTROLLER_UNPOSSESSED_PAWN "ai_controller_unpossessed_pawn"
|
||||
|
||||
/// Signal sent when a mob's AI turns on or off.
|
||||
#define COMSIG_AI_STATUS_CHANGE "ai_status_change"
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
#define COMSIG_MOVELOOP_POSTPROCESS "moveloop_postprocess"
|
||||
//from [/datum/move_loop/has_target/jps/recalculate_path] ():
|
||||
#define COMSIG_MOVELOOP_JPS_REPATH "moveloop_jps_repath"
|
||||
//from [/datum/move_loop/has_target/astar/recalculate_path] ():
|
||||
#define COMSIG_MOVELOOP_ASTAR_REPATH "moveloop_astar_repath"
|
||||
///From base of /datum/move_loop/process() after attempting to move a movable: (datum/move_loop/loop, old_dir)
|
||||
#define COMSIG_MOVABLE_MOVED_FROM_LOOP "movable_moved_from_loop"
|
||||
///from [/datum/move_loop/has_target/jps/on_finish_pathing]
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
#define COMSIG_FLOCK_PROTECTION_TRIGGER "comsig_flock_protection_trigger"
|
||||
#define COMPONENT_FLOCK_DENY_ATTACK (1<<0)
|
||||
|
||||
#define COMSIG_TURF_CLAIMED_BY_FLOCK "comsig_turf_claimed_by_flock"
|
||||
@@ -148,6 +148,8 @@
|
||||
#define PASSGIRDER (1<<8)
|
||||
#define PASSTAKE (1<<9)
|
||||
#define PASSBARRICADE (1<<10)
|
||||
/// Pass through flock objects and mobs
|
||||
#define PASSFLOCK (1<<11)
|
||||
|
||||
//turf-only flags, under the flags variable
|
||||
#define BLESSED_TILE (1<<0)
|
||||
@@ -185,8 +187,9 @@
|
||||
#define ZAP_MOB_DAMAGE (1<<3)
|
||||
#define ZAP_MOB_STUN (1<<4)
|
||||
#define ZAP_GENERATES_POWER (1<<5)
|
||||
#define ZAP_NO_COOLDOWN (1<<6)
|
||||
|
||||
#define ZAP_DEFAULT_FLAGS (ZAP_MOB_STUN | ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE)
|
||||
#define ZAP_DEFAULT_FLAGS (ZAP_MOB_STUN | ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_NO_COOLDOWN)
|
||||
#define ZAP_FUSION_FLAGS (ZAP_OBJ_DAMAGE | ZAP_MOB_DAMAGE | ZAP_MOB_STUN)
|
||||
#define ZAP_SUPERMATTER_FLAGS (ZAP_GENERATES_POWER)
|
||||
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
#define FLOCK_TYPE_OVERMIND "overmind"
|
||||
#define FLOCK_TYPE_TRACE "trace"
|
||||
#define FLOCK_TYPE_DRONE "drone"
|
||||
#define FLOCK_TYPE_BIT "bit"
|
||||
|
||||
// Turf reserved by a flockdrone
|
||||
#define FLOCK_NOTICE_RESERVED "reserved"
|
||||
// Turf marked for conversion
|
||||
#define FLOCK_NOTICE_PRIORITY "priority"
|
||||
// Mob marked as enemy
|
||||
#define FLOCK_NOTICE_ENEMY "enemy"
|
||||
// Mob marked as ignored
|
||||
#define FLOCK_NOTICE_IGNORE "ignore"
|
||||
// Flockdrone under flocktrace control
|
||||
#define FLOCK_NOTICE_FLOCKTRACE_CONTROL "flocktrace_control"
|
||||
// Flockdrone under overmind control
|
||||
#define FLOCK_NOTICE_FLOCKMIND_CONTROL "flockmind_control"
|
||||
// Flockdrone health bars
|
||||
#define FLOCK_NOTICE_HEALTH "flock_health"
|
||||
// Atom marked for deconstruction
|
||||
#define FLOCK_NOTICE_DECONSTRUCT "flock_deconstruct"
|
||||
|
||||
#define FLOCK_UI_DRONES "drones"
|
||||
#define FLOCK_UI_TRACES "traces"
|
||||
#define FLOCK_UI_ENEMIES "enemies"
|
||||
#define FLOCK_UI_STRUCTURES "structures"
|
||||
|
||||
#define FLOCK_COMPUTE_COST_FLOCKTRACE 100
|
||||
#define FLOCK_COMPUTE_COST_DRONE 10
|
||||
#define FLOCK_COMPUTE_COST_RELAY 750
|
||||
|
||||
#define FLOCK_TURFS_FOR_RELAY 250
|
||||
|
||||
/// Amount of substrate to add to a tealprint.
|
||||
#define FLOCK_SUBSTRATE_COST_DEPOST_TEALPRINT 10
|
||||
/// Amount to convert a turf and it's contents.
|
||||
#define FLOCK_SUBSTRATE_COST_CONVERT 20
|
||||
/// Amount to repair a flock construct.
|
||||
#define FLOCK_SUBSTRATE_COST_REPAIR 10
|
||||
/// BASE amount to lay an egg.
|
||||
#define FLOCK_SUBSTRATE_COST_LAY_EGG 100
|
||||
|
||||
/// Egg cost does not start scaling until there are this many drones.
|
||||
#define FLOCK_MIN_DESIRED_POP 10
|
||||
/// Each drone above the min desired pop adds this much to the substrate required to be able to lay an egg.
|
||||
#define FLOCK_ADDITIONAL_RESOURCE_RESERVATION_PER_DRONE 8
|
||||
#define FLOCK_DRONE_LIMIT 50
|
||||
|
||||
#define FLOCK_ENDGAME_LOST 1
|
||||
#define FLOCK_ENDGAME_RELAY_BUILT 2
|
||||
#define FLOCK_ENDGAME_RELAY_ACTIVATING 3
|
||||
#define FLOCK_ENDGAME_VICTORY 4
|
||||
|
||||
/// The list of behaviors for the planners to select from. THIS IS ACTUALLY A SUBKEY!
|
||||
#define BB_PLANNER_BEHAVIORS "BB_planner_behaviors"
|
||||
|
||||
// G.O.A.P weights for flock behaviors, for easy comparison/adjustment.
|
||||
#define FLOCK_BEHAVIOR_WEIGHT_WANDER 1
|
||||
#define FLOCK_BEHAVIOR_WEIGHT_STARE 1
|
||||
#define FLOCK_BEHAVIOR_WEIGHT_CONVERT 1
|
||||
#define FLOCK_BEHAVIOR_WEIGHT_HARVEST 2
|
||||
#define FLOCK_BEHAVIOR_WEIGHT_OPEN_CONTAINER 3
|
||||
#define FLOCK_BEHAVIOR_WEIGHT_RUMMAGE 3
|
||||
#define FLOCK_BEHAVIOR_WEIGHT_REPAIR 4
|
||||
#define FLOCK_BEHAVIOR_WEIGHT_NEST 6
|
||||
#define FLOCK_BEHAVIOR_WEIGHT_REPLICATE 7
|
||||
#define FLOCK_BEHAVIOR_WEIGHT_DECONSTRUCT 8
|
||||
#define FLOCK_BEHAVIOR_WEIGHT_DEPOSIT 8
|
||||
#define FLOCK_BEHAVIOR_WEIGHT_SHOOT 10
|
||||
#define FLOCK_BEHAVIOR_WEIGHT_CAPTURE 15
|
||||
@@ -67,6 +67,7 @@
|
||||
#define SPECIAL_ROLE_HERETIC "Heretic"
|
||||
#define SPECIAL_ROLE_EVENTMISC "Event Role"
|
||||
#define SPECIAL_ROLE_NINJA "Space Ninja"
|
||||
#define SPECIAL_ROLE_FLOCK "Divine Flock"
|
||||
#define SPECIAL_ROLE_IRRADIATED_MOUSE "Irradiated Mouse"
|
||||
|
||||
// Constants used by code which checks the status of nuclear blasts during a
|
||||
|
||||
@@ -31,6 +31,22 @@
|
||||
|
||||
#define isalienqueen(A) (istype(A, /mob/living/carbon/alien/humanoid/queen))
|
||||
|
||||
#define isaicamera(A) (istype(A, /mob/camera/ai_eye))
|
||||
|
||||
#define isflockmob(A) (istype(A, /mob/camera/flock) || istype(A, /mob/living/basic/flock))
|
||||
|
||||
#define isflockdrone(A) (istype(A, /mob/living/basic/flock/drone))
|
||||
|
||||
#define isflockbit(A) (istype(A, /mob/living/basic/flock/bit))
|
||||
|
||||
#define isflocktrace(A) (istype(A, /mob/camera/flock/trace))
|
||||
|
||||
#define isflockmind(A) (istype(A, /mob/camera/flock/overmind))
|
||||
|
||||
#define isflockcontroller(A) (isflockmind(A) || isflocktrace(A))
|
||||
|
||||
#define isflockworker(A) (isflockdrone(A) || isflockbit(A))
|
||||
|
||||
// Simple animals
|
||||
|
||||
#define isanimal(A) (istype(A, /mob/living/simple_animal))
|
||||
@@ -134,6 +150,8 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list(
|
||||
|
||||
#define is_ancient_rock(A) (istype(A, /turf/simulated/mineral/ancient))
|
||||
|
||||
#define isflockturf(A) (istype(A, /turf/simulated/floor/flock) || istype(A, /turf/simulated/wall/flock))
|
||||
|
||||
// Areas
|
||||
//#define isarea(A, B, C...) BYOND proc, can test multiple arguments and only return TRUE if all are areas
|
||||
|
||||
|
||||
@@ -133,6 +133,8 @@
|
||||
#define FLOOR_OPENSPACE_PLANE 22
|
||||
#define OPENSPACE_LAYER 22
|
||||
|
||||
#define INFO_TAG_PLANE 23
|
||||
|
||||
#define BYOND_LIGHTING_PLANE 24
|
||||
#define BYOND_LIGHTING_LAYER 24
|
||||
|
||||
|
||||
@@ -190,6 +190,8 @@
|
||||
#define SHOCK_ILLUSION (1<<2)
|
||||
///The shock doesn't stun.
|
||||
#define SHOCK_NOSTUN (1<<3)
|
||||
/// Shock damage is reduced by the average siemen's coeff
|
||||
#define SHOCK_USE_AVG_SIEMENS (1 << 4)
|
||||
|
||||
#define POCKET_STRIP_DELAY 4 SECONDS //time taken to search somebody's pockets
|
||||
|
||||
@@ -233,6 +235,9 @@
|
||||
|
||||
#define DIRECTION_LOCK_SLOWDOWN 3
|
||||
|
||||
// Helpers
|
||||
#define DOING_INTERACTION(user, interaction_key) (LAZYACCESS(user.do_afters, interaction_key))
|
||||
|
||||
//Human sub-species
|
||||
#define isabductor(A) (is_species(A, /datum/species/abductor))
|
||||
#define isgolem(A) (is_species(A, /datum/species/golem))
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
#define ROLE_GHOST "ghost role"
|
||||
#define ROLE_ELITE "lavaland elite"
|
||||
#define ROLE_NINJA "ninja"
|
||||
#define ROLE_FLOCK "flockmind"
|
||||
#define ROLE_IRRADIATED_MOUSE "irradiated mouse"
|
||||
#define ROLE_UPLIFTED_PRIMITIVE "uplifted primitive"
|
||||
|
||||
@@ -78,6 +79,7 @@ GLOBAL_LIST_INIT(special_roles_antags, list(
|
||||
ROLE_IRRADIATED_MOUSE,
|
||||
|
||||
ROLE_UPLIFTED_PRIMITIVE,
|
||||
ROLE_FLOCK,
|
||||
// UNUSED/BROKEN ANTAGS
|
||||
// ROLE_HOG_GOD = /datum/game_mode/hand_of_god,
|
||||
// ROLE_HOG_CULTIST = /datum/game_mode/hand_of_god,
|
||||
|
||||
@@ -15,6 +15,7 @@ GLOBAL_LIST_INIT(antag_roles, list(
|
||||
ROLE_MORPH,
|
||||
ROLE_TSPIDER,
|
||||
ROLE_NINJA,
|
||||
ROLE_FLOCK,
|
||||
))
|
||||
|
||||
// Bannable other roles
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
#define INVISIBILITY_HIDDEN_RUNES 30
|
||||
#define SEE_INVISIBLE_HIDDEN_RUNES 30
|
||||
|
||||
#define INVISIBILITY_FLOCK 30
|
||||
#define SEE_INVISIBLE_FLOCK 30
|
||||
|
||||
#define SEE_INVISIBLE_LEVEL_ONE 35 //Used by some stuff in code. It's really poorly organized.
|
||||
|
||||
#define SEE_INVISIBLE_LEVEL_TWO 45 //Used by some other stuff in code. It's really poorly organized.
|
||||
|
||||
@@ -130,3 +130,5 @@
|
||||
#define SPAN_WHISPER(str) ("<span class='whisper'>" + str + "</span>")
|
||||
#define SPAN_ZOMBIE(str) ("<span class='zombie'>" + str + "</span>")
|
||||
#define SPAN_ZOMBIELARGE(str) ("<span class='zombielarge'>" + str + "</span>")
|
||||
#define SPAN_FLOCKSAY(str) ("<span class='flocksay'>" + str + "</span>")
|
||||
#define SPAN_FLOCKSAY_GRADIENT(str) ("<span>[gradient_text(str, "#3cb5a3", "#1e806e")]</span>")
|
||||
|
||||
Reference in New Issue
Block a user