Merge branch 'master' of https://github.com/CHOMPstation/CHOMPstation into CHOMPstation-master

This commit is contained in:
TheFurryFeline
2019-04-18 20:32:39 -04:00
38 changed files with 553 additions and 261 deletions
@@ -1,3 +1,4 @@
/datum/admin_secret_item/fun_secret/break_all_lights
name = "Break All Lights"
@@ -0,0 +1,14 @@
var/global/waddleToggle = 0
/datum/admin_secret_item/fun_secret/waddle_mode
name = "South Park Mode"
/datum/admin_secret_item/fun_secret/waddle_mode/execute(var/mob/user)
..()
if(!waddleToggle)
log_and_message_admins("[user] enabled waddling!", user)
waddleToggle = TRUE
else
log_and_message_admins("[user] disabled waddling!", user)
waddleToggle = FALSE
+7 -6
View File
@@ -771,18 +771,19 @@
return 1
return 0 //we didn't do anything!
//TFF: Ports Polaris fix for kicking so you can cancel without it still executing the command.
else if(href_list["boot2"])
var/mob/M = locate(href_list["boot2"])
if (ismob(M))
if(!check_if_greater_rights_than(M.client))
return
var/reason = sanitize(input("Please enter reason"))
var/reason = sanitize(input("Please enter reason.") as null|message)
if(!reason)
M << "<font color='red'>You have been kicked from the server</font>"
else
M << "<font color='red'>You have been kicked from the server: [reason]</font>"
log_admin("[key_name(usr)] booted [key_name(M)].")
message_admins("<font color='#6F6FE2'>[key_name_admin(usr)] booted [key_name_admin(M)].</font>", 1)
return
to_chat(M, span("critical", "You have been kicked from the server: [reason]"))
log_admin("[key_name(usr)] booted [key_name(M)] for reason: '[reason]'.")
message_admins("<font color='blue'>[key_name_admin(usr)] booted [key_name_admin(M)] for reason '[reason]'.</font>", 1)
//M.client = null
qdel(M.client)
+7 -1
View File
@@ -218,4 +218,10 @@
items = list(
/obj/item/weapon/reagent_containers/food/snacks/steamrolltealeaf
)
result = /obj/item/weapon/reagent_containers/food/snacks/greentealeaf
result = /obj/item/weapon/reagent_containers/food/snacks/greentealeaf
/datum/recipe/tencha //TODO: Figure out how to make this recipe with a drying rack.
items = list(
/obj/item/weapon/reagent_containers/food/snacks/steamtealeaf
)
result = /obj/item/weapon/reagent_containers/food/snacks/tencha
+16 -3
View File
@@ -1117,7 +1117,8 @@
else
usr << "<span class='warning'>You failed to check the pulse. Try again.</span>"
/mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour, var/regen_icons = TRUE)
//TFF 14/4/19: Port VoreStation TF fix
/mob/living/carbon/human/proc/set_species(var/new_species, var/default_colour, var/regen_icons = TRUE, var/mob/living/carbon/human/example = null) //VOREStation Edit - send an example
if(!dna)
if(!new_species)
@@ -1152,7 +1153,16 @@
if(species.default_language)
add_language(species.default_language)
if(species.base_color) //VOREStation Edit - Always give them a basse color
//TFF 14/4/19: Port VoreStation TF fix
//if(species.icon_scale != 1) //VOREStation Removal
// update_transform() //VOREStation Removal
if(example) //VOREStation Edit begin
if(!(example == src))
r_skin = example.r_skin
g_skin = example.g_skin
b_skin = example.b_skin
else if(species.base_color) //VOREStation Edit end
//Apply colour.
r_skin = hex2num(copytext(species.base_color,2,4))
g_skin = hex2num(copytext(species.base_color,4,6))
@@ -1169,10 +1179,13 @@
gender = species.genders[1]
//icon_state = lowertext(species.name) //Necessary?
//TFF 14/4/19: Port VoreStation TF fix
//VOREStation Edit start: swap places of those two procs
species.handle_post_spawn(src)
species.create_organs(src)
species.handle_post_spawn(src)
maxHealth = species.total_health
@@ -340,6 +340,10 @@
H.visible_message( \
"<span class='notice'>[H] shakes [target]'s hand.</span>", \
"<span class='notice'>You shake [target]'s hand.</span>", )
else if(H.zone_sel.selecting == "mouth") // I ADDED BOOP-EH-DEH-NOSEH - Jon
H.visible_message( \
"<span class='notice'>[H] boops [target]'s nose.</span>", \
"<span class='notice'>You boop [target] on the nose.</span>", )
else H.visible_message("<span class='notice'>[H] hugs [target] to make [t_him] feel better!</span>", \
"<span class='notice'>You hug [target] to make [t_him] feel better!</span>") //End VOREStation Edit
@@ -615,6 +615,7 @@
radio.attackby(W,user)//GTFO, you have your own procs
else
user << "Unable to locate a radio."
//TFF 14/4/19: Port VoreStation edit - Wallet/Micro usage to unlock borgs.
else if (W.GetID()) // trying to unlock the interface with an ID card
if(emagged)//still allow them to open the cover
@@ -698,6 +699,7 @@
return 1
return 0
//TFF 14/4/19: Port VoreStation edit - wallet/micro usage to unlock borgs
/mob/living/silicon/robot/proc/check_access(obj/item/I)
if(!istype(req_access, /list)) //something's very wrong
return 1
@@ -2,10 +2,10 @@
name = "minetroid"
desc = "Some sort of person eaty thing!"
tt_desc = "Headamus Suckumus"
icon = 'icons/mob/vore.dmi'
icon = 'icons/mob/metroid/small.dmi'
icon_dead = "metroid_dead"
icon_living = "mochtroid"
icon_state = "mochtroid"
icon_living = "metroid"
icon_state = "metroid"
faction = "metroids"
intelligence_level = SA_ANIMAL
hovering = TRUE
@@ -70,8 +70,8 @@
name = "Mochtroid"
desc = "Some sort of person eaty thing! But weak compared to regular Metroids!"
tt_desc = "Headamus Suckumus Weakamus"
icon = 'icons/mob/vore.dmi'
icon_dead = "mochtroid_dead"
icon = 'icons/mob/metroid/small.dmi'
icon_dead = "metroid_dead"
icon_living = "mochtroid"
icon_state = "mochtroid"
@@ -230,7 +230,7 @@
melee_miss_chance = 5
gender = NEUTER
faction = "metroids"
//Alphas lose their vulnerability to cold.
minbodytemp = 0
min_oxy = 0
@@ -277,8 +277,7 @@
//------------------------------------------------------------------------------------------------------------
/*
//------------------------------------------------------------------------------------------------------------
/mob/living/simple_animal/hostile/metroid/combat/gamma
@@ -297,10 +296,15 @@
melee_miss_chance = 5
gender = NEUTER
faction = "metroids"
ranged = 1
move_shoot = 1 //Move and shoot at the same time.
ranged_cooldown = 0 //What the starting cooldown is on ranged attacks
ranged_cooldown_time = 150 //How long, in deciseconds, the cooldown of ranged attacks is
projectilesound = 'sound/weapons/taser2.ogg'
projectiletype = /obj/item/projectile/beam/stun/weak
firing_lines = 1
cooperative = 1
//Not affected by atmos.
minbodytemp = 0
@@ -356,18 +360,25 @@
name = "zeta metroid"
desc = "Some kind of feet stompy thing!"
tt_desc = "Minimus Feetamus Walkamus"
icon = 'icons/mob/metroid/medium.dmi'
icon = 'icons/mob/metroid/small.dmi'
icon_dead = "zeta_dead"
icon_living = "zeta"
icon_state = "zeta"
intelligence_level = SA_ANIMAL
health = 375
maxHealth = 375
health = 350
maxHealth = 350
melee_damage_lower = 15
melee_damage_upper = 25
melee_miss_chance = 5
gender = NEUTER
faction = "metroids"
move_shoot = 1 //Move and shoot at the same time.
ranged_cooldown = 0 //What the starting cooldown is on ranged attacks
ranged_cooldown_time = 15 //How long, in deciseconds, the cooldown of ranged attacks is
rapid = 1 // Three-round-burst fire mode
projectiletype = /obj/item/projectile/energy/piranhaspit // The projectiles I shoot
projectilesound = 'sound/weapons/thudswoosh.ogg' // The sound I make when I do it
//Unaffected by atmos.
minbodytemp = 0
@@ -395,7 +406,7 @@
cooperative = 1
evo_point = 1600
evo_limit = 1800
next = "/mob/living/simple_animal/hostile/metroid/combat/omega"
next = "/mob/living/simple_animal/hostile/metroid/bosses/omega"
/mob/living/simple_animal/hostile/metroid/combat/zeta/death()
@@ -419,22 +430,29 @@
/mob/living/simple_animal/hostile/metroid/combat/omega
/mob/living/simple_animal/hostile/metroid/bosses/omega
name = "omega metroid"
desc = "Some kind of head rammy thing!"
tt_desc = "Maximus Feetamus Walkamus"
icon = 'icons/mob/metroid/large.dmi'
icon = 'icons/mob/metroid/small.dmi'
icon_dead = "omega_dead"
icon_living = "omega"
icon_state = "omega"
intelligence_level = SA_ANIMAL
health = 550
maxHealth = 550
health = 500
maxHealth = 500
melee_damage_lower = 25
melee_damage_upper = 40
melee_miss_chance = 5
gender = NEUTER
faction = "metroids"
move_shoot = 1 //Move and shoot at the same time.
ranged_cooldown = 0 //What the starting cooldown is on ranged attacks
ranged_cooldown_time = 15 //How long, in deciseconds, the cooldown of ranged attacks is
rapid = 1 // Three-round-burst fire mode
projectiletype = /obj/item/projectile/energy/piranhaspit // The projectiles I shoot
projectilesound = 'sound/weapons/thudswoosh.ogg' // The sound I make when I do it
//Unaffected by atmos.
minbodytemp = 0
@@ -462,15 +480,15 @@
cooperative = 1
evo_point = 2600
evo_limit = 3000
next = "/mob/living/simple_animal/hostile/metroid/combat/queen"
next = "/mob/living/simple_animal/hostile/metroid/bosses/queen"
/mob/living/simple_animal/hostile/metroid/combat/omega/death()
/mob/living/simple_animal/hostile/metroid/bosses/omega/death()
playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
..()
/mob/living/simple_animal/hostile/metroid/combat/omega //active noms
/mob/living/simple_animal/hostile/metroid/bosses/omega //active noms
vore_active = 1
vore_bump_chance = 0
vore_capacity = 2
@@ -486,23 +504,30 @@
/mob/living/simple_animal/hostile/metroid/combat/queen
/mob/living/simple_animal/hostile/metroid/bosses/queen
name = "queen metroid"
desc = "The mother of all Metroids, allowed to have grown too far!"
tt_desc = "Maximus Queenamus Deathamus"
icon = 'icons/mob/metroid/large.dmi'
icon = 'icons/mob/metroid/small.dmi'
icon_dead = "queen_dead"
icon_living = "queen"
icon_state = "queen"
intelligence_level = SA_ANIMAL
health = 1000
maxHealth = 1000
health = 575
maxHealth = 575
melee_damage_lower = 30
melee_damage_upper = 60
melee_miss_chance = 5
gender = NEUTER
faction = "metroids"
speed = 3
speed = 5
move_shoot = 1 //Move and shoot at the same time.
ranged_cooldown = 0 //What the starting cooldown is on ranged attacks
ranged_cooldown_time = 15 //How long, in deciseconds, the cooldown of ranged attacks is
rapid = 1 // Three-round-burst fire mode
projectiletype = /obj/item/projectile/energy/piranhaspit // The projectiles I shoot
projectilesound = 'sound/weapons/thudswoosh.ogg' // The sound I make when I do it
//Unaffected by atmos.
minbodytemp = 0
@@ -533,16 +558,12 @@
next = "/mob/living/simple_animal/hostile/metroid/evolution/super"
var/list/queen_amount = list() //global queen list
/mob/living/simple_animal/hostile/metroid/combat/queen/New()
queen_amount += src
/mob/living/simple_animal/hostile/metroid/combat/queen/death()
/mob/living/simple_animal/hostile/metroid/bosses/queen/death()
playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
..()
/mob/living/simple_animal/hostile/metroid/combat/queen //active noms
/mob/living/simple_animal/hostile/metroid/bosses/queen //active noms
vore_active = 1
vore_bump_chance = 0
vore_capacity = 4
@@ -552,7 +573,14 @@ var/list/queen_amount = list() //global queen list
swallowTime = 3 SECONDS
*/
//LIFE STUFF, AND MECHANICS!
//FOR THE BABY AND SUPER FORMS!
@@ -572,7 +600,7 @@ var/list/queen_amount = list() //global queen list
expand_troid()
return
/mob/living/simple_animal/hostile/metroid/evolution/proc/expand_troid()
/mob/living/simple_animal/hostile/metroid/proc/expand_troid()
visible_message("<span class='warning'>\The [src] suddenly evolves!</span>")
new next(get_turf(src))
qdel(src)
@@ -859,25 +887,37 @@ var/list/queen_amount = list() //global queen list
paralysis = 0
expand_troid()
return
/*
/mob/living/simple_animal/hostile/metroid/combat/omega/Life()
if(prob(5) && canEvolve == 1 && nutrition >= evo_point && queen_amount >= 1)
/proc/metroid_queen_exists(var/ignore_self,var/mob/living/simple_animal/hostile/metroid/bosses/queen/self)
for(var/mob/living/simple_animal/hostile/metroid/bosses/queen in living_mob_list)
if(self && ignore_self && self == queen)
continue
if(!queen.key || !queen.client || queen.stat)
continue
return 1
return 0
/mob/living/simple_animal/hostile/metroid/bosses/omega/Life()
if(metroid_queen_exists())
src << "<span class='notice'>We already have an active queen.</span>"
return
if(!metroid_queen_exists() && prob(5) && canEvolve == 1 && nutrition >= evo_point)
playsound(src, 'sound/metroid/metroidgrow.ogg', 50, 1)
expand_troid()
return
*/
/mob/living/simple_animal/hostile/metroid/combat/queen/Life()
/mob/living/simple_animal/hostile/metroid/bosses/queen/Life()
if(canEvolve == 1 && nutrition >= evo_point)
playsound(src, 'sound/metroid/metroidgrow.ogg', 50, 1)
birth_troid()
return
/mob/living/simple_animal/hostile/metroid/combat/proc/expand_troid()
visible_message("<span class='warning'>\The [src] suddenly evolves!</span>")
new next(get_turf(src))
qdel(src)
/mob/living/simple_animal/hostile/metroid/combat/queen/proc/birth_troid()
/mob/living/simple_animal/hostile/metroid/proc/birth_troid()
visible_message("<span class='warning'>\A nesting Metroid suddenly bursts out of of the [src]!</span>")
new next(get_turf(src))
@@ -939,4 +979,4 @@ var/list/queen_amount = list() //global queen list
/mob/living/simple_animal/hostile/metroid/combat/ClosestDistance()
if(target_mob.stat == DEAD)
return 1 // Melee (eat) the target if dead, don't shoot it. //I don't think it actually eats the target. Maybe it does?
return ..()
return ..()
+6
View File
@@ -323,6 +323,12 @@
move_delay += 2
return mob.buckled.relaymove(mob,direct)
if(waddleToggle)
if(!mob.buckled)
animate(mob, pixel_z = 4, time = 0)
animate(pixel_z = 0, transform = turn(matrix(), pick(-12, 0, 12)), time=2)
animate(pixel_z = 0, transform = matrix(), time = 0)
//We are now going to move
moving = 1
//Something with pulling things
@@ -18,12 +18,15 @@
/obj/item/weapon/stock_parts/capacitor/,
/obj/item/weapon/stock_parts/capacitor/adv,
/obj/item/weapon/stock_parts/capacitor/super,
/obj/item/weapon/stock_parts/capacitor/quadratic,
/obj/item/weapon/stock_parts/micro_laser/,
/obj/item/weapon/stock_parts/micro_laser/high,
/obj/item/weapon/stock_parts/micro_laser/ultra,
/obj/item/weapon/stock_parts/micro_laser/quad,
/obj/item/weapon/stock_parts/manipulator/,
/obj/item/weapon/stock_parts/manipulator/nano,
/obj/item/weapon/stock_parts/manipulator/pico,
/obj/item/weapon/stock_parts/manipulator/femto,
)
//Excessively long because it won't accept subtypes for some reason!
@@ -171,4 +174,4 @@
one_handed_penalty = 4 //dual wielding = no.
cell_type = /obj/item/weapon/cell //We're bigger. We can use much larger power cells.
origin_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 6, TECH_MATERIAL = 5, TECH_BLUESPACE = 4) //its a damn cannon capable of holding a huge amount of parts.
burst_delay = 4 //preventing extreme silliness.
burst_delay = 4 //preventing extreme silliness.
@@ -807,7 +807,7 @@
adj_sleepy = -3
adj_temp = 20
glass_name = "cup of tea"
glass_name = "tea"
glass_desc = "Tasty black tea, it has antioxidants, it's good for you!"
cup_icon_state = "cup_tea"
@@ -945,6 +945,22 @@
cup_name = "cup of watermelon tea"
cup_desc = "A tasty mixture of watermelon and tea. It's apparently good for you!"
/datum/reagent/drink/tea/matcha_latte //Putting this as tea to inherit tea variables. Should not have the same toxloss as matcha so it can be placed in a dispenser without breaking balance.
name = "Matcha latte"
id = "matcha_latte"
description = "A nice and tasty beverage to enjoy while studying."
taste_description = "creamy, vegetal sweetness"
color = "#b1c48c"
adj_temp = 5
glass_name = "matcha latte"
glass_desc = "A nice and refreshing beverage while you are studying."
cup_icon_state = "cup_latte"
cup_name = "cup of matcha latte"
cup_desc = "A nice and refreshing beverage while you are studying."
/datum/reagent/drink/coffee
name = "Coffee"
id = "coffee"
@@ -1030,7 +1046,6 @@
glass_desc = "A nice and refreshing beverage while you are reading."
glass_name = "soy latte"
glass_desc = "A nice and refrshing beverage while you are reading."
cup_icon_state = "cup_latte"
cup_name = "cup of soy latte"
@@ -1049,11 +1064,11 @@
adj_temp = 5
glass_name = "cafe latte"
glass_desc = "A nice, strong and refreshing beverage while you are reading."
glass_desc = "A nice, strong, and refreshing beverage while you are reading."
cup_icon_state = "cup_latte"
cup_name = "cup of cafe latte"
cup_desc = "A nice and refreshing beverage while you are reading."
cup_desc = "A nice, strong, and refreshing beverage while you are reading."
/datum/reagent/drink/coffee/cafe_latte/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -3295,7 +3310,7 @@
glass_name = "Sit on my face"
glass_desc = "A drink made of irish coffee and nuts, mostly known for its vulgar name. Makes for a great pickup line though!"
/datum/reagent/ethanol/hachi
name = "Hachi"
id = "hachi"
@@ -3366,7 +3381,7 @@
name = "Instant green tea powder"
id = "instantteapowdergreen"
description = "Green tea powder missing all the goodness of green tea." //Heathen.
taste_description = "strongly bitter with a subtle chemical aftertaste"
taste_description = "strong bitterness with a subtle chemical aftertaste"
color = "#56761d"
glass_name = "tea powder"
@@ -3376,7 +3391,7 @@
name = "Instant green tea"
id = "instantteagreen"
description = "Convenient green tea missing all the goodness of actual green tea." //It's not even hot.
taste_description = "bitter with a subtle chemical aftertaste"
taste_description = "bitterness with a subtle chemical aftertaste"
color = "#cac162"
glass_name = "green tea"
@@ -3385,3 +3400,38 @@
cup_icon_state = "cup_tea"
cup_name = "cup of tea"
cup_desc = "Green tea. It smells a bit off."
/datum/reagent/drink/matchapowder
name = "Matcha powder"
id = "matchapowder"
description = "Finely ground green tea. This is about the highest quality matcha you can prepare without traditional methods."
taste_description = "heavy bitterness"
color = "#86a443"
glass_name = "matcha powder"
glass_desc = "Matcha powder, waiting for brewing."
/datum/reagent/drink/matcha
name = "Matcha"
id = "matcha"
description = "A form of green tea where the leaf is ground and suspended in water rather than steeped. This is considered cooking grade."
taste_description = "floral, full-bodied bitterness with a subtle, earthy sweetness"
color = "#9bc265"
adj_dizzy = -4
adj_drowsy = -1
adj_sleepy = -3
adj_temp = 20
glass_name = "matcha"
glass_desc = "Heavenly matcha. Good for body and spirit."
cup_icon_state = "cup_tea"
cup_name = "cup of matcha"
cup_desc = "Heavenly matcha. Good for body and spirit."
/datum/reagent/drink/matcha/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(alien == IS_DIONA)
return
M.adjustToxLoss(-3 * removed) //Almost on par with dylovene despite being harder to obtain in bulk. Nerf if this causes problems.
+20 -9
View File
@@ -9,16 +9,27 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.species.name != "Promethean")
M << "<span class='danger'>Your flesh rapidly mutates!</span>"
//TFF 14/4/19: Port VoreStation TF fix
to_chat(M, "<span class='danger'>Your flesh rapidly mutates!</span>")
var/list/backup_implants = list()
for(var/obj/item/organ/I in H.organs)
for(var/obj/item/weapon/implant/backup/BI in I.contents)
backup_implants += BI
if(backup_implants.len)
for(var/obj/item/weapon/implant/backup/BI in backup_implants)
BI.forceMove(src)
H.set_species("Promethean")
H.verbs += /mob/living/carbon/human/proc/shapeshifter_select_shape
H.verbs += /mob/living/carbon/human/proc/shapeshifter_select_colour
H.verbs += /mob/living/carbon/human/proc/shapeshifter_select_hair
H.verbs += /mob/living/carbon/human/proc/shapeshifter_select_gender
H.verbs += /mob/living/carbon/human/proc/regenerate
H.verbs += /mob/living/proc/set_size
H.shapeshifter_set_colour("#05FF9B") //They can still change their color.
//TFF 14/4/19: Port VoreStation TF fix
if(backup_implants.len)
var/obj/item/organ/external/torso = H.get_organ(BP_TORSO)
for(var/obj/item/weapon/implant/backup/BI in backup_implants)
BI.forceMove(torso)
torso.implants += BI
/datum/chemical_reaction/slime/sapphire_mutation
name = "Slime Mutation Toxins"
id = "slime_mutation_tox"
@@ -59,14 +70,14 @@
strength = 10//Don't drink it
mrate_static = TRUE
/datum/reagent/purplesap
/datum/reagent/purplesap
name = "Purple sap"
id = "purplesap"
description = "Purple liquid. It is very sticky and smells of ammonia."
color = "#7a48a0"
taste_description = "Ammonia"
/datum/reagent/orangesap
/datum/reagent/orangesap
name = "Orange sap"
id = "orangesap"
description = "Orange liquid. It wobbles around a bit like jelly."
+13 -1
View File
@@ -47,4 +47,16 @@
id = "instantteagreen"
result = "instantteagreen"
required_reagents = list ("instantteapowdergreen" = 1, "water" = 9)
result_amount = 10
result_amount = 10
/datum/chemical_reaction/matcha
id = "matcha"
result = "matcha"
required_reagents = list ("matchapowder" = 1, "hotwater" = 2)
result_amount = 2
/datum/chemical_reaction/tea/matcha_latte
id = "matcha_latte"
result = "matcha_latte"
required_reagents = list ("matchapowder" = 1, "milk" = 5)
result_amount = 5
@@ -71,6 +71,7 @@
cream spawn_reagent = "cream"
mint spawn_reagent = "mint"
berry spawn_reagent = "berryjuice"
matcha_latte spawn_reagent = "matcha_latte"
// ERT
inaprov spawn_reagent = "inaprovaline"
@@ -58,5 +58,5 @@
/obj/machinery/chemical_dispenser/bar_coffee
dispense_reagents = list(
"coffee", "cafe_latte", "soy_latte", "hot_coco", "milk", "cream", "tea", "ice",
"orangejuice", "lemonjuice", "limejuice", "berryjuice", "mint"
"orangejuice", "lemonjuice", "limejuice", "berryjuice", "mint", "matcha_latte"
)
@@ -137,6 +137,5 @@
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon,
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lime,
/obj/item/weapon/reagent_containers/chem_disp_cartridge/berry,
/obj/item/weapon/reagent_containers/chem_disp_cartridge/matcha_latte
)
+2 -1
View File
@@ -120,7 +120,8 @@
/obj/item/weapon/reagent_containers/chem_disp_cartridge/milk,
/obj/item/weapon/reagent_containers/chem_disp_cartridge/cream,
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tea,
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ice
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ice,
/obj/item/weapon/reagent_containers/chem_disp_cartridge/matcha_latte
)
cost = 50
containertype = /obj/structure/closet/crate
@@ -378,7 +378,6 @@
/obj/item/weapon/reagent_containers/food/snacks/steamtealeaf/New()
..()
reagents.add_reagent("teamush", 3)
bitesize = 1
/obj/item/weapon/reagent_containers/food/snacks/steamtealeaf/attackby(obj/item/weapon/W as obj, mob/user as mob)
@@ -412,6 +411,34 @@
reagents.add_reagent("tealeavesgreen", 6)
bitesize = 1
/obj/item/weapon/reagent_containers/food/snacks/tencha
name = "Tencha"
desc = "A dried, crumbly green tea leaf. Needs deveined."
icon = 'icons/obj/food.dmi'
icon_state = "tencha"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/matchaleaf
slices_num = 1
nutriment_amt = 0
nutriment_desc = list("nothing" = 1)
/obj/item/weapon/reagent_containers/food/snacks/tencha/New()
..()
bitesize = 1
/obj/item/weapon/reagent_containers/food/snacks/matchaleaf
name = "Matcha"
desc = "Low grade matcha. Ready for grinding."
icon = 'icons/obj/food.dmi'
icon_state = "matchaleaf"
nutriment_amt = 0
nutriment_desc = list("nothing" = 0)
/obj/item/weapon/reagent_containers/food/snacks/matchaleaf/New()
..()
reagents.add_reagent("matchapowder", 5)
reagents.remove_reagent("teamush", 5)
bitesize = 1
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/sobakacube
name = "sobaka cube"
monkey_type = "Sobaka"
+35
View File
@@ -113,6 +113,13 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/stock_parts/capacitor/super
sort_string = "CAAAC"
/datum/design/item/stock_part/quadratic_capacitor
id = "quadratic_capacitor"
req_tech = list(TECH_POWER = 10, TECH_MATERIAL = 9)
materials = list(DEFAULT_WALL_MATERIAL = 100, "glass" = 100, "gold" = 20)
build_path = /obj/item/weapon/stock_parts/capacitor/quadratic
sort_string = "CAAAD"
/datum/design/item/stock_part/micro_mani
id = "micro_mani"
req_tech = list(TECH_MATERIAL = 1, TECH_DATA = 1)
@@ -134,6 +141,13 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/stock_parts/manipulator/pico
sort_string = "CAABC"
/datum/design/item/stock_part/femto_mani
id = "femto_mani"
req_tech = list(TECH_MATERIAL = 10, TECH_DATA = 9)
materials = list(DEFAULT_WALL_MATERIAL = 30, "diamond" = 50)
build_path = /obj/item/weapon/stock_parts/manipulator/femto
sort_string = "CAABD"
/datum/design/item/stock_part/basic_matter_bin
id = "basic_matter_bin"
req_tech = list(TECH_MATERIAL = 1)
@@ -154,6 +168,13 @@ other types of metals and chemistry for reagents).
materials = list(DEFAULT_WALL_MATERIAL = 80)
build_path = /obj/item/weapon/stock_parts/matter_bin/super
sort_string = "CAACC"
/datum/design/item/stock_part/bluespace_matter_bin
id = "bluespace_matter_bin"
req_tech = list(TECH_MATERIAL = 10, TECH_BLUESPACE = 9)
materials = list(DEFAULT_WALL_MATERIAL = 80,"phoron" = 30)
build_path = /obj/item/weapon/stock_parts/matter_bin/bluespace
sort_string = "CAACD"
/datum/design/item/stock_part/basic_micro_laser
id = "basic_micro_laser"
@@ -176,6 +197,13 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/stock_parts/micro_laser/ultra
sort_string = "CAADC"
/datum/design/item/stock_part/quad_ultra_micro_laser
id = "quadultra_micro_laser"
req_tech = list(TECH_MAGNET = 10, TECH_MATERIAL = 9)
materials = list(DEFAULT_WALL_MATERIAL = 20, "glass" = 40, "uranium" = 30)
build_path = /obj/item/weapon/stock_parts/micro_laser/quad
sort_string = "CAADD"
/datum/design/item/stock_part/basic_sensor
id = "basic_sensor"
req_tech = list(TECH_MAGNET = 1)
@@ -196,6 +224,13 @@ other types of metals and chemistry for reagents).
materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20, "silver" = 10)
build_path = /obj/item/weapon/stock_parts/scanning_module/phasic
sort_string = "CAAEC"
/datum/design/item/stock_part/triphasic_sensor
id = "triphasic_sensor"
req_tech = list(TECH_MAGNET = 10, TECH_MATERIAL = 9)
materials = list(DEFAULT_WALL_MATERIAL = 100, "glass" = 50, "silver" = 10)
build_path = /obj/item/weapon/stock_parts/scanning_module/triphasic
sort_string = "CAAED"
/datum/design/item/stock_part/RPED
name = "Rapid Part Exchange Device"
+4 -4
View File
@@ -97,7 +97,7 @@
change_ears(P)
change_tail_nocolor(P)
change_wing_nocolor(P)
change_species(P,1)
change_species(P,1,1) //TFF 14/4/19: Port VoreStation TF fix
///////////////////////////// DM_TRANSFORM_REPLICA /////////////////////////////
else if(mode == DM_TRANSFORM_REPLICA)
@@ -122,7 +122,7 @@
change_ears(P)
change_tail(P)
change_wing(P)
change_species(P,1)
change_species(P,1,2) //TFF 14/4/19: Port VoreStation TF fix
///////////////////////////// DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG /////////////////////////////
else if(mode == DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG)
@@ -134,7 +134,7 @@
change_ears(P)
change_tail_nocolor(P)
change_wing_nocolor(P)
change_species(P,1)
change_species(P,1,1) //TFF 14/4/19: Port VoreStation TF fix
continue
if(!P.absorbed)
@@ -177,7 +177,7 @@
change_ears(P)
change_tail(P)
change_wing(P)
change_species(P,1)
change_species(P,1,2) //TFF 14/4/19: Port VoreStation TF fix
continue
if(!P.absorbed)
+1
View File
@@ -329,6 +329,7 @@
if(!confirm == "Okay" || loc != B)
return
//Actual escaping
absorbed = 0 //Make sure we're not absorbed
forceMove(get_turf(src)) //Just move me up to the turf, let's not cascade through bellies, there's been a problem, let's just leave.
for(var/mob/living/simple_animal/SA in range(10))
SA.prey_excludes[src] = world.time
+27 -25
View File
@@ -210,42 +210,44 @@
return 1
return 0
/obj/belly/proc/change_species(var/mob/living/carbon/human/M, message=0)
//TFF: Port VoreStation TF fix
/obj/belly/proc/change_species(var/mob/living/carbon/human/M, message=0, color_action = 0) //color_action: 0 for default species, 1 to preserve, 2 to transfer from pred
var/mob/living/carbon/human/O = owner
if(!istype(M) || !istype(O))
return
if (M.species == "Promethean" && O.species != "Promethean") //If the person was a promethean before TF, remove all their verbs!
M.verbs -= /mob/living/carbon/human/proc/shapeshifter_select_shape
M.verbs -= /mob/living/carbon/human/proc/shapeshifter_select_colour
M.verbs -= /mob/living/carbon/human/proc/shapeshifter_select_hair
M.verbs -= /mob/living/carbon/human/proc/shapeshifter_select_gender
M.verbs -= /mob/living/carbon/human/proc/regenerate
M.verbs -= /mob/living/proc/set_size
//TFF: Port VoreStation TF fix
M.verbs -= M.species.inherent_verbs //Take away their unique stuff
M.species = O.species
var/list/backup_implants = list()
for(var/obj/item/organ/I in M.organs)
for(var/obj/item/weapon/implant/backup/BI in I.contents)
backup_implants += BI
if(backup_implants.len)
for(var/obj/item/weapon/implant/backup/BI in backup_implants)
BI.forceMove(src)
if(color_action == 1)
M.set_species(O.species.name,0,1,M)
else if(color_action == 2)
M.set_species(O.species.name,0,1,O)
else
M.set_species(O.species.name)
M.custom_species = O.custom_species
M.species.create_organs(M) //This is the only way to make it so Unathi TF doesn't result in people dying from organ rejection.
for(var/obj/item/organ/I in M.organs) //This prevents organ rejection
I.species = O.species
for(var/obj/item/organ/I in M.internal_organs) //This prevents organ rejection
I.species = O.species
for(var/obj/item/organ/external/Z in M.organs)//Just in case.
Z.sync_colour_to_human(M)
M.fixblood()
//TFF: Port VoreStation TF fix
M.update_icons_body()
M.update_tail_showing()
//TFF: Port VoreStation TF fix.
if(backup_implants.len)
var/obj/item/organ/external/torso = M.get_organ(BP_TORSO)
for(var/obj/item/weapon/implant/backup/BI in backup_implants)
BI.forceMove(torso)
torso.implants += BI
if(message)
to_chat(M, "<span class='notice'>You lose sensation of your body, feeling only the warmth of everything around you... </span>")
to_chat(O, "<span class='notice'>Your body shifts as you make dramatic changes to your captive's body.</span>")
if (M.species == "Promethean") //Did they get TF'd into a promethean?
M.verbs += /mob/living/carbon/human/proc/shapeshifter_select_shape
M.verbs += /mob/living/carbon/human/proc/shapeshifter_select_colour
M.verbs += /mob/living/carbon/human/proc/shapeshifter_select_hair
M.verbs += /mob/living/carbon/human/proc/shapeshifter_select_gender
M.verbs += /mob/living/carbon/human/proc/regenerate
M.verbs += /mob/living/proc/set_size
M.shapeshifter_select_shape()
/obj/belly/proc/put_in_egg(var/atom/movable/M, message=0)
var/mob/living/carbon/human/O = owner