mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 14:39:58 +01:00
[MIRROR] convert the bear to a basic mobster [MDB IGNORE] (#22751)
* convert the bear to a basic mobster * Merge conflicts * Fixing the diffs * Merge conflicts * Update mob.dm * Update VoidRaptor.dmm * why is this pr so cursed --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
This commit is contained in:
committed by
nevimer
co-authored by
Ben10Omintrix
Giz
parent
dffe1fcdfc
commit
4a89205b5d
@@ -305,7 +305,7 @@
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/ruin/space/has_grav/powered/prison_shuttle)
|
||||
"Cw" = (
|
||||
/mob/living/simple_animal/hostile/bear/russian,
|
||||
/mob/living/basic/bear/russian,
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/ruin/space/has_grav/powered/prison_shuttle)
|
||||
"CX" = (
|
||||
|
||||
@@ -2673,7 +2673,7 @@
|
||||
/obj/effect/turf_decal/weather/snow/corner{
|
||||
dir = 4
|
||||
},
|
||||
/mob/living/simple_animal/hostile/bear/snow{
|
||||
/mob/living/basic/bear/snow{
|
||||
desc = "It's a polar bear, in space, but not actually in space. It's actually on a planet. This is a planet.";
|
||||
melee_damage_lower = 10;
|
||||
melee_damage_upper = 20;
|
||||
@@ -2847,7 +2847,7 @@
|
||||
/turf/open/floor/plating/snowed/snow_cabin,
|
||||
/area/awaymission/cabin/snowforest/sovietsurface)
|
||||
"qn" = (
|
||||
/mob/living/simple_animal/hostile/bear/snow{
|
||||
/mob/living/basic/bear/snow{
|
||||
desc = "It's a polar bear, in space, but not actually in space. It's actually on a planet. This is a planet.";
|
||||
melee_damage_lower = 10;
|
||||
melee_damage_upper = 20;
|
||||
@@ -4586,13 +4586,11 @@
|
||||
/turf/open/misc/asteroid/snow/snow_cabin,
|
||||
/area/awaymission/cabin/caves)
|
||||
"Ml" = (
|
||||
/mob/living/simple_animal/hostile/bear/russian{
|
||||
/mob/living/basic/bear/russian{
|
||||
desc = "He'll hold the line against you!";
|
||||
light_range = 3;
|
||||
melee_damage_upper = 25;
|
||||
name = "Artyom";
|
||||
speak = list("Blyat!","Rawr!","GRR!","Growl!");
|
||||
wander = 0
|
||||
name = "Artyom"
|
||||
},
|
||||
/turf/open/misc/asteroid/snow/snow_cabin{
|
||||
floor_variance = 0;
|
||||
@@ -5457,13 +5455,12 @@
|
||||
/turf/open/floor/plating/snowed/smoothed,
|
||||
/area/awaymission/cabin/caves)
|
||||
"Yg" = (
|
||||
/mob/living/simple_animal/hostile/bear/snow{
|
||||
/mob/living/basic/bear/snow{
|
||||
desc = "It's a polar bear, in space, but not actually in space. It's actually on a planet. This is a planet.";
|
||||
melee_damage_lower = 10;
|
||||
melee_damage_upper = 20;
|
||||
name = "fat space polar bear";
|
||||
speed = 3;
|
||||
wander = 0
|
||||
speed = 3
|
||||
},
|
||||
/obj/effect/light_emitter{
|
||||
set_cap = 3;
|
||||
|
||||
@@ -1098,7 +1098,7 @@
|
||||
/turf/open/floor/plating/abductor2,
|
||||
/area/awaymission/mothership_astrum/deck4)
|
||||
"sN" = (
|
||||
/mob/living/simple_animal/hostile/bear/russian{
|
||||
/mob/living/basic/bear/russian{
|
||||
faction = list("Abductor")
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
@@ -1570,8 +1570,8 @@
|
||||
/turf/open/floor/plating/abductor,
|
||||
/area/awaymission/mothership_astrum/halls)
|
||||
"AC" = (
|
||||
/mob/living/simple_animal/hostile/bear/russian,
|
||||
/mob/living/simple_animal/hostile/bear/russian{
|
||||
/mob/living/basic/bear/russian,
|
||||
/mob/living/basic/bear/russian{
|
||||
faction = list("Abductor")
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
@@ -3659,7 +3659,7 @@
|
||||
/turf/open/misc/ironsand,
|
||||
/area/awaymission/mothership_astrum/deck1)
|
||||
"YL" = (
|
||||
/mob/living/simple_animal/hostile/bear/russian{
|
||||
/mob/living/basic/bear/russian{
|
||||
faction = list("Abductor")
|
||||
},
|
||||
/turf/open/misc/asteroid/snow/ice{
|
||||
|
||||
@@ -8006,7 +8006,7 @@
|
||||
/turf/open/floor/iron,
|
||||
/area/awaymission/snowdin/post/minipost)
|
||||
"AG" = (
|
||||
/mob/living/simple_animal/hostile/bear/snow,
|
||||
/mob/living/basic/bear/snow,
|
||||
/turf/open/floor/plating/snowed/smoothed,
|
||||
/area/awaymission/snowdin/post/minipost)
|
||||
"AH" = (
|
||||
@@ -8746,7 +8746,7 @@
|
||||
/area/awaymission/snowdin/cave)
|
||||
"DY" = (
|
||||
/obj/effect/turf_decal/weather/snow,
|
||||
/mob/living/simple_animal/hostile/bear/snow,
|
||||
/mob/living/basic/bear/snow,
|
||||
/turf/open/floor/iron/dark/snowdin,
|
||||
/area/awaymission/snowdin/cave)
|
||||
"Ea" = (
|
||||
@@ -10058,7 +10058,7 @@
|
||||
set_cap = 3;
|
||||
set_luminosity = 6
|
||||
},
|
||||
/mob/living/simple_animal/hostile/bear/snow,
|
||||
/mob/living/basic/bear/snow,
|
||||
/turf/open/misc/asteroid/snow,
|
||||
/area/awaymission/snowdin/outside)
|
||||
"Li" = (
|
||||
@@ -10082,7 +10082,7 @@
|
||||
/turf/open/floor/plating/snowed/smoothed,
|
||||
/area/awaymission/snowdin/post/minipost)
|
||||
"Lm" = (
|
||||
/mob/living/simple_animal/hostile/bear/snow,
|
||||
/mob/living/basic/bear/snow,
|
||||
/turf/open/misc/asteroid/snow{
|
||||
floor_variance = 0;
|
||||
icon_state = "snow_dug";
|
||||
@@ -10390,7 +10390,7 @@
|
||||
/area/awaymission/snowdin/cave/cavern)
|
||||
"MV" = (
|
||||
/obj/item/shard,
|
||||
/mob/living/simple_animal/hostile/bear/snow,
|
||||
/mob/living/basic/bear/snow,
|
||||
/turf/open/misc/asteroid/snow{
|
||||
floor_variance = 0;
|
||||
icon_state = "snow_dug";
|
||||
@@ -11335,7 +11335,7 @@
|
||||
/turf/open/floor/iron,
|
||||
/area/awaymission/snowdin/post/garage)
|
||||
"Sa" = (
|
||||
/mob/living/simple_animal/hostile/bear/snow,
|
||||
/mob/living/basic/bear/snow,
|
||||
/turf/open/misc/asteroid/snow,
|
||||
/area/awaymission/snowdin/cave)
|
||||
"Sb" = (
|
||||
@@ -11587,7 +11587,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/snowdin/post/cavern2)
|
||||
"Tf" = (
|
||||
/mob/living/simple_animal/hostile/bear/snow,
|
||||
/mob/living/basic/bear/snow,
|
||||
/turf/open/misc/asteroid/snow,
|
||||
/area/awaymission/snowdin/outside)
|
||||
"Tk" = (
|
||||
@@ -11925,7 +11925,7 @@
|
||||
/area/awaymission/snowdin/cave)
|
||||
"Vi" = (
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/mob/living/simple_animal/hostile/bear/snow,
|
||||
/mob/living/basic/bear/snow,
|
||||
/turf/open/misc/asteroid/snow,
|
||||
/area/awaymission/snowdin/cave)
|
||||
"Vl" = (
|
||||
|
||||
@@ -535,14 +535,14 @@
|
||||
/turf/open/floor/iron/dark/small,
|
||||
/area/centcom/basketball)
|
||||
"Om" = (
|
||||
/mob/living/simple_animal/hostile/bear/fightpit,
|
||||
/mob/living/basic/bear/fightpit,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/centcom/basketball)
|
||||
"OB" = (
|
||||
/mob/living/simple_animal/hostile/bear/fightpit,
|
||||
/mob/living/basic/bear/fightpit,
|
||||
/turf/open/floor/engine,
|
||||
/area/centcom/basketball)
|
||||
"PU" = (
|
||||
|
||||
@@ -52191,7 +52191,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/station/maintenance/port/aft)
|
||||
"oON" = (
|
||||
/mob/living/simple_animal/hostile/bear/wojtek,
|
||||
/mob/living/basic/bear/wojtek,
|
||||
/turf/open/floor/iron/smooth_large,
|
||||
/area/station/hallway/secondary/construction)
|
||||
"oOX" = (
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
/area/shuttle/escape)
|
||||
"aN" = (
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/mob/living/simple_animal/hostile/bear/fightpit,
|
||||
/mob/living/basic/bear/fightpit,
|
||||
/turf/open/floor/engine,
|
||||
/area/shuttle/escape)
|
||||
"aO" = (
|
||||
@@ -232,7 +232,7 @@
|
||||
/area/shuttle/escape)
|
||||
"aV" = (
|
||||
/obj/item/kitchen/fork,
|
||||
/mob/living/simple_animal/hostile/bear/fightpit,
|
||||
/mob/living/basic/bear/fightpit,
|
||||
/turf/open/floor/engine,
|
||||
/area/shuttle/escape)
|
||||
"aW" = (
|
||||
@@ -490,7 +490,7 @@
|
||||
/area/shuttle/escape)
|
||||
"wo" = (
|
||||
/obj/effect/decal/cleanable/blood/old,
|
||||
/mob/living/simple_animal/hostile/bear/fightpit,
|
||||
/mob/living/basic/bear/fightpit,
|
||||
/obj/machinery/light/small/red/dim/directional/east,
|
||||
/turf/open/floor/engine,
|
||||
/area/shuttle/escape)
|
||||
|
||||
@@ -342,7 +342,7 @@
|
||||
desc = "A large wood and steel-reinforced crate.";
|
||||
name = "voytek's crate"
|
||||
},
|
||||
/mob/living/simple_animal/hostile/bear{
|
||||
/mob/living/basic/bear{
|
||||
desc = "A very friendly yet still extremely menacing space-bear. Comrade until the end.";
|
||||
name = "Voytek"
|
||||
},
|
||||
|
||||
@@ -337,3 +337,9 @@
|
||||
#define BB_CURRENT_HOME "BB_current_home"
|
||||
///the hydro we will pollinate
|
||||
#define BB_TARGET_HYDRO "BB_target_hydro"
|
||||
|
||||
///bear keys
|
||||
///the hive with honey that we will steal from
|
||||
#define BB_FOUND_HONEY "BB_found_honey"
|
||||
///the tree that we will climb
|
||||
#define BB_CLIMBED_TREE "BB_climbed_tree"
|
||||
|
||||
@@ -176,3 +176,6 @@
|
||||
|
||||
/// From /obj/structure/geyser/attackby() : (obj/structure/geyser/geyser)
|
||||
#define COMSIG_LIVING_DISCOVERED_GEYSER "living_discovered_geyser"
|
||||
|
||||
/// From /datum/ai/behavior/climb_tree/perform() : (mob/living/basic/living_pawn)
|
||||
#define COMSIG_LIVING_CLIMB_TREE "living_climb_tree"
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/datum/ai_behavior/find_and_set/valid_tree
|
||||
|
||||
/datum/ai_behavior/find_and_set/valid_tree/search_tactic(datum/ai_controller/controller, locate_path, search_range)
|
||||
var/list/valid_trees = list()
|
||||
for (var/obj/structure/flora/tree/tree_target in oview(search_range, controller.pawn))
|
||||
if(istype(tree_target, /obj/structure/flora/tree/dead)) //no died trees
|
||||
continue
|
||||
valid_trees += tree_target
|
||||
|
||||
if(valid_trees.len)
|
||||
return pick(valid_trees)
|
||||
|
||||
/datum/ai_behavior/climb_tree
|
||||
behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_REQUIRE_REACH
|
||||
|
||||
/datum/ai_behavior/climb_tree/setup(datum/ai_controller/controller, target_key)
|
||||
. = ..()
|
||||
var/atom/target = controller.blackboard[target_key]
|
||||
if(QDELETED(target))
|
||||
return FALSE
|
||||
|
||||
set_movement_target(controller, target)
|
||||
|
||||
/datum/ai_behavior/climb_tree/perform(seconds_per_tick, datum/ai_controller/controller, target_key)
|
||||
. = ..()
|
||||
var/obj/structure/flora/target_tree = controller.blackboard[target_key]
|
||||
var/mob/living/basic/living_pawn = controller.pawn
|
||||
SEND_SIGNAL(living_pawn, COMSIG_LIVING_CLIMB_TREE, target_tree)
|
||||
finish_action(controller, TRUE, target_key)
|
||||
|
||||
/datum/ai_behavior/climb_tree/finish_action(datum/ai_controller/controller, succeeded, target_key)
|
||||
. = ..()
|
||||
if(succeeded)
|
||||
controller.clear_blackboard_key(target_key)
|
||||
@@ -0,0 +1,17 @@
|
||||
/datum/ai_planning_subtree/climb_trees
|
||||
///chance to climb a tree
|
||||
var/climb_chance = 35
|
||||
|
||||
/datum/ai_planning_subtree/climb_trees/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick)
|
||||
|
||||
if(!SPT_PROB(climb_chance, seconds_per_tick))
|
||||
return
|
||||
|
||||
var/obj/structure/flora/tree/target = controller.blackboard[BB_CLIMBED_TREE]
|
||||
|
||||
if(QDELETED(target))
|
||||
controller.queue_behavior(/datum/ai_behavior/find_and_set/valid_tree, BB_CLIMBED_TREE, /obj/structure/flora/tree)
|
||||
return
|
||||
|
||||
controller.queue_behavior(/datum/ai_behavior/climb_tree, BB_CLIMBED_TREE)
|
||||
return SUBTREE_RETURN_FINISH_PLANNING
|
||||
@@ -194,3 +194,8 @@
|
||||
speech_chance = 5
|
||||
speak = list("Gah Gah!", "NOOT NOOT!", "NOOT!", "Noot", "noot", "Prah!", "Grah!")
|
||||
emote_hear = list("squawks", "gakkers")
|
||||
|
||||
/datum/ai_planning_subtree/random_speech/bear
|
||||
speech_chance = 5
|
||||
emote_hear = list("rawrs.","grumbles.","grawls.", "stomps!")
|
||||
emote_see = list("stares ferociously.")
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
* A component given to mobs that can climb trees
|
||||
*/
|
||||
/datum/component/tree_climber
|
||||
///the distance to climb up and down
|
||||
var/climbing_distance = 20
|
||||
///the tree we are on
|
||||
var/obj/current_tree
|
||||
|
||||
/datum/component/tree_climber/Initialize(climbing_distance = 20)
|
||||
if(!isliving(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
src.climbing_distance = climbing_distance
|
||||
|
||||
/datum/component/tree_climber/RegisterWithParent()
|
||||
RegisterSignals(parent, list(COMSIG_HOSTILE_PRE_ATTACKINGTARGET, COMSIG_LIVING_CLIMB_TREE), PROC_REF(climb_tree))
|
||||
RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
|
||||
|
||||
/datum/component/tree_climber/UnregisterFromParent()
|
||||
UnregisterSignal(parent, list(COMSIG_HOSTILE_PRE_ATTACKINGTARGET, COMSIG_LIVING_CLIMB_TREE, COMSIG_ATOM_EXAMINE))
|
||||
|
||||
/datum/component/tree_climber/Destroy()
|
||||
if(current_tree)
|
||||
handle_climb_tree(parent, current_tree) //remove mob from tree and handle deletion of signals
|
||||
return ..()
|
||||
|
||||
/datum/component/tree_climber/proc/climb_tree(mob/living/source, atom/target)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
if(!istype(target, /obj/structure/flora/tree))
|
||||
return
|
||||
|
||||
if(!can_climb_tree(target)) //check if another animal is on the tree
|
||||
to_chat(source, span_warning("[target] is blocked!"))
|
||||
return COMPONENT_HOSTILE_NO_ATTACK
|
||||
|
||||
handle_climb_tree(source, target)
|
||||
|
||||
if(current_tree)
|
||||
source.forceMove(get_turf(current_tree))
|
||||
return COMPONENT_HOSTILE_NO_ATTACK
|
||||
|
||||
var/list/possible_drops = get_adjacent_open_turfs(target)
|
||||
for(var/turf/droploc as anything in possible_drops)
|
||||
if(!droploc.is_blocked_turf(exclude_mobs = TRUE))
|
||||
continue
|
||||
possible_drops -= droploc
|
||||
if(possible_drops.len)
|
||||
source.forceMove(pick(possible_drops))
|
||||
return COMPONENT_HOSTILE_NO_ATTACK
|
||||
|
||||
/datum/component/tree_climber/proc/on_examine(datum/source, mob/user, list/examine_text)
|
||||
SIGNAL_HANDLER
|
||||
if(current_tree)
|
||||
examine_text += "It is clinging to [current_tree]!"
|
||||
|
||||
/datum/component/tree_climber/proc/can_climb_tree(obj/structure/flora/tree/target)
|
||||
if(current_tree)
|
||||
return TRUE
|
||||
var/turf/tree_turf = get_turf(target)
|
||||
if(locate(/mob/living) in tree_turf.contents)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/component/tree_climber/proc/handle_climb_tree(mob/living/climber, obj/structure/target_tree)
|
||||
var/offset = current_tree ? -(climbing_distance) : climbing_distance
|
||||
animate(climber, pixel_y = climber.pixel_y + offset, time = 2)
|
||||
climber.Stun(2 SECONDS, ignore_canstun = TRUE)
|
||||
if(current_tree)
|
||||
remove_tree_signals()
|
||||
current_tree = null
|
||||
return
|
||||
|
||||
current_tree = target_tree
|
||||
register_tree_signals()
|
||||
|
||||
/datum/component/tree_climber/proc/remove_from_tree()
|
||||
SIGNAL_HANDLER
|
||||
|
||||
handle_climb_tree(parent, current_tree)
|
||||
|
||||
/datum/component/tree_climber/proc/register_tree_signals()
|
||||
RegisterSignal(parent, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(remove_from_tree))
|
||||
RegisterSignal(current_tree, COMSIG_PREQDELETED, PROC_REF(remove_from_tree))
|
||||
|
||||
/datum/component/tree_climber/proc/remove_tree_signals()
|
||||
UnregisterSignal(parent, COMSIG_MOVABLE_PRE_MOVE)
|
||||
UnregisterSignal(current_tree, COMSIG_PREQDELETED)
|
||||
|
||||
@@ -245,6 +245,7 @@
|
||||
|
||||
var/static/list/something_pool = list(
|
||||
/mob/living/basic/bat,
|
||||
/mob/living/basic/bear,
|
||||
/mob/living/basic/butterfly,
|
||||
/mob/living/basic/carp,
|
||||
/mob/living/basic/carp/magic,
|
||||
@@ -270,7 +271,6 @@
|
||||
/mob/living/basic/stickman,
|
||||
/mob/living/basic/stickman/dog,
|
||||
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher,
|
||||
/mob/living/simple_animal/hostile/bear,
|
||||
/mob/living/simple_animal/hostile/blob/blobbernaut/independent,
|
||||
/mob/living/simple_animal/hostile/gorilla,
|
||||
/mob/living/simple_animal/hostile/megafauna/dragon/lesser,
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
/obj/item/bear_armor
|
||||
name = "pile of bear armor"
|
||||
desc = "A scattered pile of various shaped armor pieces fitted for a bear, some duct tape, and a nail filer. Crude instructions \
|
||||
are written on the back of one of the plates in russian. This seems like an awful idea."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "bear_armor_upgrade"
|
||||
|
||||
/obj/item/bear_armor/afterattack(atom/target, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
if(!proximity_flag)
|
||||
return
|
||||
if(!istype(target, /mob/living/basic/bear))
|
||||
return
|
||||
var/mob/living/basic/bear/bear_target = target
|
||||
if(bear_target.armored)
|
||||
to_chat(user, span_warning("[bear_target] has already been armored up!"))
|
||||
return
|
||||
bear_target.armored = TRUE
|
||||
bear_target.maxHealth += 60
|
||||
bear_target.health += 60
|
||||
bear_target.armour_penetration += 20
|
||||
bear_target.melee_damage_lower += 3
|
||||
bear_target.melee_damage_upper += 5
|
||||
bear_target.wound_bonus += 5
|
||||
bear_target.update_icons()
|
||||
to_chat(user, span_info("You strap the armor plating to [bear_target] and sharpen [bear_target.p_their()] claws with the nail filer. This was a great idea."))
|
||||
qdel(src)
|
||||
@@ -180,11 +180,11 @@
|
||||
|
||||
spawn_list.Add(/mob/living/basic/syndicate/russian)
|
||||
spawn_list.Add(/mob/living/basic/syndicate/russian/ranged) //drops a mateba
|
||||
spawn_list.Add(/mob/living/simple_animal/hostile/bear/russian)
|
||||
spawn_list.Add(/mob/living/basic/bear/russian)
|
||||
if(prob(75))
|
||||
spawn_list.Add(/mob/living/basic/syndicate/russian)
|
||||
if(prob(50))
|
||||
spawn_list.Add(/mob/living/simple_animal/hostile/bear/russian)
|
||||
spawn_list.Add(/mob/living/basic/bear/russian)
|
||||
|
||||
/datum/shuttle_loan_situation/spider_gift
|
||||
sender = "CentCom Diplomatic Corps"
|
||||
|
||||
@@ -287,12 +287,12 @@
|
||||
|
||||
/datum/round_event/vent_clog/strange/get_mob()
|
||||
var/static/list/mob_list = list(
|
||||
/mob/living/basic/bear,
|
||||
/mob/living/basic/cockroach/glockroach/mobroach,
|
||||
/mob/living/basic/lightgeist,
|
||||
/mob/living/basic/mothroach,
|
||||
/mob/living/basic/mushroom,
|
||||
/mob/living/basic/viscerator,
|
||||
/mob/living/simple_animal/hostile/bear,
|
||||
/mob/living/simple_animal/hostile/retaliate/goose, //Janitors HATE geese.
|
||||
/mob/living/simple_animal/pet/gondola,
|
||||
)
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
/datum/reagent/blood = 50,
|
||||
/datum/reagent/teslium = 1 //To shock the whole thing into life
|
||||
)
|
||||
result = /mob/living/simple_animal/hostile/bear/butter
|
||||
result = /mob/living/basic/bear/butter
|
||||
category = CAT_MISCFOOD
|
||||
|
||||
/datum/crafting_recipe/food/crab_rangoon
|
||||
|
||||
+52
-71
@@ -1,5 +1,5 @@
|
||||
//Space bears!
|
||||
/mob/living/simple_animal/hostile/bear
|
||||
/mob/living/basic/bear
|
||||
name = "space bear"
|
||||
desc = "You don't need to be faster than a space bear, you just need to outrun your crewmates."
|
||||
icon_state = "bear"
|
||||
@@ -7,24 +7,19 @@
|
||||
icon_dead = "bear_dead"
|
||||
icon_gib = "bear_gib"
|
||||
mob_biotypes = MOB_ORGANIC|MOB_BEAST
|
||||
speak = list("RAWR!","Rawr!","GRR!","Growl!")
|
||||
speak_emote = list("growls", "roars")
|
||||
emote_hear = list("rawrs.","grumbles.","grawls.")
|
||||
emote_taunt = list("stares ferociously", "stomps")
|
||||
speak_chance = 1
|
||||
taunt_chance = 25
|
||||
turns_per_move = 5
|
||||
butcher_results = list(/obj/item/food/meat/slab/bear = 5, /obj/item/clothing/head/costume/bearpelt = 1)
|
||||
|
||||
response_help_continuous = "pets"
|
||||
response_help_simple = "pet"
|
||||
response_disarm_continuous = "gently pushes aside"
|
||||
response_disarm_simple = "gently push aside"
|
||||
|
||||
maxHealth = 60
|
||||
health = 60
|
||||
speed = 0
|
||||
|
||||
obj_damage = 60
|
||||
melee_damage_lower = 15 // i know it's like half what it used to be, but bears cause bleeding like crazy now so it works out
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
wound_bonus = -5
|
||||
bare_wound_bonus = 10 // BEAR wound bonus am i right
|
||||
@@ -36,26 +31,23 @@
|
||||
friendly_verb_continuous = "bear hugs"
|
||||
friendly_verb_simple = "bear hug"
|
||||
|
||||
//Space bears aren't affected by cold.
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 1500
|
||||
|
||||
faction = list(FACTION_RUSSIAN)
|
||||
|
||||
footstep_type = FOOTSTEP_MOB_CLAW
|
||||
|
||||
habitable_atmos = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minimum_survivable_temperature = TCMB
|
||||
maximum_survivable_temperature = T0C + 1500
|
||||
ai_controller = /datum/ai_controller/basic_controller/bear
|
||||
/// is the bear wearing a armor?
|
||||
var/armored = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/Initialize(mapload)
|
||||
/mob/living/basic/bear/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
|
||||
add_cell_sample()
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/add_cell_sample()
|
||||
AddElement(/datum/element/ai_retaliate)
|
||||
AddComponent(/datum/component/tree_climber, climbing_distance = 15)
|
||||
AddElement(/datum/element/swabable, CELL_LINE_TABLE_BEAR, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5)
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/Login()
|
||||
/mob/living/basic/bear/Login()
|
||||
. = ..()
|
||||
if(!. || !client)
|
||||
return FALSE
|
||||
@@ -64,26 +56,37 @@
|
||||
can_buckle = TRUE
|
||||
buckle_lying = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/update_icons()
|
||||
/mob/living/basic/bear/update_icons()
|
||||
..()
|
||||
if(armored)
|
||||
add_overlay("armor_bear")
|
||||
|
||||
/mob/living/basic/bear/proc/extract_combs(obj/structure/beebox/hive)
|
||||
if(!length(hive.honeycombs))
|
||||
return
|
||||
var/obj/item/food/honeycomb/honey_food = pick_n_take(hive.honeycombs)
|
||||
if(isnull(honey_food))
|
||||
return
|
||||
honey_food.forceMove(get_turf(src))
|
||||
|
||||
//SPACE BEARS! SQUEEEEEEEE~ OW! FUCK! IT BIT MY HAND OFF!!
|
||||
/mob/living/simple_animal/hostile/bear/hudson
|
||||
/mob/living/basic/bear/hudson
|
||||
name = "Hudson"
|
||||
gender = MALE
|
||||
desc = "Feared outlaw, this guy is one bad news bear." //I'm sorry...
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/snow
|
||||
/mob/living/basic/bear/snow
|
||||
name = "space polar bear"
|
||||
icon_state = "snowbear"
|
||||
icon_living = "snowbear"
|
||||
icon_dead = "snowbear_dead"
|
||||
desc = "It's a polar bear, in space, but not actually in space."
|
||||
weather_immunities = list(TRAIT_SNOWSTORM_IMMUNE)
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/russian
|
||||
/mob/living/basic/bear/snow/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SNOWSTORM_IMMUNE, INNATE_TRAIT)
|
||||
|
||||
/mob/living/basic/bear/russian
|
||||
name = "combat bear"
|
||||
desc = "A ferocious brown bear decked out in armor plating, a red star with yellow outlining details the shoulder plating."
|
||||
icon_state = "combatbear"
|
||||
@@ -97,35 +100,10 @@
|
||||
armour_penetration = 20
|
||||
health = 120
|
||||
maxHealth = 120
|
||||
armored = TRUE
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
armored = TRUE
|
||||
|
||||
/obj/item/bear_armor
|
||||
name = "pile of bear armor"
|
||||
desc = "A scattered pile of various shaped armor pieces fitted for a bear, some duct tape, and a nail filer. Crude instructions \
|
||||
are written on the back of one of the plates in russian. This seems like an awful idea."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "bear_armor_upgrade"
|
||||
|
||||
/obj/item/bear_armor/afterattack(atom/target, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
if(istype(target, /mob/living/simple_animal/hostile/bear) && proximity_flag)
|
||||
var/mob/living/simple_animal/hostile/bear/A = target
|
||||
if(A.armored)
|
||||
to_chat(user, span_warning("[A] has already been armored up!"))
|
||||
return
|
||||
A.armored = TRUE
|
||||
A.maxHealth += 60
|
||||
A.health += 60
|
||||
A.armour_penetration += 20
|
||||
A.melee_damage_lower += 3
|
||||
A.melee_damage_upper += 5
|
||||
A.wound_bonus += 5
|
||||
A.update_icons()
|
||||
to_chat(user, span_info("You strap the armor plating to [A] and sharpen [A.p_their()] claws with the nail filer. This was a great idea."))
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/butter //The mighty companion to Cak. Several functions used from it.
|
||||
/mob/living/basic/bear/butter //The mighty companion to Cak. Several functions used from it.
|
||||
name = "Terrygold"
|
||||
icon_state = "butterbear"
|
||||
icon_living = "butterbear"
|
||||
@@ -147,23 +125,23 @@
|
||||
attack_verb_simple = "slap"
|
||||
attack_verb_continuous = "slaps"
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/butter/add_cell_sample()
|
||||
return //You cannot grow a real bear from butter.
|
||||
/mob/living/basic/bear/butter/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/butter/Life(seconds_per_tick = SSMOBS_DT, times_fired) //Heals butter bear really fast when he takes damage.
|
||||
if(stat)
|
||||
return
|
||||
if(health < maxHealth)
|
||||
heal_overall_damage(5 * seconds_per_tick) //Fast life regen, makes it hard for you to get eaten to death.
|
||||
AddComponent(/datum/component/regenerator,\
|
||||
regeneration_delay = 1 SECONDS,\
|
||||
health_per_second = 5,\
|
||||
outline_colour = COLOR_YELLOW,\
|
||||
)
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/butter/attack_hand(mob/living/user, list/modifiers) //Borrowed code from Cak, feeds people if they hit you. More nutriment but less vitamin to represent BUTTER.
|
||||
..()
|
||||
/mob/living/basic/bear/butter/attack_hand(mob/living/user, list/modifiers) //Borrowed code from Cak, feeds people if they hit you. More nutriment but less vitamin to represent BUTTER.
|
||||
. = ..()
|
||||
if(user.combat_mode && user.reagents && !stat)
|
||||
user.reagents.add_reagent(/datum/reagent/consumable/nutriment, 1)
|
||||
user.reagents.add_reagent(/datum/reagent/consumable/nutriment/vitamin, 0.1)
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/butter/CheckParts(list/parts) //Borrowed code from Cak, allows the brain used to actually control the bear.
|
||||
..()
|
||||
/mob/living/basic/bear/butter/CheckParts(list/parts) //Borrowed code from Cak, allows the brain used to actually control the bear.
|
||||
. = ..()
|
||||
var/obj/item/organ/internal/brain/candidate = locate(/obj/item/organ/internal/brain) in contents
|
||||
if(!candidate || !candidate.brainmob || !candidate.brainmob.mind)
|
||||
return
|
||||
@@ -179,11 +157,14 @@
|
||||
to_chat(src, span_notice("Your name is now <b>[new_name]</b>!"))
|
||||
name = new_name
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/butter/AttackingTarget() //Makes the butter bear's attacks against vertical targets slip said targets
|
||||
/mob/living/basic/bear/butter/UnarmedAttack(atom/target, proximity_flag, list/modifiers) //Makes the butter bear's attacks against vertical targets slip said targets
|
||||
. = ..()
|
||||
if(isliving(target)) //we don't check for . here, since attack_animal() (and thus AttackingTarget()) will return false if your damage dealt is 0
|
||||
var/mob/living/L = target
|
||||
if((L.body_position == STANDING_UP))
|
||||
L.Knockdown(20)
|
||||
playsound(loc, 'sound/misc/slip.ogg', 15)
|
||||
L.visible_message(span_danger("[L] slips on [src]'s butter!"))
|
||||
if(!. || !isliving(target))
|
||||
return
|
||||
var/mob/living/victim = target
|
||||
if((victim.body_position != STANDING_UP))
|
||||
return
|
||||
victim.Knockdown(20)
|
||||
playsound(loc, 'sound/misc/slip.ogg', 15)
|
||||
victim.visible_message(span_danger("[victim] slips on [src]'s butter!"))
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
/datum/ai_behavior/basic_melee_attack/bear
|
||||
action_cooldown = 2 SECONDS
|
||||
|
||||
/datum/ai_behavior/find_hunt_target/find_hive
|
||||
|
||||
/datum/ai_behavior/find_hunt_target/find_hive/valid_dinner(mob/living/source, obj/structure/beebox/hive, radius)
|
||||
if(!length(hive.honeycombs))
|
||||
return FALSE
|
||||
return can_see(source, hive, radius)
|
||||
|
||||
/datum/ai_behavior/hunt_target/find_hive
|
||||
always_reset_target = TRUE
|
||||
|
||||
/datum/ai_behavior/hunt_target/find_hive/target_caught(mob/living/hunter, obj/structure/beebox/hive_target)
|
||||
var/datum/callback/callback = CALLBACK(hunter, TYPE_PROC_REF(/mob/living/basic/bear, extract_combs), hive_target)
|
||||
callback.Invoke()
|
||||
|
||||
/datum/ai_behavior/find_hunt_target/find_honeycomb
|
||||
|
||||
/datum/ai_behavior/find_hunt_target/find_honeycomb/setup(datum/ai_controller/controller, ability_key, target_key)
|
||||
var/mob/living/living_pawn = controller.pawn
|
||||
if(living_pawn.pulling) //we already pulling a honey
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/ai_behavior/hunt_target/find_honeycomb
|
||||
always_reset_target = TRUE
|
||||
|
||||
/datum/ai_behavior/hunt_target/find_honeycomb/target_caught(mob/living/hunter, obj/item/food/honeycomb/food_target)
|
||||
hunter.start_pulling(food_target)
|
||||
@@ -0,0 +1,33 @@
|
||||
/datum/ai_controller/basic_controller/bear
|
||||
blackboard = list(
|
||||
BB_TARGETTING_DATUM = new /datum/targetting_datum/basic,
|
||||
)
|
||||
|
||||
ai_movement = /datum/ai_movement/basic_avoidance
|
||||
idle_behavior = /datum/idle_behavior/idle_random_walk
|
||||
planning_subtrees = list(
|
||||
/datum/ai_planning_subtree/target_retaliate,
|
||||
/datum/ai_planning_subtree/simple_find_target,
|
||||
/datum/ai_planning_subtree/basic_melee_attack_subtree/bear,
|
||||
/datum/ai_planning_subtree/climb_trees,
|
||||
/datum/ai_planning_subtree/find_and_hunt_target/find_hive,
|
||||
/datum/ai_planning_subtree/find_and_hunt_target/find_honeycomb,
|
||||
/datum/ai_planning_subtree/random_speech/bear,
|
||||
)
|
||||
|
||||
/datum/ai_planning_subtree/basic_melee_attack_subtree/bear
|
||||
melee_attack_behavior = /datum/ai_behavior/basic_melee_attack/bear
|
||||
|
||||
/datum/ai_planning_subtree/find_and_hunt_target/find_hive
|
||||
target_key = BB_FOUND_HONEY
|
||||
hunting_behavior = /datum/ai_behavior/hunt_target/find_hive
|
||||
finding_behavior = /datum/ai_behavior/find_hunt_target/find_hive
|
||||
hunt_targets = list(/obj/structure/beebox)
|
||||
hunt_range = 10
|
||||
|
||||
/datum/ai_planning_subtree/find_and_hunt_target/find_honeycomb
|
||||
target_key = BB_LOW_PRIORITY_HUNTING_TARGET
|
||||
hunting_behavior = /datum/ai_behavior/hunt_target/find_honeycomb
|
||||
finding_behavior = /datum/ai_behavior/find_hunt_target/find_honeycomb
|
||||
hunt_targets = list(/obj/item/food/honeycomb)
|
||||
hunt_range = 10
|
||||
@@ -1485,6 +1485,7 @@
|
||||
if(WABBAJACK_ANIMAL)
|
||||
var/picked_animal = pick(
|
||||
/mob/living/basic/bat,
|
||||
/mob/living/basic/bear,
|
||||
/mob/living/basic/butterfly,
|
||||
/mob/living/basic/carp,
|
||||
/mob/living/basic/carp/magic,
|
||||
@@ -1509,7 +1510,6 @@
|
||||
/mob/living/basic/stickman,
|
||||
/mob/living/basic/stickman/dog,
|
||||
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher,
|
||||
/mob/living/simple_animal/hostile/bear,
|
||||
/mob/living/simple_animal/hostile/blob/blobbernaut/independent,
|
||||
/mob/living/simple_animal/hostile/gorilla,
|
||||
/mob/living/simple_animal/hostile/megafauna/dragon/lesser,
|
||||
|
||||
@@ -390,7 +390,7 @@
|
||||
return TRUE
|
||||
if(ispath(MP, /mob/living/basic/mouse))
|
||||
return TRUE
|
||||
if(ispath(MP, /mob/living/simple_animal/hostile/bear))
|
||||
if(ispath(MP, /mob/living/basic/bear))
|
||||
return TRUE
|
||||
if(ispath(MP, /mob/living/simple_animal/parrot))
|
||||
return TRUE //Parrots are no longer unfinished! -Nodrak
|
||||
|
||||
@@ -639,6 +639,7 @@
|
||||
to_chat(user, message)
|
||||
|
||||
var/static/list/valid_animals = list(
|
||||
/mob/living/basic/bear,
|
||||
/mob/living/basic/bee,
|
||||
/mob/living/basic/butterfly,
|
||||
/mob/living/basic/carp,
|
||||
@@ -648,7 +649,6 @@
|
||||
/mob/living/basic/pet/dog/corgi,
|
||||
/mob/living/basic/pet/dog/pug,
|
||||
/mob/living/basic/pet/fox,
|
||||
/mob/living/simple_animal/hostile/bear,
|
||||
/mob/living/simple_animal/parrot/natural,
|
||||
/mob/living/simple_animal/pet/cat,
|
||||
)
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
/datum/reagent/medicine/insulin = -2) //depletes hunny.
|
||||
|
||||
virus_suspectibility = 2
|
||||
resulting_atoms = list(/mob/living/simple_animal/hostile/bear = 1)
|
||||
resulting_atoms = list(/mob/living/basic/bear = 1)
|
||||
|
||||
/datum/micro_organism/cell_line/carp
|
||||
desc = "Cyprinid cells"
|
||||
|
||||
@@ -411,7 +411,7 @@
|
||||
alarm_beep()
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/fightpit
|
||||
/mob/living/basic/bear/fightpit
|
||||
name = "fight pit bear"
|
||||
desc = "This bear's trained through ancient Russian secrets to fear the walls of its glass prison."
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
|
||||
@@ -90,12 +90,6 @@
|
||||
/mob/living/simple_animal/hostile/asteroid/polarbear,
|
||||
/mob/living/simple_animal/hostile/asteroid/polarbear/lesser,
|
||||
/mob/living/simple_animal/hostile/asteroid/wolf,
|
||||
/mob/living/simple_animal/hostile/bear,
|
||||
/mob/living/simple_animal/hostile/bear/butter,
|
||||
/mob/living/simple_animal/hostile/bear/fightpit,
|
||||
/mob/living/simple_animal/hostile/bear/hudson,
|
||||
/mob/living/simple_animal/hostile/bear/russian,
|
||||
/mob/living/simple_animal/hostile/bear/snow,
|
||||
/mob/living/simple_animal/hostile/big_legion,
|
||||
/mob/living/simple_animal/hostile/blob,
|
||||
/mob/living/simple_animal/hostile/blob/blobbernaut,
|
||||
@@ -274,7 +268,6 @@
|
||||
|
||||
//MODULAR SKYRAT ENTRIES
|
||||
//PLEASE REFACTOR THESE AS YOU CAN
|
||||
/mob/living/simple_animal/hostile/bear/wojtek,
|
||||
/mob/living/simple_animal/hostile/bigcrab,
|
||||
/mob/living/simple_animal/hostile/blackmesa,
|
||||
/mob/living/simple_animal/hostile/blackmesa/blackops,
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
desc = "The Curator's pet bnuuy."
|
||||
gender = FEMALE
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/wojtek
|
||||
/mob/living/basic/bear/wojtek
|
||||
name = "Wojtek"
|
||||
real_name = "Wojtek"
|
||||
desc = "The bearer of Bluespace Artillery."
|
||||
|
||||
+7
-1
@@ -864,6 +864,7 @@
|
||||
#include "code\datums\ai\bane\bane_subtrees.dm"
|
||||
#include "code\datums\ai\basic_mobs\base_basic_controller.dm"
|
||||
#include "code\datums\ai\basic_mobs\basic_ai_behaviors\basic_attacking.dm"
|
||||
#include "code\datums\ai\basic_mobs\basic_ai_behaviors\climb_tree.dm"
|
||||
#include "code\datums\ai\basic_mobs\basic_ai_behaviors\find_parent.dm"
|
||||
#include "code\datums\ai\basic_mobs\basic_ai_behaviors\nearest_targetting.dm"
|
||||
#include "code\datums\ai\basic_mobs\basic_ai_behaviors\pick_up_item.dm"
|
||||
@@ -877,6 +878,7 @@
|
||||
#include "code\datums\ai\basic_mobs\basic_ai_behaviors\ventcrawling.dm"
|
||||
#include "code\datums\ai\basic_mobs\basic_ai_behaviors\write_on_paper.dm"
|
||||
#include "code\datums\ai\basic_mobs\basic_subtrees\attack_obstacle_in_path.dm"
|
||||
#include "code\datums\ai\basic_mobs\basic_subtrees\climb_tree.dm"
|
||||
#include "code\datums\ai\basic_mobs\basic_subtrees\find_food.dm"
|
||||
#include "code\datums\ai\basic_mobs\basic_subtrees\find_paper_and_write.dm"
|
||||
#include "code\datums\ai\basic_mobs\basic_subtrees\find_parent.dm"
|
||||
@@ -1152,6 +1154,7 @@
|
||||
#include "code\datums\components\toggle_suit.dm"
|
||||
#include "code\datums\components\transforming.dm"
|
||||
#include "code\datums\components\trapdoor.dm"
|
||||
#include "code\datums\components\tree_climber.dm"
|
||||
#include "code\datums\components\twohanded.dm"
|
||||
#include "code\datums\components\udder.dm"
|
||||
#include "code\datums\components\unbreakable.dm"
|
||||
@@ -1972,6 +1975,7 @@
|
||||
#include "code\game\objects\effects\temporary_visuals\projectiles\tracer.dm"
|
||||
#include "code\game\objects\items\airlock_painter.dm"
|
||||
#include "code\game\objects\items\apc_frame.dm"
|
||||
#include "code\game\objects\items\bear_armor.dm"
|
||||
#include "code\game\objects\items\binoculars.dm"
|
||||
#include "code\game\objects\items\blueprints.dm"
|
||||
#include "code\game\objects\items\body_egg.dm"
|
||||
@@ -4188,6 +4192,9 @@
|
||||
#include "code\modules\mob\living\basic\space_fauna\lightgeist.dm"
|
||||
#include "code\modules\mob\living\basic\space_fauna\mushroom.dm"
|
||||
#include "code\modules\mob\living\basic\space_fauna\spaceman.dm"
|
||||
#include "code\modules\mob\living\basic\space_fauna\bear\_bear.dm"
|
||||
#include "code\modules\mob\living\basic\space_fauna\bear\bear_ai_behavior.dm"
|
||||
#include "code\modules\mob\living\basic\space_fauna\bear\bear_ai_subtree.dm"
|
||||
#include "code\modules\mob\living\basic\space_fauna\carp\carp.dm"
|
||||
#include "code\modules\mob\living\basic\space_fauna\carp\carp_abilities.dm"
|
||||
#include "code\modules\mob\living\basic\space_fauna\carp\carp_ai_actions.dm"
|
||||
@@ -4425,7 +4432,6 @@
|
||||
#include "code\modules\mob\living\simple_animal\guardian\types\standard.dm"
|
||||
#include "code\modules\mob\living\simple_animal\guardian\types\support.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\alien.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\bear.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\blob.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\blobbernaut.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\blobspore.dm"
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
/mob/living/simple_animal/hostile/bear : /mob/living/basic/bear{@OLD;wander=@SKIP;speak=@SKIP}
|
||||
/mob/living/simple_animal/hostile/bear/butter : /mob/living/basic/bear/butter{@OLD;wander=@SKIP;speak=@SKIP}
|
||||
/mob/living/simple_animal/hostile/bear/hudson : /mob/living/basic/bear/hudson{@OLD;wander=@SKIP;speak=@SKIP}
|
||||
/mob/living/simple_animal/hostile/bear/fightpit : /mob/living/basic/bear/fightpit{@OLD;wander=@SKIP;speak=@SKIP}
|
||||
/mob/living/simple_animal/hostile/bear/russian : /mob/living/basic/bear/russian{@OLD;wander=@SKIP;speak=@SKIP}
|
||||
/mob/living/simple_animal/hostile/bear/snow : /mob/living/basic/bear/snow{@OLD;wander=@SKIP;speak=@SKIP}
|
||||
Reference in New Issue
Block a user