Assorted Fixes and Returns Accidentally Removed Features

Fixes mutant plants not properly inheriting preset icons

Fixes preset icons incorrectly having a color overlay applied
- This was most noticeable on berries, as the color overlay would render
most of the icon black or red, instead of the intended multi-color icon

Returns emote capabilities to diona nymphs
- Accidentally removed by #1171

Returns Moonflowers, Novaflowers, Ghost Peppers, and Koi Beans
- Accidentally removed by #980
- Sunflowers can mutate into Moonflowers or Novaflowers
- Novaflowers contain pure welding fuel
- Moonflowers contain plantmatter and moonshine
- Chili peppers can mutate into Ghost Peppers or Ice Peppers
- Ghost Peppers contain plantmatter, capsaicin, and condensed capsaicin
- Soybeans can mutate into Koi Beans
- Koi Beans contain plantmatter and carpotoxin

Returns Hydroponics Harvests tracking for End-of-Round score
- Accidentally removed by #980

Updated the descriptions for plants to account for moonshine, welder
fuel, and carpotoxin
- This is to maintain consistency with other reagent-based descriptions
for the plants
This commit is contained in:
FalseIncarnate
2015-08-11 03:05:43 -04:00
parent d0482947dd
commit 133b1233f9
7 changed files with 308 additions and 23 deletions
+5 -1
View File
@@ -107,7 +107,7 @@
descriptors |= "sweet-sour"
if(reagents.has_reagent("radium") || reagents.has_reagent("uranium"))
descriptors |= "radioactive"
if(reagents.has_reagent("amanitin") || reagents.has_reagent("toxin"))
if(reagents.has_reagent("amanitin") || reagents.has_reagent("toxin") || reagents.has_reagent("carpotoxin"))
descriptors |= "poisonous"
if(reagents.has_reagent("lsd") || reagents.has_reagent("space_drugs") || reagents.has_reagent("psilocybin"))
descriptors |= "hallucinogenic"
@@ -119,6 +119,10 @@
descriptors |= "slippery"
if(reagents.has_reagent("facid") || reagents.has_reagent("sacid"))
descriptors |= "acidic"
if(reagents.has_reagent("fuel"))
descriptors |= "flammable"
if(reagents.has_reagent("moonshine"))
descriptors |= "intoxicating"
if(seed.get_trait(TRAIT_JUICY))
descriptors |= "juicy"
if(seed.get_trait(TRAIT_STINGS))
+5 -2
View File
@@ -733,8 +733,9 @@
else
product = new /obj/item/weapon/reagent_containers/food/snacks/grown(get_turf(user),name)
if(get_trait(TRAIT_PRODUCT_COLOUR))
if(!has_mob_product || (has_mob_product && has_mob_product != /mob/living/carbon/primitive/diona))
product.color = get_trait(TRAIT_PRODUCT_COLOUR)
if(modular_icon == 1)
if(!has_mob_product || (has_mob_product && has_mob_product != /mob/living/carbon/primitive/diona))
product.color = get_trait(TRAIT_PRODUCT_COLOUR)
if(istype(product,/obj/item/weapon/reagent_containers/food))
var/obj/item/weapon/reagent_containers/food/food = product
food.filling_color = get_trait(TRAIT_PRODUCT_COLOUR)
@@ -775,6 +776,8 @@
if(chems) new_seed.chems = chems.Copy()
if(consume_gasses) new_seed.consume_gasses = consume_gasses.Copy()
if(exude_gasses) new_seed.exude_gasses = exude_gasses.Copy()
new_seed.modular_icon = modular_icon
new_seed.preset_icon = preset_icon
new_seed.seed_name = "[(roundstart ? "[(modified ? "modified" : "mutant")] " : "")][seed_name]"
new_seed.display_name = "[(roundstart ? "[(modified ? "modified" : "mutant")] " : "")][display_name]"
+89 -20
View File
@@ -4,7 +4,7 @@
seed_name = "chili"
display_name = "chili plants"
chems = list("capsaicin" = list(3,5), "plantmatter" = list(1,25))
mutants = list("icechili")
mutants = list("icechili", "ghostchili")
kitchen_tag = "chili"
preset_icon = "chilipepper"
@@ -34,6 +34,21 @@
set_trait(TRAIT_PRODUCTION,4)
set_trait(TRAIT_PRODUCT_COLOUR,"#00EDC6")
/datum/seed/chili/ghost
name = "ghostchili"
seed_name = "ghost pepper"
display_name = "ghost pepper plants"
mutants = null
chems = list("capsaicin" = list(8,2), "condensedcapsaicin" = list(4,4), "plantmatter" = list(1,50))
kitchen_tag = "ghostchili"
preset_icon = "ghostchilipepper"
/datum/seed/chili/ice/New()
..()
set_trait(TRAIT_MATURATION,4)
set_trait(TRAIT_PRODUCTION,4)
set_trait(TRAIT_PRODUCT_COLOUR,"#00EDC6")
// Berry plants/variants.
/datum/seed/berry
name = "berries"
@@ -671,9 +686,11 @@
set_trait(TRAIT_PRODUCT_COLOUR,"#B33715")
set_trait(TRAIT_PLANT_ICON,"flower3")
//Sunflowers/varieties
/datum/seed/flower/sunflower
name = "sunflowers"
seed_name = "sunflower"
mutants = list("moonflowers", "novaflowers")
display_name = "sunflowers"
preset_icon = "sunflower"
@@ -684,6 +701,36 @@
set_trait(TRAIT_PRODUCT_COLOUR,"#FFF700")
set_trait(TRAIT_PLANT_ICON,"flower2")
/datum/seed/flower/moonflower
name = "moonflowers"
seed_name = "moonflowers"
chems = list("plantmatter" = list(1,50), "moonshine" = list(1,10))
mutants = null
display_name = "moonflowers"
preset_icon = "moonflower"
/datum/seed/flower/moonflower/New()
..()
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCT_ICON,"flower2")
set_trait(TRAIT_PRODUCT_COLOUR,"#B5ABDD")
set_trait(TRAIT_PLANT_ICON,"flower2")
/datum/seed/flower/novaflower
name = "novaflowers"
seed_name = "novaflower"
mutants = null
chems = list("fuel" = list(1,10))
display_name = "novaflowers"
preset_icon = "novaflower"
/datum/seed/flower/novaflower/New()
..()
set_trait(TRAIT_MATURATION,6)
set_trait(TRAIT_PRODUCT_ICON,"flower2")
set_trait(TRAIT_PRODUCT_COLOUR,"#E2A932")
set_trait(TRAIT_PLANT_ICON,"flower2")
//Grapes/varieties
/datum/seed/grapes
name = "grapes"
@@ -717,6 +764,47 @@
..()
set_trait(TRAIT_PRODUCT_COLOUR,"42ed2f")
//Soybeans/varieties
/datum/seed/soybean
name = "soybean"
seed_name = "soybean"
display_name = "soybeans"
chems = list("plantmatter" = list(1,20), "soybeanoil" = list(1,20))
mutants = list("koibean")
kitchen_tag = "soybeans"
preset_icon = "soybeans"
/datum/seed/soybean/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,4)
set_trait(TRAIT_PRODUCTION,4)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,5)
set_trait(TRAIT_PRODUCT_ICON,"bean")
set_trait(TRAIT_PRODUCT_COLOUR,"#EBE7C0")
set_trait(TRAIT_PLANT_ICON,"stalk")
/datum/seed/soybean/koi
name = "koibean"
seed_name = "koibean"
display_name = "koi beans"
chems = list("plantmatter" = list(1,30), "carpotoxin" = list(1,20))
mutants = null
kitchen_tag = "koibean"
preset_icon = "koibeans"
/datum/seed/soybean/koi/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,4)
set_trait(TRAIT_PRODUCTION,4)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,5)
set_trait(TRAIT_PRODUCT_ICON,"bean")
set_trait(TRAIT_PRODUCT_COLOUR,"#EBE7C0")
set_trait(TRAIT_PLANT_ICON,"stalk")
//Everything else
/datum/seed/peanuts
name = "peanut"
@@ -815,25 +903,6 @@
set_trait(TRAIT_PRODUCT_COLOUR,"#D4CAB4")
set_trait(TRAIT_PLANT_ICON,"bush2")
/datum/seed/soybean
name = "soybean"
seed_name = "soybean"
display_name = "soybeans"
chems = list("plantmatter" = list(1,20), "soybeanoil" = list(1,20))
kitchen_tag = "soybeans"
preset_icon = "soybeans"
/datum/seed/soybean/New()
..()
set_trait(TRAIT_HARVEST_REPEAT,1)
set_trait(TRAIT_MATURATION,4)
set_trait(TRAIT_PRODUCTION,4)
set_trait(TRAIT_YIELD,3)
set_trait(TRAIT_POTENCY,5)
set_trait(TRAIT_PRODUCT_ICON,"bean")
set_trait(TRAIT_PRODUCT_COLOUR,"#EBE7C0")
set_trait(TRAIT_PLANT_ICON,"stalk")
/datum/seed/wheat
name = "wheat"
seed_name = "wheat"
+4
View File
@@ -324,6 +324,10 @@
seed.harvest(user,yield_mod)
else
seed.harvest(get_turf(src),yield_mod)
//Increases harvest count for round-end score
//Currently per-plant (not per-item) harvested
// --FalseIncarnate
score_stuffharvested++
// Reset values.
harvest = 0
@@ -237,3 +237,25 @@
/mob/living/carbon/primitive/diona/put_in_active_hand(obj/item/W)
src << "\red You don't have any hands!"
return
/mob/living/carbon/primitive/diona/say(var/message)
if(client)
if(client.prefs.muted & MUTE_IC)
src << "\red You cannot speak in IC (Muted)."
return
message = trim_strip_html_properly(message)
if(stat)
if(stat == 2)
return say_dead(message)
return
if (is_muzzled())
src << "<span class='danger'>You're muzzled and cannot speak!</span>"
return
if(copytext(message,1,2) == "*")
return emote(copytext(message,2))
..(message)
@@ -0,0 +1,182 @@
/mob/living/carbon/primitive/emote(var/act,var/m_type=1,var/message = null)
var/param = null
if (findtext(act, "-", 1, null))
var/t1 = findtext(act, "-", 1, null)
param = copytext(act, t1 + 1, length(act) + 1)
act = copytext(act, 1, t1)
if(findtext(act,"s",-1) && !findtext(act,"_",-2))//Removes ending s's unless they are prefixed with a '_'
act = copytext(act,1,length(act))
var/muzzled = is_muzzled()
//Emote Cooldown System (it's so simple!)
// proc/handle_emote_CD() located in [code\modules\mob\emote.dm]
var/on_CD = 0
switch(act)
//Cooldown-inducing emotes
if("chirp")
if(istype(src,/mob/living/carbon/primitive/diona)) //Only Diona Nymphs can chirp
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm
else //Everyone else fails, skip the emote attempt
return
if("flip")
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm
//Everything else, including typos of the above emotes
else
on_CD = 0 //If it doesn't induce the cooldown, we won't check for the cooldown
if(on_CD == 1) // Check if we need to suppress the emote attempt.
return // Suppress emote, you're still cooling off.
//--FalseIncarnate
switch(act)
if ("me")
if(silent)
return
if (src.client)
if (client.prefs.muted & MUTE_IC)
src << "\red You cannot send IC messages (muted)."
return
if (src.client.handle_spam_prevention(message,MUTE_IC))
return
if (stat)
return
if(!(message))
return
return custom_emote(m_type, message)
if ("custom")
return custom_emote(m_type, message)
if ("chirp")
message = "<B>The [src.name]</B> chirps!"
playsound(src.loc, 'sound/misc/nymphchirp.ogg', 50, 0)
m_type = 2
if("sign")
if (!src.restrained())
message = text("<B>The [src.name]</B> signs[].", (text2num(param) ? text(" the number []", text2num(param)) : null))
m_type = 1
if("scratch")
if (!src.restrained())
message = "<B>The [src.name]</B> scratches."
m_type = 1
if("whimper")
if (!muzzled)
message = "<B>The [src.name]</B> whimpers."
m_type = 2
if("roar")
if (!muzzled)
message = "<B>The [src.name]</B> roars."
m_type = 2
if("tail")
message = "<B>The [src.name]</B> waves his tail."
m_type = 1
if("gasp")
message = "<B>The [src.name]</B> gasps."
m_type = 2
if("shiver")
message = "<B>The [src.name]</B> shivers."
m_type = 2
if("drool")
message = "<B>The [src.name]</B> drools."
m_type = 1
if("paw")
if (!src.restrained())
message = "<B>The [src.name]</B> flails his paw."
m_type = 1
if("scretch")
if (!muzzled)
message = "<B>The [src.name]</B> scretches."
m_type = 2
if("choke")
message = "<B>The [src.name]</B> chokes."
m_type = 2
if("moan")
message = "<B>The [src.name]</B> moans!"
m_type = 2
if("nod")
message = "<B>The [src.name]</B> nods his head."
m_type = 1
if("sit")
message = "<B>The [src.name]</B> sits down."
m_type = 1
if("sway")
message = "<B>The [src.name]</B> sways around dizzily."
m_type = 1
if("sulk")
message = "<B>The [src.name]</B> sulks down sadly."
m_type = 1
if("twitch")
message = "<B>The [src.name]</B> twitches violently."
m_type = 1
if("dance")
if (!src.restrained())
message = "<B>The [src.name]</B> dances around happily."
m_type = 1
if("roll")
if (!src.restrained())
message = "<B>The [src.name]</B> rolls."
m_type = 1
if("shake")
message = "<B>The [src.name]</B> shakes his head."
m_type = 1
if("gnarl")
if (!muzzled)
message = "<B>The [src.name]</B> gnarls and shows his teeth.."
m_type = 2
if("jump")
message = "<B>The [src.name]</B> jumps!"
m_type = 1
if("collapse")
Paralyse(2)
message = "<B>[src.name]</B> collapses!"
m_type = 2
if("deathgasp")
message = "<B>The [src.name]</B> lets out a faint chimper as it collapses and stops moving..."
m_type = 1
if ("flip")
m_type = 1
if (!src.restrained())
var/M = null
if (param)
for (var/mob/A in view(1, null))
if (param == A.name)
M = A
break
if (M == src)
M = null
if (M)
if(src.lying || src.weakened)
message = "<B>[src]</B> flops and flails around on the floor."
else
message = "<B>[src]</B> flips in [M]'s general direction."
src.SpinAnimation(5,1)
else
if(src.lying || src.weakened)
message = "<B>[src]</B> flops and flails around on the floor."
else
message = "<B>[src]</B> does a flip!"
src.SpinAnimation(5,1)
if("help")
var/text = "choke, "
if(istype(src,/mob/living/carbon/primitive/diona))
text += "chirp, "
text += "flip, collapse, dance, deathgasp, drool, gasp, shiver, gnarl, jump, paw, moan, nod, roar, roll, scratch,\nscretch, shake, sign-#, sit, sulk, sway, tail, twitch, whimper"
src << text
else
src << text("Invalid Emote: []", act)
if ((message && src.stat == 0))
if(src.client)
log_emote("[name]/[key] : [message]")
if (m_type & 1)
for(var/mob/O in viewers(src, null))
O.show_message(message, m_type)
//Foreach goto(703)
else
for(var/mob/O in hearers(src, null))
O.show_message(message, m_type)
//Foreach goto(746)
return