mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-19 03:55:11 +01:00
Converts Killer Tomatoes to Basic Mobs (#75516)
Just another lightweight PR porting over a simple animal to the basic mob framework with zero additional AI implementation (it's a killer tomato- it spawns into the world to maul you. how much more intricate does it need to be?).
This commit is contained in:
@@ -145,3 +145,9 @@
|
||||
sound = list('sound/creatures/pig1.ogg', 'sound/creatures/pig2.ogg')
|
||||
emote_hear = list("snorts.")
|
||||
emote_see = list("sniffs around.")
|
||||
|
||||
/datum/ai_planning_subtree/random_speech/killer_tomato
|
||||
speech_chance = 3
|
||||
speak = list("gnashes.", "growls lowly.", "snarls.")
|
||||
emote_hear = list("gnashes.")
|
||||
emote_see = list("salivates.")
|
||||
|
||||
@@ -228,11 +228,16 @@
|
||||
//entirely independent vars (not related to the action or story type)
|
||||
|
||||
var/static/list/something_pool = list(
|
||||
/mob/living/basic/bat,
|
||||
/mob/living/basic/carp,
|
||||
/mob/living/basic/carp/magic,
|
||||
/mob/living/basic/carp/magic/chaos,
|
||||
/mob/living/basic/cow,
|
||||
/mob/living/basic/cow/wisdom,
|
||||
/mob/living/basic/giant_spider,
|
||||
/mob/living/basic/giant_spider/hunter,
|
||||
/mob/living/basic/killer_tomato,
|
||||
/mob/living/basic/lizard,
|
||||
/mob/living/basic/mouse,
|
||||
/mob/living/basic/pet/dog/breaddog,
|
||||
/mob/living/basic/pet/dog/corgi,
|
||||
@@ -248,16 +253,11 @@
|
||||
/mob/living/simple_animal/hostile/asteroid/goliath/beast,
|
||||
/mob/living/simple_animal/hostile/bear,
|
||||
/mob/living/simple_animal/hostile/blob/blobbernaut/independent,
|
||||
/mob/living/basic/giant_spider,
|
||||
/mob/living/basic/giant_spider/hunter,
|
||||
/mob/living/simple_animal/hostile/gorilla,
|
||||
/mob/living/simple_animal/hostile/headcrab,
|
||||
/mob/living/simple_animal/hostile/killertomato,
|
||||
/mob/living/basic/lizard,
|
||||
/mob/living/simple_animal/hostile/megafauna/dragon/lesser,
|
||||
/mob/living/simple_animal/hostile/morph,
|
||||
/mob/living/simple_animal/hostile/mushroom,
|
||||
/mob/living/basic/bat,
|
||||
/mob/living/simple_animal/hostile/retaliate/goat,
|
||||
/mob/living/simple_animal/parrot,
|
||||
/mob/living/simple_animal/pet/cat,
|
||||
|
||||
@@ -354,7 +354,7 @@
|
||||
var/static/list/permitted_mobs = list(
|
||||
/mob/living/basic/wumborian_fugu,
|
||||
/mob/living/simple_animal/hostile/skeleton,
|
||||
/mob/living/simple_animal/hostile/killertomato,
|
||||
/mob/living/basic/killer_tomato,
|
||||
/mob/living/simple_animal/hostile/ooze,
|
||||
/mob/living/simple_animal/hostile/illusion,
|
||||
/mob/living/basic/carp,
|
||||
|
||||
@@ -1132,7 +1132,7 @@
|
||||
* Upon using strange reagent on a tray, it will spawn a killer tomato or killer tree at random.
|
||||
*/
|
||||
/obj/machinery/hydroponics/proc/spawnplant() // why would you put strange reagent in a hydro tray you monster I bet you also feed them blood
|
||||
var/list/livingplants = list(/mob/living/basic/tree, /mob/living/simple_animal/hostile/killertomato)
|
||||
var/list/livingplants = list(/mob/living/basic/tree, /mob/living/basic/killer_tomato)
|
||||
var/chosen = pick(livingplants)
|
||||
var/mob/living/C = new chosen(get_turf(src))
|
||||
C.faction = list(FACTION_PLANTS)
|
||||
|
||||
@@ -439,6 +439,15 @@
|
||||
spawned_simplemob.melee_damage_lower += round(our_seed.potency * mob_melee_multiplier)
|
||||
spawned_simplemob.melee_damage_upper += round(our_seed.potency * mob_melee_multiplier)
|
||||
spawned_simplemob.move_to_delay -= round(our_seed.production * mob_speed_multiplier)
|
||||
|
||||
if(isbasicmob(spawned_mob))
|
||||
var/mob/living/basic/spawned_basicmob = spawned_mob
|
||||
spawned_basicmob.melee_damage_lower += round(our_seed.potency * mob_melee_multiplier)
|
||||
spawned_basicmob.melee_damage_upper += round(our_seed.potency * mob_melee_multiplier)
|
||||
// basic mob speeds aren't exactly equivalent to simple animal's "move to delay" but this seems balanced enough.
|
||||
var/calculated_speed = initial(spawned_basicmob.speed) - round((our_seed.production * mob_speed_multiplier), 0.01)
|
||||
spawned_basicmob.set_varspeed(calculated_speed)
|
||||
|
||||
our_plant.forceMove(our_plant.drop_location())
|
||||
spawned_mob.visible_message(span_notice("[our_plant] growls as it suddenly awakens!"))
|
||||
qdel(our_plant)
|
||||
@@ -446,7 +455,7 @@
|
||||
/// Killer Tomato's transformation gene.
|
||||
/datum/plant_gene/trait/mob_transformation/tomato
|
||||
dangerous = TRUE
|
||||
killer_plant = /mob/living/simple_animal/hostile/killertomato
|
||||
killer_plant = /mob/living/basic/killer_tomato
|
||||
mob_health_multiplier = 0.33
|
||||
mob_melee_multiplier = 0.1
|
||||
mob_speed_multiplier = 0.02
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* ## Killer Tomatoes
|
||||
*
|
||||
* Side effect from when you try to play God through genetic engineering. Feisty fuckers that want to eat you. Dangerous.
|
||||
*/
|
||||
|
||||
/mob/living/basic/killer_tomato
|
||||
name = "Killer Tomato"
|
||||
desc = "It's a horrifyingly enormous beef tomato, and it's packing extra beef!"
|
||||
icon_state = "tomato"
|
||||
icon_living = "tomato"
|
||||
icon_dead = "tomato_dead"
|
||||
mob_biotypes = MOB_ORGANIC | MOB_PLANT
|
||||
gender = NEUTER
|
||||
speed = 1 // if you wanna touch this, keep in mind we want to incentivize people growing really good botany plants in order to make these buggers faster.
|
||||
maxHealth = 30
|
||||
health = 30
|
||||
butcher_results = list(/obj/item/food/meat/slab/killertomato = 2)
|
||||
response_help_continuous = "prods"
|
||||
response_help_simple = "prod"
|
||||
response_disarm_continuous = "pushes aside"
|
||||
response_disarm_simple = "push aside"
|
||||
response_harm_continuous = "smacks"
|
||||
response_harm_simple = "smack"
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 12
|
||||
attack_verb_continuous = "slams"
|
||||
attack_verb_simple = "slam"
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
faction = list(FACTION_PLANTS)
|
||||
|
||||
habitable_atmos = list("min_oxy" = 5, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minimum_survivable_temperature = T0C - 130
|
||||
maximum_survivable_temperature = T0C + 230
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
|
||||
ai_controller = /datum/ai_controller/basic_controller/killer_tomato
|
||||
|
||||
/mob/living/basic/killer_tomato/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT)
|
||||
|
||||
/datum/ai_controller/basic_controller/killer_tomato
|
||||
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/simple_find_target,
|
||||
/datum/ai_planning_subtree/attack_obstacle_in_path,
|
||||
/datum/ai_planning_subtree/basic_melee_attack_subtree,
|
||||
/datum/ai_planning_subtree/random_speech/killer_tomato,
|
||||
)
|
||||
@@ -1381,7 +1381,7 @@
|
||||
/mob/living/basic/statue,
|
||||
/mob/living/basic/bat,
|
||||
/mob/living/simple_animal/hostile/retaliate/goat,
|
||||
/mob/living/simple_animal/hostile/killertomato,
|
||||
/mob/living/basic/killer_tomato,
|
||||
/mob/living/basic/giant_spider,
|
||||
/mob/living/basic/giant_spider/hunter,
|
||||
/mob/living/simple_animal/hostile/blob/blobbernaut/independent,
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
/mob/living/simple_animal/hostile/killertomato
|
||||
name = "Killer Tomato"
|
||||
desc = "It's a horrifyingly enormous beef tomato, and it's packing extra beef!"
|
||||
icon_state = "tomato"
|
||||
icon_living = "tomato"
|
||||
icon_dead = "tomato_dead"
|
||||
mob_biotypes = MOB_ORGANIC | MOB_PLANT
|
||||
gender = NEUTER
|
||||
speak_chance = 0
|
||||
turns_per_move = 5
|
||||
maxHealth = 30
|
||||
health = 30
|
||||
butcher_results = list(/obj/item/food/meat/slab/killertomato = 2)
|
||||
response_help_continuous = "prods"
|
||||
response_help_simple = "prod"
|
||||
response_disarm_continuous = "pushes aside"
|
||||
response_disarm_simple = "push aside"
|
||||
response_harm_continuous = "smacks"
|
||||
response_harm_simple = "smack"
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 12
|
||||
attack_verb_continuous = "slams"
|
||||
attack_verb_simple = "slam"
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
faction = list(FACTION_PLANTS)
|
||||
|
||||
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 150
|
||||
maxbodytemp = 500
|
||||
gold_core_spawnable = HOSTILE_SPAWN
|
||||
|
||||
/mob/living/simple_animal/hostile/killertomato/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_VENTCRAWLER_ALWAYS, INNATE_TRAIT)
|
||||
@@ -383,7 +383,7 @@
|
||||
return TRUE
|
||||
if(ispath(MP, /mob/living/simple_animal/shade))
|
||||
return TRUE
|
||||
if(ispath(MP, /mob/living/simple_animal/hostile/killertomato))
|
||||
if(ispath(MP, /mob/living/basic/killer_tomato))
|
||||
return TRUE
|
||||
if(ispath(MP, /mob/living/basic/mouse))
|
||||
return TRUE
|
||||
|
||||
@@ -143,3 +143,6 @@
|
||||
|
||||
/datum/movespeed_modifier/health_scaling_speed_buff
|
||||
variable = TRUE
|
||||
|
||||
/datum/movespeed_modifier/grown_killer_tomato
|
||||
variable = TRUE
|
||||
|
||||
@@ -187,7 +187,6 @@
|
||||
/mob/living/simple_animal/hostile/jungle/mega_arachnid,
|
||||
/mob/living/simple_animal/hostile/jungle/mook,
|
||||
/mob/living/simple_animal/hostile/jungle/seedling,
|
||||
/mob/living/simple_animal/hostile/killertomato,
|
||||
/mob/living/simple_animal/hostile/lightgeist,
|
||||
/mob/living/simple_animal/hostile/megafauna,
|
||||
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner,
|
||||
|
||||
+1
-1
@@ -3945,6 +3945,7 @@
|
||||
#include "code\modules\mob\living\basic\space_fauna\faithless.dm"
|
||||
#include "code\modules\mob\living\basic\space_fauna\garden_gnome.dm"
|
||||
#include "code\modules\mob\living\basic\space_fauna\ghost.dm"
|
||||
#include "code\modules\mob\living\basic\space_fauna\killer_tomato.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"
|
||||
@@ -4194,7 +4195,6 @@
|
||||
#include "code\modules\mob\living\simple_animal\hostile\hivebot.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\hostile.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\illusion.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\killertomato.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\lightgeist.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\mimic.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\morph.dm"
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
/mob/living/simple_animal/hostile/killertomato : /mob/living/basic/killer_tomato{@OLD}
|
||||
Reference in New Issue
Block a user