mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-22 19:46:36 +01:00
Merge branch 'master' of https://github.com/CHOMPstation/CHOMPstation into CHOMPstation-master
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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 ..()
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
)
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user