[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:
SkyratBot
2021-01-08 22:53:11 +01:00
committed by GitHub
co-authored by Krysonism Avunia Takiya
parent d4913214f1
commit f8a138d332
8 changed files with 219 additions and 28 deletions
+1
View File
@@ -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"
+4 -2
View File
@@ -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
+1 -1
View File
@@ -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