Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port and improve Clowndola #22

Merged
merged 3 commits into from
Sep 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions code/__DEFINES/~monkestation/virology.dm
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#define DISEASE_TRANSFORMATION "transformation"
#define DISEASE_GONDOLA "gondola"
#define DISEASE_GONDOLA_DIGITAL "digital_gondola"
#define DISEASE_CLOWNDOLA "clowndola"
#define DISEASE_XENO "xeno"
#define DISEASE_CORGI "corgi"
#define DISEASE_SLIME "slime"
Expand Down
38 changes: 38 additions & 0 deletions code/game/objects/items/food/meatslab.dm
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,25 @@
/obj/item/food/meat/slab/gondola/make_grillable()
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/gondola, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE, /datum/pollutant/food/fried_meat) //Add medium rare later maybe?

// Olympus Station Edit Start
/obj/item/food/meat/slab/clowndola
name = "clowndola meat"
desc = "According to NT, clowndola are a protected species that must be left alone."
food_reagents = list(
/datum/reagent/consumable/nutriment = 3,
/datum/reagent/clowndola_mutation_toxin = 5,
/datum/reagent/consumable/cooking_oil = 3
)
tastes = list("meat" = 4, "delirium" = 1)
foodtypes = RAW | MEAT | GORE

/obj/item/food/meat/slab/clowndola/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/meat/rawcutlet/clowndola, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut")

/obj/item/food/meat/slab/clowndola/make_grillable()
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/clowndola, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE, /datum/pollutant/food/fried_meat) //Add medium rare later maybe?
// Olympus Station Edit End

/obj/item/food/meat/slab/penguin
name = "penguin meat"
icon_state = "birdmeat"
Expand Down Expand Up @@ -507,6 +526,10 @@
name = "gondola steak"
tastes = list("meat" = 1, "tranquility" = 1)

/obj/item/food/meat/steak/clowndola
name = "clowndola steak"
tastes = list("meat" = 1, "delirium" = 1)

/obj/item/food/meat/steak/penguin
name = "penguin steak"
icon_state = "birdsteak"
Expand Down Expand Up @@ -631,6 +654,15 @@
/obj/item/food/meat/rawcutlet/gondola/make_grillable()
AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/gondola, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE, /datum/pollutant/food/fried_meat)

// Olympus Station Edit Start
/obj/item/food/meat/rawcutlet/clowndola
name = "raw clowndola cutlet"
tastes = list("meat" = 1, "delirium" = 1)

/obj/item/food/meat/rawcutlet/clowndola/make_grillable()
AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/clowndola, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE, /datum/pollutant/food/fried_meat)
// Olympus Station Edit End

/obj/item/food/meat/rawcutlet/penguin
name = "raw penguin cutlet"
tastes = list("beef" = 1, "cod fish" = 1)
Expand Down Expand Up @@ -713,6 +745,12 @@
name = "gondola cutlet"
tastes = list("meat" = 1, "tranquility" = 1)

// Olympus Station Edit Start
/obj/item/food/meat/cutlet/clowndola
name = "clowndola cutlet"
tastes = list("meat" = 1, "delirium" = 1)
// Olympus Station Edit End

/obj/item/food/meat/cutlet/penguin
name = "penguin cutlet"
tastes = list("beef" = 1, "cod fish" = 1)
Expand Down
22 changes: 22 additions & 0 deletions code/modules/mob/living/simple_animal/friendly/gondola.dm
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,28 @@
add_overlay(eyes_overlay)
add_overlay(moustache_overlay)

// Olympus Station Edit Start
/mob/living/simple_animal/pet/gondola/attackby(obj/item/O, mob/user, params)

if(istype(O, /obj/item/food/grown/banana))
to_chat(user, span_notice("You feed [src] the banana. He starts to feel funny..."))
addtimer(CALLBACK(src, PROC_REF(transformToClowndola)), 5 SECONDS)
src.Disorient(6 SECONDS, 0, paralyze = 3 SECONDS, stack_status = FALSE)
qdel(O)
return
return ..()

/mob/living/simple_animal/pet/gondola/proc/transformToClowndola()
playsound(src, 'sound/items/bikehorn.ogg', 50, TRUE)
visible_message(span_warning("[src] transforms into a Clowndola!"))
var/mob/living/simple_animal/hostile/retaliate/clowndola/new_clowndola = new(get_turf(src))
if(name != "gondola")
new_clowndola.name = "[name] the Clowndola"
new_clowndola.Disorient(3 SECONDS, 0, paralyze = 3 SECONDS, stack_status = FALSE)
qdel(src)

// Olympus Station Edit End

/mob/living/simple_animal/pet/gondola/can_speak(allow_mimes = FALSE)
return FALSE // Gondolas are the silent walker.

Expand Down
15 changes: 15 additions & 0 deletions code/modules/reagents/chemistry/reagents/other_reagents.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2513,6 +2513,21 @@
exposed_mob.infect_disease_predefined(disease_cat, TRUE, "[ROUND_TIME()] Gondola Reagent Infections [key_name(exposed_mob)]")
//exposed_mob.ForceContractDisease(new gondola_disease, FALSE, TRUE) //TODO VIROLOGY SLIME TRANS

// Olympus Station Edit Start
/datum/reagent/clowndola_mutation_toxin
name = "Delirium"
description = "A highly mutative liquid of unknown origin."
color = "#ff9900" //RGB: 154, 103, 80
taste_description = "inner chaos"
penetrates_skin = NONE
var/disease_cat = DISEASE_CLOWNDOLA

/datum/reagent/clowndola_mutation_toxin/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
. = ..()
if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection))))
exposed_mob.infect_disease_predefined(disease_cat, TRUE, "[ROUND_TIME()] Clowndola Reagent Infections [key_name(exposed_mob)]")
//exposed_mob.ForceContractDisease(new clowndola_disease, FALSE, TRUE) //TODO VIROLOGY SLIME TRANS
// Olympus Station Edit End

/datum/reagent/spider_extract
name = "Spider Extract"
Expand Down
2 changes: 2 additions & 0 deletions config/admins.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
#Ranks will match to those with the same name in admin_ranks.txt, if a match isn't found the user won't be adminned.
#If SQL-based admin loading is enabled, admins listed here will always be loaded first and will override any duplicate entries in the database.

Kryyto = Game Master

Optimumtact = Host
CitrusGender = Game Master
NewSta = Game Master
Expand Down
Binary file modified icons/mob/simple/gondolas.dmi
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
/mob/living/simple_animal/hostile/retaliate/clowndola
name = "Clowndola"
real_name = "Clowndola"
desc = "Clowndola is the noisy walker. Having no hands he embodies the Taoist principle of honk (HonkMother) while his crazy eyes shows his utter and complete acceptance of the world as it is. Its hide is extremely valuable."
response_help_continuous = "pets"
response_help_simple = "pet"
response_disarm_continuous = "gently pushes aside"
response_disarm_simple = "gently push aside"
response_harm_continuous = "kicks"
response_harm_simple = "kick"
icon_state = "clowndola"
icon_living = "clowndola"
//icon_dead = "clowndola_dead"
icon = 'icons/mob/simple/gondolas.dmi'
//Gondolas aren't affected by cold.
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
maxbodytemp = 1500
maxHealth = 100
health = 100
attack_sound = list('sound/items/airhorn2.ogg', 'sound/items/airhorn.ogg', 'sound/items/carhorn.ogg', 'sound/items/bikehorn.ogg')
speak_chance = 20
turns_per_move = 1
maxHealth = 80
health = 80
loot = list(/obj/effect/decal/cleanable/blood/gibs, /obj/item/stack/sheet/animalhide/gondola = 1, /obj/item/food/meat/slab/clowndola = 1)
obj_damage = 0
harm_intent_damage = 1
melee_damage_lower = 1
melee_damage_upper = 1
attack_same = FALSE
attack_verb_continuous = "honks at"
attack_verb_simple = "honk"
faction = list(FACTION_GONDOLA)
environment_smash = ENVIRONMENT_SMASH_NONE
mouse_opacity = MOUSE_OPACITY_ICON
robust_searching = 1
unique_name = 1
speak_emote = list("honk!", "Honk?", "HONK HONK")

rapid_melee = 4
var/list/injection_reagents


/mob/living/simple_animal/hostile/retaliate/clowndola/AttackingTarget()
. = ..()
if(. && isliving(target))
var/mob/living/T = target
if(T.reagents)
if(health <= maxHealth/2)
injection_reagents = list(
/datum/reagent/drug/happiness = 1,
/datum/reagent/consumable/superlaughter = 1,
/datum/reagent/consumable/banana = 1
)
else
injection_reagents = list(
/datum/reagent/drug/happiness = 1,
/datum/reagent/consumable/laughter = 1,
/datum/reagent/consumable/banana = 1
)
for(var/reagent in injection_reagents)
T.reagents.add_reagent(reagent, injection_reagents[reagent])


/mob/living/simple_animal/hostile/retaliate/clowndola/examine(mob/user)
. = ..()
if(health >= maxHealth)
. += "<span class='info'>It looks healthy and has a crazy smile for no apparent reason.</span>"
else
. += "<span class='info'>It looks like it's been roughed up.</span>"

/mob/living/simple_animal/hostile/retaliate/clowndola/attackby(obj/item/O, mob/user, params)
if(istype(O, /obj/item/food/grown/banana/mime))
src.Disorient(5 SECONDS, 0, paralyze = 5 SECONDS, stack_status = TRUE)
addtimer(CALLBACK(src, PROC_REF(mimebananaEaten)), 5 SECONDS)
qdel(O)
return
return ..()

/mob/living/simple_animal/hostile/retaliate/clowndola/proc/mimebananaEaten()
playsound(src, 'sound/items/bikehorn.ogg', 50, TRUE)
visible_message(span_warning("[src] explodes!"))
new /obj/effect/gibspawner/generic(get_turf(src))
death(src)
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@
form = "Gondola Cells"
origin = "Gondola Toxins"
category = DISEASE_GONDOLA
desc = "Consuming the flesh of a Gondola comes at a terrible price."

symptoms = list(
new /datum/symptom/transformation/gondola
)
spread_flags = DISEASE_SPREAD_BLOOD
robustness = 75

infectionchance = 0
infectionchance_base = 0
stage_variance = 0
Expand All @@ -21,6 +22,30 @@
new /datum/symptom/transformation/gondola/digital
)

/datum/disease/advanced/premade/clowndola
name = "Clowndola Transformation"
form = "Clowndola Cells"
origin = "Clowndola Toxins"
category = DISEASE_CLOWNDOLA
desc = "Consuming the flesh of a Clowndola comes at an enjoyable price."

symptoms = list(
new /datum/symptom/transformation/clowndola
)
spread_flags = DISEASE_SPREAD_BLOOD
robustness = 75

cure_text = "Laughter, ingested or injected."
cures = list(/datum/reagent/consumable/laughter)
cure_chance = 20
stage_prob = 5
agent = "Delirium"

infectionchance = 0
infectionchance_base = 0
stage_variance = 0
severity = DISEASE_SEVERITY_BIOHAZARD

/datum/disease/advanced/premade/xeno
name = "Xenomorph Transformation"
form = "Foreign Cells"
Expand All @@ -32,7 +57,7 @@
)
spread_flags = DISEASE_SPREAD_BLOOD
robustness = 75

infectionchance = 0
infectionchance_base = 0
stage_variance = 0
Expand All @@ -48,7 +73,7 @@
)
spread_flags = DISEASE_SPREAD_BLOOD
robustness = 75

infectionchance = 0
infectionchance_base = 0
stage_variance = 0
Expand All @@ -64,7 +89,7 @@
)
spread_flags = DISEASE_SPREAD_BLOOD
robustness = 75

infectionchance = 0
infectionchance_base = 0
stage_variance = 0
Expand All @@ -80,7 +105,7 @@
)
spread_flags = DISEASE_SPREAD_BLOOD
robustness = 75

infectionchance = 0
infectionchance_base = 0
stage_variance = 0
Expand All @@ -96,7 +121,7 @@
)
spread_flags = DISEASE_SPREAD_BLOOD
robustness = 75

infectionchance = 0
infectionchance_base = 0
stage_variance = 0
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,11 @@
/datum/symptom/transformation/gondola/digital
new_form = /mob/living/simple_animal/pet/gondola/virtual_domain

/datum/symptom/transformation/clowndola
name = "Clowndola Transformation"
max_chance = 50
new_form = /mob/living/simple_animal/hostile/retaliate/clowndola

/datum/symptom/anxiety
name = "Severe Anxiety"
desc = "Causes the host to suffer from severe anxiety"
Expand Down
1 change: 1 addition & 0 deletions tgstation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -7137,6 +7137,7 @@
#include "monkestation\code\modules\mob\living\carbon\human\species_type\zombies.dm"
#include "monkestation\code\modules\mob\living\silicon\death.dm"
#include "monkestation\code\modules\mob\living\simple_animal\cluwne.dm"
#include "monkestation\code\modules\mob\living\simple_animal\hostile\retaliate\clowndola.dm"
#include "monkestation\code\modules\mob\living\simple_animal\megafauna\wendigo.dm"
#include "monkestation\code\modules\mob\living\simple_animal\pets\bees.dm"
#include "monkestation\code\modules\mob\living\simple_animal\pets\honk_platinum.dm"
Expand Down
Loading