mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 20:48:56 +01:00
[MIRROR] [READY]Da small cytology update. Banana glutton and proper clown mob reagents. (#2578)
* [READY]Da small cytology update. Banana glutton and proper clown mob reagents. * Resolve merge conflict Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com> Co-authored-by: Avunia Takiya <git@takiya.cloud>
This commit is contained in:
co-authored by
Krysonism
Avunia Takiya
parent
d4913214f1
commit
f8a138d332
@@ -105,6 +105,7 @@
|
||||
#define CELL_LINE_TABLE_SNAKE "cell_line_snake_table"
|
||||
#define CELL_LINE_TABLE_VATBEAST "cell_line_vatbeast_table"
|
||||
#define CELL_LINE_TABLE_NETHER "cell_line_nether_table"
|
||||
#define CELL_LINE_TABLE_GLUTTON "cell_line_glutton_table"
|
||||
|
||||
//! All cell virus types
|
||||
#define CELL_VIRUS_TABLE_GENERIC "cell_virus_generic_table"
|
||||
|
||||
@@ -25,8 +25,10 @@ GLOBAL_LIST_INIT_TYPED(cell_line_tables, /list, list(
|
||||
CELL_LINE_TABLE_SNAKE = list(/datum/micro_organism/cell_line/snake = 1),
|
||||
CELL_LINE_TABLE_VATBEAST = list(/datum/micro_organism/cell_line/vat_beast = 1),
|
||||
CELL_LINE_TABLE_NETHER = list(/datum/micro_organism/cell_line/netherworld = 1)/*,
|
||||
CELL_LINE_TABLE_CLOWN = list(/datum/micro_organism/cell_line/clown/bananaclown = 1, /datum/micro_organism/cell_line/clown/fleshclown = 1, /datum/micro_organism/cell_line/clown/longclown = 1)*/
|
||||
)) //SKYRAT EDIT CHANGE - removed clown stuff
|
||||
CELL_LINE_TABLE_CLOWN = list(/datum/micro_organism/cell_line/clown/bananaclown = 1, /datum/micro_organism/cell_line/clown/glutton = 1, /datum/micro_organism/cell_line/clown/longclown = 1),
|
||||
CELL_LINE_TABLE_GLUTTON = list(/datum/micro_organism/cell_line/clown/glutton = 1)
|
||||
*/
|
||||
)) //SKYRAT EDIT REMOVAL - removed clown stuff - Skyrat-SS13/Skyrat-tg#2405
|
||||
|
||||
///Assoc list of cell virus define | assoc list of datum | cell_virus
|
||||
GLOBAL_LIST_INIT(cell_virus_tables, list(
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
desc = "A sleek device often given to clowns on their 10th birthdays for protection. You can hear faint scratching coming from within."
|
||||
icon_state = "clown_ball"
|
||||
inhand_icon_state = "clown_ball"
|
||||
spawner_type = list(/mob/living/simple_animal/hostile/retaliate/clown/fleshclown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk, /mob/living/simple_animal/hostile/retaliate/clown/longface, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/chlown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/honcmunculus, /mob/living/simple_animal/hostile/retaliate/clown/mutant/blob, /mob/living/simple_animal/hostile/retaliate/clown/banana, /mob/living/simple_animal/hostile/retaliate/clown/honkling, /mob/living/simple_animal/hostile/retaliate/clown/lube)
|
||||
spawner_type = list(/mob/living/simple_animal/hostile/retaliate/clown/fleshclown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk, /mob/living/simple_animal/hostile/retaliate/clown/longface, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/chlown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/honcmunculus, /mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton, /mob/living/simple_animal/hostile/retaliate/clown/banana, /mob/living/simple_animal/hostile/retaliate/clown/honkling, /mob/living/simple_animal/hostile/retaliate/clown/lube)
|
||||
deliveryamt = 1
|
||||
|
||||
/obj/item/grenade/spawnergrenade/clown_broken
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
max_integrity = 200
|
||||
max_mobs = 15
|
||||
spawn_time = 150
|
||||
mob_types = list(/mob/living/simple_animal/hostile/retaliate/clown, /mob/living/simple_animal/hostile/retaliate/clown/fleshclown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk, /mob/living/simple_animal/hostile/retaliate/clown/longface, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/chlown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/honcmunculus, /mob/living/simple_animal/hostile/retaliate/clown/mutant/blob, /mob/living/simple_animal/hostile/retaliate/clown/banana, /mob/living/simple_animal/hostile/retaliate/clown/honkling, /mob/living/simple_animal/hostile/retaliate/clown/lube)
|
||||
mob_types = list(/mob/living/simple_animal/hostile/retaliate/clown, /mob/living/simple_animal/hostile/retaliate/clown/fleshclown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk, /mob/living/simple_animal/hostile/retaliate/clown/longface, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/chlown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/honcmunculus, /mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton, /mob/living/simple_animal/hostile/retaliate/clown/banana, /mob/living/simple_animal/hostile/retaliate/clown/honkling, /mob/living/simple_animal/hostile/retaliate/clown/lube)
|
||||
spawn_text = "climbs out of"
|
||||
faction = list("clown")
|
||||
|
||||
|
||||
@@ -299,21 +299,158 @@
|
||||
speed = 20
|
||||
move_to_delay = 60
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/mutant/blob
|
||||
name = "Something that was once a clown"
|
||||
desc = "A grotesque bulging figure far mutated from it's original state."
|
||||
icon_state = "blob"
|
||||
icon_living = "blob"
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton
|
||||
name = "banana glutton"
|
||||
desc = "Something that was once a clown"
|
||||
icon_state = "glutton"
|
||||
icon_living = "glutton"
|
||||
speak = list("hey, buddy", "HONK!!!", "H-h-h-H-HOOOOONK!!!!", "HONKHONKHONK!!!", "HEY, BUCKO, GET BACK HERE!!!", "HOOOOOOOONK!!!")
|
||||
emote_see = list("jiggles", "wobbles")
|
||||
health = 130
|
||||
health = 200
|
||||
mob_size = MOB_SIZE_LARGE
|
||||
speed = 20
|
||||
attack_verb_continuous = "bounces off of"
|
||||
attack_verb_simple = "bounce off of"
|
||||
loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/effect/gibspawner/xeno/bodypartless, /obj/effect/particle_effect/foam, /obj/item/soap, /obj/effect/gibspawner/generic, /obj/effect/gibspawner/generic/animal, /obj/effect/gibspawner/human/bodypartless, /obj/effect/gibspawner/human)
|
||||
attack_reagent = /datum/reagent/toxin/mindbreaker
|
||||
speed = 1
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 15
|
||||
force_threshold = 10 //lots of fat to cushion blows.
|
||||
damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 2, STAMINA = 0, OXY = 1)
|
||||
attack_verb_continuous = "slams"
|
||||
attack_verb_simple = "slam"
|
||||
loot = list(/obj/effect/gibspawner/xeno/bodypartless, /obj/effect/gibspawner/generic, /obj/effect/gibspawner/generic/animal, /obj/effect/gibspawner/human/bodypartless)
|
||||
deathsound = 'sound/misc/sadtrombone.ogg'
|
||||
food_type = list(/obj/item/food/cheesiehonkers, /obj/item/food/cornchips)
|
||||
tame_chance = 30
|
||||
///This is the list of items we are ready to regurgitate,
|
||||
var/list/prank_pouch = list()
|
||||
///This ability lets you fire a single random item from your pouch.
|
||||
var/obj/effect/proc_holder/regurgitate/my_regurgitate
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton/Initialize()
|
||||
. = ..()
|
||||
my_regurgitate = new
|
||||
AddAbility(my_regurgitate)
|
||||
add_cell_sample()
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton/attacked_by(obj/item/I, mob/living/user)
|
||||
if(!check_edible(I))
|
||||
return ..()
|
||||
eat_atom(I)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton/AttackingTarget(atom/attacked_target)
|
||||
if(!check_edible(attacked_target))
|
||||
return ..()
|
||||
eat_atom(attacked_target)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton/UnarmedAttack(atom/A)
|
||||
if(!check_edible(A))
|
||||
return ..()
|
||||
eat_atom(A)
|
||||
|
||||
///Returns whether or not the supplied movable atom is edible.
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton/proc/check_edible(atom/movable/potential_food)
|
||||
if(isliving(potential_food))
|
||||
var/mob/living/living_morsel = potential_food
|
||||
if(living_morsel.mob_size > MOB_SIZE_SMALL)
|
||||
return FALSE
|
||||
else
|
||||
return TRUE
|
||||
|
||||
if(IS_EDIBLE(potential_food))
|
||||
if(prank_pouch.len >= 8)
|
||||
to_chat(src, "<span class='warning'>Your prank pouch is filled to the brim! You don't think you can swallow any more morsels right now.</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
///This proc eats the atom, certain funny items are stored directly in the prank pouch while bananas grant a heal based on their potency and the peels are retained in the pouch.
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton/proc/eat_atom(atom/movable/eaten_atom)
|
||||
|
||||
var/static/funny_items = list(/obj/item/food/pie/cream,
|
||||
/obj/item/food/grown/tomato,
|
||||
/obj/item/food/meatclown)
|
||||
|
||||
visible_message("<span class='warning>[src] eats [eaten_atom]!</span>", "<span class='notice'>You eat [eaten_atom].</span>")
|
||||
if(is_type_in_list(eaten_atom, funny_items))
|
||||
eaten_atom.forceMove(src)
|
||||
prank_pouch += eaten_atom
|
||||
|
||||
else if(istype(eaten_atom, /obj/item/food/grown/banana))
|
||||
var/obj/item/food/grown/banana/banana_morsel = eaten_atom
|
||||
adjustBruteLoss(-banana_morsel.seed.potency * 0.25)
|
||||
prank_pouch += banana_morsel.generate_trash(src)
|
||||
qdel(eaten_atom)
|
||||
else
|
||||
qdel(eaten_atom)
|
||||
playsound(loc,'sound/items/eatfood.ogg', rand(30,50), TRUE)
|
||||
flick("glutton_mouth", src)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton/tamed()
|
||||
. = ..()
|
||||
can_buckle = TRUE
|
||||
buckle_lying = 0
|
||||
var/datum/component/riding/riding = LoadComponent(/datum/component/riding)
|
||||
riding.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 24), TEXT_SOUTH = list(0, 24), TEXT_EAST = list(-16, 24), TEXT_WEST = list(16, 24)))
|
||||
riding.set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER)
|
||||
riding.set_vehicle_dir_layer(NORTH, OBJ_LAYER)
|
||||
riding.set_vehicle_dir_layer(EAST, ABOVE_MOB_LAYER)
|
||||
riding.set_vehicle_dir_layer(WEST, ABOVE_MOB_LAYER)
|
||||
|
||||
//these 0 offsets are needed for the riding component to work properly with base pixel offset mobs for some cursed reason.
|
||||
riding.set_vehicle_dir_offsets(SOUTH, 0, 0)
|
||||
riding.set_vehicle_dir_offsets(NORTH, 0, 0)
|
||||
riding.set_vehicle_dir_offsets(EAST, 0, 0)
|
||||
riding.set_vehicle_dir_offsets(WEST, 0, 0)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton/add_cell_sample()
|
||||
AddElement(/datum/element/swabable, CELL_LINE_TABLE_GLUTTON, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton/Exited(atom/movable/AM, atom/newLoc)
|
||||
. = ..()
|
||||
prank_pouch -= AM
|
||||
|
||||
///This ability will let you fire one random item from your pouch,
|
||||
/obj/effect/proc_holder/regurgitate
|
||||
name = "Regurgitate"
|
||||
desc = "Regurgitates a single item from the depths of your pouch."
|
||||
action_background_icon_state = "bg_changeling"
|
||||
action_icon = 'icons/mob/actions/actions_animal.dmi'
|
||||
action_icon_state = "regurgitate"
|
||||
active = FALSE
|
||||
|
||||
/obj/effect/proc_holder/regurgitate/Click(location, control, params)
|
||||
. = ..()
|
||||
if(!isliving(usr))
|
||||
return TRUE
|
||||
var/mob/living/user = usr
|
||||
fire(user)
|
||||
|
||||
/obj/effect/proc_holder/regurgitate/fire(mob/living/carbon/user)
|
||||
if(active)
|
||||
user.icon_state = initial(user.icon_state)
|
||||
remove_ranged_ability("<span class='notice'>Your throat muscles relax.</span>")
|
||||
else
|
||||
user.icon_state = "glutton_tongue"
|
||||
add_ranged_ability(user, "<span class='notice'>Your throat muscles tense up. <B>Left-click to regurgitate a funny morsel!</B></span>", TRUE)
|
||||
|
||||
/obj/effect/proc_holder/regurgitate/InterceptClickOn(mob/living/caller, params, atom/target)
|
||||
. = ..()
|
||||
|
||||
if(.)
|
||||
return
|
||||
|
||||
if(!istype(ranged_ability_user, /mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton) || ranged_ability_user.stat)
|
||||
remove_ranged_ability()
|
||||
return
|
||||
|
||||
var/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton/pouch_owner = ranged_ability_user
|
||||
if(!pouch_owner.prank_pouch.len)
|
||||
//active = FALSE
|
||||
pouch_owner.icon_state = "glutton"
|
||||
remove_ranged_ability("<span class='notice'>Your prank pouch is empty,.</span>")
|
||||
return
|
||||
|
||||
var/obj/item/projected_morsel = pick(pouch_owner.prank_pouch)
|
||||
projected_morsel.forceMove(pouch_owner.loc)
|
||||
projected_morsel.throw_at(target, 8, 2, pouch_owner)
|
||||
flick("glutton_mouth", pouch_owner)
|
||||
playsound(pouch_owner, 'sound/misc/soggy.ogg', 75)
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/mutant/blob/slow
|
||||
speed = 50
|
||||
move_to_delay = 120
|
||||
|
||||
@@ -418,31 +418,82 @@
|
||||
vat.visible_message("<span class='warning'>The biological sample in [vat] seems to have created something horrific!</span>")
|
||||
QDEL_NULL(vat.biological_sample) //Kill off the sample, we're done
|
||||
|
||||
var/mob/selected_mob = pick(list(/mob/living/simple_animal/hostile/retaliate/clown/mutant/slow, /mob/living/simple_animal/hostile/retaliate/clown/mutant/blob/slow))
|
||||
var/mob/selected_mob = pick(list(/mob/living/simple_animal/hostile/retaliate/clown/mutant/slow, /mob/living/simple_animal/hostile/retaliate/clown/fleshclown))
|
||||
|
||||
new selected_mob(get_turf(vat))
|
||||
|
||||
/datum/micro_organism/cell_line/clown/bananaclown
|
||||
desc = "Clown bits with banana chunks"
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/banana)
|
||||
supplementary_reagents = list(/datum/reagent/medicine/coagulant/banana_peel = 4)
|
||||
required_reagents = list(
|
||||
/datum/reagent/consumable/nutriment/protein,
|
||||
/datum/reagent/consumable/banana)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/saltpetre = 4,
|
||||
/datum/reagent/ammonia = 3,
|
||||
/datum/reagent/carbondioxide = 3,
|
||||
/datum/reagent/medicine/coagulant/banana_peel = 2,
|
||||
/datum/reagent/plantnutriment/robustharvestnutriment = 1)
|
||||
|
||||
suppressive_reagents = list(
|
||||
/datum/reagent/consumable/clownstears = -8,
|
||||
/datum/reagent/toxin/plantbgone = -4,
|
||||
/datum/reagent/consumable/ethanol/silencer = -3,
|
||||
/datum/reagent/consumable/nothing = -2,
|
||||
/datum/reagent/fuel/oil = -1)
|
||||
|
||||
|
||||
resulting_atoms = list(/mob/living/simple_animal/hostile/retaliate/clown/banana = 1)
|
||||
|
||||
/datum/micro_organism/cell_line/clown/fleshclown
|
||||
desc = "Overly fleshy clown bits"
|
||||
/datum/micro_organism/cell_line/clown/glutton
|
||||
desc = "hyperadipogenic clown stem cells"
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/banana)
|
||||
supplementary_reagents = list(/datum/reagent/consumable/nutriment/protein = 4)
|
||||
required_reagents = list(
|
||||
/datum/reagent/consumable/nutriment/protein,
|
||||
/datum/reagent/consumable/banana,
|
||||
/datum/reagent/medicine/c2/synthflesh)
|
||||
//r/chonkers
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/consumable/vanillapudding = 8,
|
||||
/datum/reagent/growthserum = 6,
|
||||
/datum/reagent/consumable/nutriment/peptides = 4,
|
||||
/datum/reagent/consumable/cornoil = 3,
|
||||
/datum/reagent/consumable/cooking_oil = 1,
|
||||
/datum/reagent/consumable/space_cola = 1)
|
||||
|
||||
resulting_atoms = list(/mob/living/simple_animal/hostile/retaliate/clown/fleshclown = 1)
|
||||
suppressive_reagents = list(
|
||||
/datum/reagent/consumable/clownstears = -8,
|
||||
/datum/reagent/toxin/minttoxin = -6,
|
||||
/datum/reagent/consumable/ethanol/silencer = -3,
|
||||
/datum/reagent/consumable/ethanol/fernet = -3,
|
||||
/datum/reagent/toxin/lipolicide = -3,
|
||||
/datum/reagent/consumable/nothing = -2,
|
||||
/datum/reagent/toxin/bad_food = -1)
|
||||
|
||||
|
||||
resulting_atoms = list(/mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton = 1)
|
||||
|
||||
/datum/micro_organism/cell_line/clown/longclown
|
||||
desc = "long clown bits"
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/banana)
|
||||
supplementary_reagents = list(/datum/reagent/consumable/laughter = 4)
|
||||
required_reagents = list(
|
||||
/datum/reagent/consumable/nutriment/protein,
|
||||
/datum/reagent/consumable/banana)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/drug/happiness = 5,
|
||||
/datum/reagent/toxin/mimesbane = 4,
|
||||
/datum/reagent/consumable/laughter = 3,
|
||||
/datum/reagent/nitrous_oxide = 2)
|
||||
|
||||
suppressive_reagents = list(
|
||||
/datum/reagent/consumable/clownstears = -8,
|
||||
/datum/reagent/consumable/ethanol/beepsky_smash = -3,
|
||||
/datum/reagent/consumable/ethanol/silencer = -3,
|
||||
/datum/reagent/toxin/mutetoxin = -3,
|
||||
/datum/reagent/consumable/nothing = -2,
|
||||
/datum/reagent/sulfur = -1)
|
||||
|
||||
resulting_atoms = list(/mob/living/simple_animal/hostile/retaliate/clown/longface = 1)
|
||||
*/
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 84 KiB |
Reference in New Issue
Block a user