Files
Bubberstation/code/modules/mob/living/basic/bots/dedbot.dm
grungussuss 58501dce77 Reorganizes the sound folder (#86726)
## About The Pull Request

<details>

- renamed ai folder to announcer

-- announcer --
- moved vox_fem to announcer
- moved approachingTG to announcer

- separated the ambience folder into ambience and instrumental
-- ambience --

- created holy folder moved all related sounds there
- created engineering folder and moved all related sounds there
- created security folder and moved ambidet there
- created general folder and moved ambigen there
- created icemoon folder and moved all icebox-related ambience there
- created medical folder and moved all medbay-related ambi there
- created ruin folder and moves all ruins ambi there
- created beach folder and moved seag and shore there
- created lavaland folder and moved related ambi there
- created aurora_caelus folder and placed its ambi there
- created misc folder and moved the rest of the files that don't have a
specific category into it

-- instrumental --

- moved traitor folder here
- created lobby_music folder and placed our songs there (title0 not used
anywhere? - server-side modification?)

-- items --

- moved secdeath to hailer
- moved surgery to handling

-- effects --

- moved chemistry into effects
- moved hallucinations into effects
- moved health into effects
- moved magic into effects

-- vehicles --

- moved mecha into vehicles


created mobs folder

-- mobs --

- moved creatures folder into mobs
- moved voice into mobs

renamed creatures to non-humanoids
renamed voice to humanoids

-- non-humanoids--

created cyborg folder
created hiss folder
moved harmalarm.ogg to cyborg

-- humanoids --




-- misc --

moved ghostwhisper to misc
moved insane_low_laugh to misc

I give up trying to document this.

</details>

- [X] ambience
- [x] announcer
- [x] effects
- [X] instrumental
- [x] items
- [x] machines
- [x] misc 
- [X] mobs
- [X] runtime
- [X] vehicles

- [ ] attributions

## Why It's Good For The Game

This folder is so disorganized that it's vomit inducing, will make it
easier to find and add new sounds, providng a minor structure to the
sound folder.

## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
2024-09-23 22:24:50 -07:00

119 lines
4.3 KiB
Plaintext

///////////////Donk Exenteration Drone - DED////////////
//A patrolling bot that cuts you up if you get close. Use ranged weapons or avoid it.
#define SPIN_SLASH_ABILITY_TYPEPATH /datum/action/cooldown/mob_cooldown/exenterate
/mob/living/basic/bot/dedbot
name = "\improper Donk Exenteration Drone" //Exenteration means ripping entrails out, ouch!
desc = "A bladed commercial defence drone, often called an 'Ex-Drone' or 'D.E.D.bot'. It follows a simple programmed patrol route, and slashes at anyone who doesn't have an identity implant."
icon_state = "ded_drone0"
base_icon_state = "ded_drone"
req_one_access = list(ACCESS_SYNDICATE)
health = 50
maxHealth = 50
melee_damage_lower = 15
melee_damage_upper = 20
light_range = 1
light_power = 0.3
light_color = "#eb1809"
ai_controller = /datum/ai_controller/basic_controller/bot/dedbot
faction = list(ROLE_SYNDICATE)
sharpness = SHARP_EDGED
attack_verb_continuous = "eviscerates"
attack_verb_simple = "eviscerate"
attack_sound = 'sound/items/weapons/bladeslice.ogg'
attack_vis_effect = ATTACK_EFFECT_SLASH
gold_core_spawnable = HOSTILE_SPAWN
limb_destroyer = TRUE
bubble_icon = "machine"
pass_flags = PASSMOB | PASSFLAPS
maximum_survivable_temperature = 360 //prone to overheating
possessed_message = "You are an exenteration drone. Exenterate."
additional_access = /datum/id_trim/away/hauntedtradingpost/boss
bot_mode_flags = BOT_MODE_ON | BOT_MODE_AUTOPATROL
mob_size = MOB_SIZE_SMALL
robot_arm = /obj/item/hatchet/cutterblade
density = FALSE
COOLDOWN_DECLARE(trigger_cooldown)
//time between exenteration uses
var/exenteration_cooldown_duration = 0.5 SECONDS
//aoe slash ability
var/datum/action/cooldown/mob_cooldown/bot/exenterate
/mob/living/basic/bot/dedbot/Initialize(mapload)
. = ..()
AddElement(/datum/element/death_drops, /obj/effect/gibspawner/robot)
var/static/list/innate_actions = list(
SPIN_SLASH_ABILITY_TYPEPATH = BB_DEDBOT_SLASH,
)
grant_actions_by_list(innate_actions)
/datum/ai_controller/basic_controller/bot/dedbot
blackboard = list(
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
BB_TARGET_MINIMUM_STAT = DEAD,
BB_AGGRO_RANGE = 2,
)
ai_movement = /datum/ai_movement/jps/bot
planning_subtrees = list(
/datum/ai_planning_subtree/simple_find_target,
/datum/ai_planning_subtree/targeted_mob_ability/exenterate,
/datum/ai_planning_subtree/respond_to_summon,
/datum/ai_planning_subtree/find_patrol_beacon,
/datum/ai_planning_subtree/manage_unreachable_list,
)
max_target_distance = AI_BOT_PATH_LENGTH
///keys to be reset when the bot is reseted
reset_keys = list(
BB_BEACON_TARGET,
BB_PREVIOUS_BEACON_TARGET,
BB_BOT_SUMMON_TARGET,
)
/datum/ai_planning_subtree/targeted_mob_ability/exenterate
ability_key = BB_DEDBOT_SLASH
finish_planning = FALSE
/datum/action/cooldown/mob_cooldown/exenterate
name = "Exenterate"
desc = "Disembowel every living thing in range with your blades."
button_icon = 'icons/obj/weapons/stabby.dmi'
button_icon_state = "huntingknife"
click_to_activate = FALSE
background_icon = 'icons/hud/guardian.dmi'
background_icon_state = "base"
cooldown_time = 0.5 SECONDS
// radius in tiles of AOE effect
var/ability_range = 1
// how much damage this ability does
var/damage_dealt = 18
// factions we dont attack
var/immune_factions = list(ROLE_SYNDICATE)
// weighted list of body zones this can hit
var/static/list/valid_targets = list(
BODY_ZONE_CHEST = 2,
BODY_ZONE_R_ARM = 1,
BODY_ZONE_L_ARM = 1,
BODY_ZONE_R_LEG = 1,
BODY_ZONE_L_LEG = 1,
)
/datum/action/cooldown/mob_cooldown/exenterate/Activate(atom/caster)
if(!COOLDOWN_FINISHED(src, cooldown_time))
return FALSE
caster.Shake(1.4, 0.8, 0.3 SECONDS)
caster.visible_message(span_danger("[caster] shakes violently!"))
playsound(caster, 'sound/items/weapons/drill.ogg', 120 , TRUE)
slash_em(caster)
StartCooldown(cooldown_time)
/datum/action/cooldown/mob_cooldown/exenterate/proc/slash_em(atom/caster)
for(var/mob/living/victim in range(ability_range, caster))
if(faction_check(victim.faction, immune_factions) && owner.CanReach(victim))
continue
to_chat(caster, span_warning("You slice [victim]!"))
to_chat(victim, span_warning("You are cut by [caster]'s blades!"))
victim.apply_damage(damage = damage_dealt, damagetype = BRUTE, def_zone = pick(valid_targets), sharpness = SHARP_EDGED)
#undef SPIN_SLASH_ABILITY_TYPEPATH