mirror of
https://github.com/Skyrat-SS13/Skyrat-tg.git
synced 2026-08-29 07:48:28 +01:00
## About The Pull Request Title. Adds two new maps: - Grasslands Hunt (peaceful) - Meta Central (easy) These maps add a new basic revolutionary mob and significantly upgrades the ai of basic deer. This fixes an issue where modular maps were not correctly spawning mobs or adding them to the "mutable candidates" for antagonists. There's also some balance changes to bitrunning vendor prices, which are generally now lower. This change is unrelated to the PR as a whole so I'm okay with removing it if there's concern ### photos <details> <summary>expand</summary>   </details> ### todo - [x] Fix the revolutionary death anim - [x] Make deer run when injured ## Why It's Good For The Game New maps as a general positive for bitrunning Bug fixes Makes vendor choices for bitrunning-exclusive items generally less of a chore to get ## Changelog jlsnow301, MMMiracles, KikoWen0, Ben10Omintrix 🆑 add: Added two new bitrunning maps: Grasslands Hunt and Meta Central. add: Deer are now more complex animals, granting them enhanced ability to run amok and chew your favorite plants. balance: Reduced the cost of most BR vendor items. fix: Fixes an issue where modular virtual domains spawned less mobs than intended. fix: These modular spawns are now valid mutation targets to become an antagonist. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
147 lines
4.6 KiB
Plaintext
147 lines
4.6 KiB
Plaintext
/mob/living/basic/revolutionary
|
|
name = "Revolutionary"
|
|
desc = "They stand for a cause..."
|
|
mob_biotypes = MOB_ORGANIC|MOB_HUMANOID
|
|
faction = list(FACTION_HOSTILE)
|
|
icon = 'icons/mob/simple/simple_human.dmi'
|
|
gender = MALE
|
|
basic_mob_flags = DEL_ON_DEATH
|
|
attack_verb_continuous = "robusts"
|
|
attack_verb_simple = "robust"
|
|
maxHealth = 50
|
|
health = 50
|
|
melee_damage_lower = 15
|
|
melee_damage_upper = 20
|
|
obj_damage = 20
|
|
attack_sound = 'sound/weapons/smash.ogg'
|
|
ai_controller = /datum/ai_controller/basic_controller/revolutionary
|
|
/// list of weapons we can have
|
|
var/static/list/possible_weapons = list(
|
|
/obj/item/storage/toolbox/mechanical = "robust",
|
|
/obj/item/spear = "pierce",
|
|
/obj/item/fireaxe = "slice",
|
|
/obj/item/melee/baseball_bat = "bat",
|
|
/obj/item/melee/baton = "discipline",
|
|
)
|
|
/// List of things to shout
|
|
var/static/list/phrases = list(
|
|
"The revolution will not be televized!",
|
|
"VIVA!",
|
|
"Dirty pig!",
|
|
"Gondola meat is murder!",
|
|
"Free Cargonia!",
|
|
"Mime rights are human rights!",
|
|
"猫娘 Free Terry!",
|
|
)
|
|
/// List of causes to #support
|
|
var/static/list/causes = list(
|
|
"Worker's rights",
|
|
"Icemoon climate change",
|
|
"Fair clown treatment",
|
|
"Lizards",
|
|
"Moths",
|
|
"Stop Lavaland drilling",
|
|
"The Captain has been replaced by a robot",
|
|
"Free Cargonia",
|
|
"Befriend all space dragons",
|
|
"The Grey Tide",
|
|
"Rising cost of medbay",
|
|
)
|
|
/// Monkey screeches
|
|
var/static/list/monkey_screeches = list(
|
|
'sound/creatures/monkey/monkey_screech_1.ogg',
|
|
'sound/creatures/monkey/monkey_screech_2.ogg',
|
|
'sound/creatures/monkey/monkey_screech_3.ogg',
|
|
'sound/creatures/monkey/monkey_screech_4.ogg',
|
|
)
|
|
/// Male screams
|
|
var/static/list/male_screams = list(
|
|
'sound/voice/human/malescream_1.ogg',
|
|
'sound/voice/human/malescream_2.ogg',
|
|
'sound/voice/human/malescream_3.ogg',
|
|
'sound/voice/human/malescream_4.ogg',
|
|
'sound/voice/human/malescream_5.ogg',
|
|
)
|
|
/// Female screams
|
|
var/static/list/female_screams = list(
|
|
'sound/voice/human/femalescream_1.ogg',
|
|
'sound/voice/human/femalescream_2.ogg',
|
|
'sound/voice/human/femalescream_3.ogg',
|
|
'sound/voice/human/femalescream_4.ogg',
|
|
'sound/voice/human/femalescream_5.ogg',
|
|
)
|
|
|
|
|
|
/mob/living/basic/revolutionary/Initialize(mapload)
|
|
. = ..()
|
|
shuffle_inplace(phrases)
|
|
var/static/list/display_emote = list(
|
|
BB_EMOTE_SAY = phrases,
|
|
BB_EMOTE_SOUND = monkey_screeches,
|
|
BB_SPEAK_CHANCE = 5,
|
|
)
|
|
ai_controller.set_blackboard_key(BB_BASIC_MOB_SPEAK_LINES, display_emote)
|
|
var/obj/item/weapon_of_choice = pick(possible_weapons)
|
|
attack_sound = weapon_of_choice::hitsound
|
|
attack_verb_simple = possible_weapons[weapon_of_choice]
|
|
attack_verb_continuous = "[attack_verb_simple]s"
|
|
|
|
var/static/list/death_loot = list(/obj/effect/mob_spawn/corpse/human/revolutionary)
|
|
AddElement(/datum/element/death_drops, death_loot)
|
|
apply_dynamic_human_appearance(src, mob_spawn_path = /obj/effect/mob_spawn/corpse/human/revolutionary, l_hand = weapon_of_choice)
|
|
|
|
gender = pick(MALE, FEMALE, PLURAL)
|
|
var/first_name
|
|
switch(gender)
|
|
if(MALE)
|
|
first_name = pick(GLOB.first_names_male)
|
|
death_sound = pick(male_screams + monkey_screeches)
|
|
if(FEMALE)
|
|
first_name = pick(GLOB.first_names_female)
|
|
death_sound = pick(female_screams + monkey_screeches)
|
|
if(PLURAL)
|
|
first_name = pick(GLOB.first_names)
|
|
death_sound = pick(male_screams + female_screams + monkey_screeches)
|
|
|
|
fully_replace_character_name(name, "[first_name] [pick(GLOB.last_names)]")
|
|
desc += span_infoplain("\nToday, that cause is: ")
|
|
shuffle_inplace(causes)
|
|
desc += span_notice("#[pick(causes)].")
|
|
|
|
|
|
/obj/effect/mob_spawn/corpse/human/revolutionary
|
|
name = "Revolutionary"
|
|
outfit = /datum/outfit/revolution
|
|
|
|
|
|
/datum/outfit/revolution
|
|
name = "Revolution"
|
|
uniform = /obj/item/clothing/under/color/grey
|
|
head = /obj/item/clothing/head/costume/ushanka
|
|
mask = /obj/item/clothing/mask/gas
|
|
gloves = /obj/item/clothing/gloves/color/black
|
|
shoes = /obj/item/clothing/shoes/jackboots
|
|
|
|
|
|
/datum/ai_controller/basic_controller/revolutionary
|
|
blackboard = list(
|
|
BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic,
|
|
)
|
|
ai_movement = /datum/ai_movement/basic_avoidance
|
|
idle_behavior = /datum/idle_behavior/idle_random_walk/less_walking
|
|
planning_subtrees = list(
|
|
/datum/ai_planning_subtree/random_speech/blackboard/revolutionary,
|
|
/datum/ai_planning_subtree/simple_find_target,
|
|
/datum/ai_planning_subtree/basic_melee_attack_subtree,
|
|
)
|
|
|
|
|
|
/datum/ai_planning_subtree/random_speech/blackboard/revolutionary
|
|
|
|
|
|
/datum/ai_planning_subtree/random_speech/blackboard/revolutionary/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
|
|
if(!controller.blackboard_key_exists(BB_BASIC_MOB_CURRENT_TARGET))
|
|
return
|
|
|
|
return ..()
|