The Ultimate Bartender Power Creep - Episode Two : Flair Bartending (#34775)
* Flair Bartending * woops * better * quieter yet * fix job prefs panel * clumsy
@@ -418,7 +418,8 @@ var/global/list/BODY_COVER_VALUE_LIST=list("[HEAD]" = COVER_PROTECTION_HEAD,"[EY
|
||||
// MUTATIONS
|
||||
///////////////////////////////////////
|
||||
|
||||
|
||||
#define M_CHECK_ALL 1
|
||||
#define M_CHECK_JOB 2
|
||||
|
||||
// Generic mutations:
|
||||
#define M_TK 1
|
||||
|
||||
@@ -157,7 +157,7 @@ var/list/body_archives = list()
|
||||
H.dna.species = R.dna.species
|
||||
if(H.dna.species != "Human")
|
||||
H.set_species(H.dna.species, TRUE)
|
||||
H.check_mutations = TRUE
|
||||
H.check_mutations = M_CHECK_ALL
|
||||
H.updatehealth()
|
||||
if (our_mind)
|
||||
has_been_shade -= our_mind
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
..()
|
||||
H.put_in_hands(new /obj/item/weapon/storage/bag/plasticbag(H))
|
||||
H.dna.SetSEState(SOBERBLOCK,1)
|
||||
genemutcheck(H, SOBERBLOCK)
|
||||
H.check_mutations = M_CHECK_JOB
|
||||
|
||||
/datum/outfit/bartender/pre_equip_priority(var/mob/living/carbon/human/H, var/species)
|
||||
items_to_collect[/obj/item/weapon/circuitboard/chem_dispenser/soda_dispenser] = SURVIVAL_BOX
|
||||
|
||||
@@ -269,8 +269,7 @@
|
||||
H.dna.SetSEState(SOBERBLOCK,1)
|
||||
if (H.mind.role_alt_title == "Gumshoe" || H.mind.role_alt_title == "Private Eye")
|
||||
H.dna.SetSEState(NOIRBLOCK,1)
|
||||
genemutcheck(H, NOIRBLOCK)
|
||||
genemutcheck(H, SOBERBLOCK)
|
||||
H.check_mutations = M_CHECK_JOB
|
||||
|
||||
/datum/outfit/detective/post_equip_priority(var/mob/living/carbon/human/H)
|
||||
equip_accessory(H, /obj/item/clothing/accessory/holster/knife/boot/preloaded/tactical, /obj/item/clothing/shoes, 5)
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons)
|
||||
minimal_access = list(access_bar,access_weapons)
|
||||
outfit_datum = /datum/outfit/bartender
|
||||
additional_information = "You can juggle most bottles and empty glasses by picking them up while on GRAB intent, so long as you remain unusually sober."
|
||||
|
||||
/datum/job/bartender/post_init(var/mob/living/carbon/human/H)
|
||||
genemutcheck(H, SOBERBLOCK)
|
||||
|
||||
/datum/job/chef
|
||||
title = "Chef"
|
||||
|
||||
@@ -61,6 +61,8 @@
|
||||
|
||||
var/outfit_datum = null
|
||||
|
||||
var/additional_information = ""
|
||||
|
||||
/datum/job/proc/is_disabled()
|
||||
return FALSE
|
||||
|
||||
@@ -122,6 +124,9 @@
|
||||
to_chat(M, "<B>You are the [job_title].</B>")
|
||||
to_chat(M, "<b>As the [job_title] you answer directly to [src.supervisors]. Special circumstances may change this.</b>")
|
||||
|
||||
if (additional_information)
|
||||
to_chat(M, "<span class='notice'>[additional_information]</span>")
|
||||
|
||||
if(src.req_admin_notify)
|
||||
to_chat(M, "<b>You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp.</b>")
|
||||
|
||||
@@ -132,3 +137,6 @@
|
||||
|
||||
/datum/job/proc/get_wage()
|
||||
return wage_payout
|
||||
|
||||
/datum/job/proc/post_init(var/mob/living/carbon/human/H)
|
||||
return
|
||||
|
||||
@@ -54,6 +54,11 @@
|
||||
outfit_datum = /datum/outfit/detective
|
||||
minimal_player_age = 7
|
||||
|
||||
/datum/job/detective/post_init(var/mob/living/carbon/human/H)
|
||||
genemutcheck(H, SOBERBLOCK)
|
||||
if (H.mind.role_alt_title == "Gumshoe" || H.mind.role_alt_title == "Private Eye")
|
||||
genemutcheck(H, NOIRBLOCK)
|
||||
|
||||
/datum/job/officer
|
||||
title = "Security Officer"
|
||||
faction = "Station"
|
||||
|
||||
@@ -153,7 +153,7 @@ var/obj/structure/dorfpod/center/dorfpod
|
||||
|
||||
H.adjustCloneLoss(rand(50,60))
|
||||
H.adjustBrainLoss(rand(20,30))
|
||||
H.check_mutations = TRUE
|
||||
H.check_mutations = M_CHECK_ALL
|
||||
H.Paralyse(4)
|
||||
H.stat = H.status_flags & BUDDHAMODE ? CONSCIOUS : UNCONSCIOUS
|
||||
H.updatehealth()
|
||||
|
||||
@@ -145,11 +145,15 @@ var/global/list/organ_damage_overlays = list(
|
||||
var/obj/location_as_object = loc
|
||||
location_as_object.handle_internal_lifeform(src, 0)
|
||||
last_processed = "Interacted with our container"
|
||||
if(check_mutations)
|
||||
// testing("Updating [src.real_name]'s mutations: "+english_list(mutations))
|
||||
switch(check_mutations)
|
||||
if (M_CHECK_ALL)
|
||||
domutcheck(src,null,MUTCHK_FORCED)
|
||||
update_mutations()
|
||||
check_mutations = 0
|
||||
if (M_CHECK_JOB)
|
||||
var/datum/job/J = job_master.GetJob(job)
|
||||
J.post_init(src)
|
||||
check_mutations = 0
|
||||
//Updates the number of stored chemicals for powers
|
||||
//handle_changeling()
|
||||
//Mutations and radiation
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
#define FLIPPING_DURATION 7
|
||||
#define FLIPPING_ROTATION 360
|
||||
#define FLIPPING_INCREMENT FLIPPING_ROTATION / 8
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// Drinks.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -28,6 +32,11 @@
|
||||
var/flammin_color = null
|
||||
var/base_icon_state = "glassbottle"
|
||||
|
||||
//bottle flipping
|
||||
var/can_flip = FALSE
|
||||
var/last_flipping = 0
|
||||
var/atom/movable/overlay/flipping = null
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/on_reagent_change()
|
||||
if(gulp_size < 5)
|
||||
gulp_size = 5
|
||||
@@ -62,7 +71,7 @@
|
||||
..()
|
||||
cant_drop = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/pickup(mob/user as mob)
|
||||
/obj/item/weapon/reagent_containers/food/drinks/pickup(var/mob/user)
|
||||
..()
|
||||
if(ishuman(user) && arcanetampered) // wizards turn it into SCP-198
|
||||
var/mob/living/carbon/human/H = user
|
||||
@@ -70,6 +79,86 @@
|
||||
H.audible_scream()
|
||||
H.adjustHalLoss(50)
|
||||
H.vessel.trans_to(reagents,reagents.maximum_volume)
|
||||
if (can_flip && (M_SOBER in user.mutations) && (user.a_intent == I_GRAB))
|
||||
if (flipping && (M_CLUMSY in user.mutations) && prob(20))
|
||||
to_chat(user, "<span class='warning'>Your clumsy fingers fail to catch back \the [src].</span>")
|
||||
user.drop_item(src, user.loc, 1)
|
||||
throw_impact(user.loc,1,user)
|
||||
else
|
||||
bottleflip(user)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/dropped(var/mob/user)
|
||||
..()
|
||||
if(flipping)
|
||||
QDEL_NULL(flipping)
|
||||
last_flipping = world.time
|
||||
item_state = initial(item_state)
|
||||
playsound(loc,'sound/effects/slap2.ogg', 5, 1, -2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/proc/bottleflip(var/mob/user)
|
||||
playsound(loc,'sound/effects/woosh.ogg', 10, 1, -2)
|
||||
last_flipping = world.time
|
||||
var/this_flipping = last_flipping
|
||||
item_state = "invisible"
|
||||
user.update_inv_hands()
|
||||
if (flipping)
|
||||
qdel(flipping)
|
||||
var/pixOffX = 0
|
||||
var/list/offsets = user.get_item_offset_by_index(user.active_hand)
|
||||
var/pixOffY = offsets["y"]
|
||||
var/fliplay = user.layer + 1
|
||||
var/rotate = 1
|
||||
var/anim_icon_state = initial(item_state)
|
||||
if (!anim_icon_state)
|
||||
anim_icon_state = initial(icon_state)
|
||||
switch (user.get_direction_by_index(user.active_hand))
|
||||
if ("right_hand")
|
||||
switch(user.dir)
|
||||
if (NORTH)
|
||||
pixOffX = 3
|
||||
fliplay = user.layer - 1
|
||||
rotate = -1
|
||||
if (SOUTH)
|
||||
pixOffX = -4
|
||||
if (WEST)
|
||||
pixOffX = -7
|
||||
if (EAST)
|
||||
pixOffX = 2
|
||||
rotate = -1
|
||||
if ("left_hand")
|
||||
switch(user.dir)
|
||||
if (NORTH)
|
||||
pixOffX = -4
|
||||
fliplay = user.layer - 1
|
||||
if (SOUTH)
|
||||
pixOffX = 3
|
||||
rotate = -1
|
||||
if (WEST)
|
||||
pixOffX = -2
|
||||
if (EAST)
|
||||
pixOffX = 7
|
||||
rotate = -1
|
||||
flipping = anim(target = user, a_icon = 'icons/obj/bottleflip.dmi', a_icon_state = anim_icon_state, sleeptime = FLIPPING_DURATION, offX = pixOffX, lay = fliplay, offY = pixOffY)
|
||||
animate(flipping, pixel_y = pixOffY + 12, transform = turn(matrix(), rotate*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
|
||||
animate(pixel_y = pixOffY + 18, transform = turn(matrix(), rotate*2*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
|
||||
animate(pixel_y = pixOffY + 21, transform = turn(matrix(), rotate*3*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
|
||||
animate(pixel_y = pixOffY + 24, transform = turn(matrix(), rotate*4*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
|
||||
animate(pixel_y = pixOffY + 21, transform = turn(matrix(), rotate*5*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
|
||||
animate(pixel_y = pixOffY + 18, transform = turn(matrix(), rotate*6*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
|
||||
animate(pixel_y = pixOffY + 12, transform = turn(matrix(), rotate*7*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
|
||||
animate(pixel_y = pixOffY + 0, transform = turn(matrix(), rotate*8*FLIPPING_INCREMENT), time = FLIPPING_DURATION/8, easing = LINEAR_EASING)
|
||||
spawn (FLIPPING_DURATION)
|
||||
if ((loc == user) && (this_flipping == last_flipping))//only the last flipping action will reset the bottle's vars
|
||||
QDEL_NULL(flipping)
|
||||
last_flipping = world.time
|
||||
item_state = initial(item_state)
|
||||
if ((M_CLUMSY in user.mutations) && prob(20))
|
||||
to_chat(user, "<span class='warning'>Your clumsy fingers fail to catch back \the [src].</span>")
|
||||
user.drop_item(src, user.loc, 1)
|
||||
throw_impact(user.loc,1,user)
|
||||
else
|
||||
user.update_inv_hands()
|
||||
playsound(loc,'sound/effects/slap2.ogg', 10, 1, -2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/attack(mob/living/M as mob, mob/user as mob, def_zone)
|
||||
var/datum/reagents/R = src.reagents
|
||||
@@ -281,10 +370,6 @@
|
||||
flags = FPRINT | OPENCONTAINER
|
||||
siemens_coefficient = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/golden_cup/tournament_26_06_2011
|
||||
desc = "A golden cup. It will be presented to a winner of tournament 26 June, and name of the winner will be engraved on it."
|
||||
|
||||
|
||||
///////////////////////////////////////////////Drinks
|
||||
//Notes by Darem: Drinks are simply containers that start preloaded. Unlike condiments, the contents can be ingested directly
|
||||
// rather then having to add it to something else first. They should only contain liquids. They have a default container size of 50.
|
||||
@@ -296,6 +381,7 @@
|
||||
icon = 'icons/obj/food_condiment.dmi'
|
||||
icon_state = "milk"
|
||||
vending_cat = "dairy products"
|
||||
can_flip = TRUE
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk/New()
|
||||
..()
|
||||
reagents.add_reagent(MILK, 50)
|
||||
@@ -319,6 +405,7 @@
|
||||
icon = 'icons/obj/food_condiment.dmi'
|
||||
icon_state = "soymilk"
|
||||
vending_cat = "dairy products"//it's not a dairy product but oh come on who cares
|
||||
can_flip = TRUE
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soymilk/New()
|
||||
..()
|
||||
reagents.add_reagent(SOYMILK, 50)
|
||||
@@ -673,6 +760,8 @@
|
||||
vending_cat = "fermented"
|
||||
molotov = -1 //can become a molotov
|
||||
isGlass = 1
|
||||
can_flip = TRUE
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/beer/New()
|
||||
..()
|
||||
reagents.add_reagent(BEER, 30)
|
||||
@@ -686,6 +775,8 @@
|
||||
vending_cat = "fermented"
|
||||
molotov = -1 //can become a molotov
|
||||
isGlass = 1
|
||||
can_flip = TRUE
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/ale/New()
|
||||
..()
|
||||
reagents.add_reagent(ALE, 30)
|
||||
@@ -1204,6 +1295,7 @@
|
||||
amount_per_transfer_from_this = 10
|
||||
volume = 100
|
||||
flags = FPRINT | OPENCONTAINER | NOREACT | SILENTCONTAINER
|
||||
can_flip = TRUE
|
||||
var/shaking = FALSE
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/shaker/reaction/reaction = null
|
||||
|
||||
@@ -1222,6 +1314,11 @@
|
||||
to_chat(user, "<span class='warning'>You won't shake an empty shaker now, will you?</span>")
|
||||
return
|
||||
if (!shaking)
|
||||
if(flipping)
|
||||
QDEL_NULL(flipping)
|
||||
last_flipping = world.time
|
||||
item_state = initial(item_state)
|
||||
playsound(loc,'sound/effects/slap2.ogg', 10, 1, -2)
|
||||
shaking = TRUE
|
||||
var/adjective = pick("furiously","passionately","with vigor","with determination","like a devil","with care and love","like there is no tomorrow")
|
||||
user.visible_message("<span class='notice'>\The [user] shakes \the [src] [adjective]!</span>","<span class='notice'>You shake \the [src] [adjective]!</span>")
|
||||
@@ -1314,6 +1411,7 @@
|
||||
icon_state = "flask"
|
||||
origin_tech = Tc_MATERIALS + "=1"
|
||||
volume = 60
|
||||
can_flip = TRUE
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask/detflask
|
||||
name = "\improper Detective's flask"
|
||||
@@ -1463,6 +1561,7 @@
|
||||
bottleheight = 31
|
||||
melt_temperature = MELTPOINT_GLASS
|
||||
w_type=RECYK_GLASS
|
||||
can_flip = TRUE
|
||||
|
||||
//Keeping this here for now, I'll ask if I should keep it here.
|
||||
/obj/item/weapon/broken_bottle
|
||||
@@ -1911,6 +2010,7 @@
|
||||
molotov = 1
|
||||
isGlass = 1
|
||||
icon_state = "vodkabottle" //not strictly necessary for the "abstract" molotov type that the molotov-making-process copies variables from, but is used for pre-spawned molotovs
|
||||
can_flip = TRUE
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/molotov/New()
|
||||
..()
|
||||
@@ -2038,3 +2138,7 @@
|
||||
forceMove(over_location, glide_size_override = DELAY2GLIDESIZE(0.4 SECONDS))
|
||||
return
|
||||
return ..()
|
||||
|
||||
#undef FLIPPING_DURATION
|
||||
#undef FLIPPING_ROTATION
|
||||
#undef FLIPPING_INCREMENT
|
||||
|
||||
@@ -17,8 +17,11 @@
|
||||
var/current_path = null
|
||||
var/counter = 1
|
||||
|
||||
can_flip = TRUE
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/on_reagent_change()
|
||||
..()
|
||||
can_flip = FALSE
|
||||
overlays.Cut()
|
||||
flammable = 0
|
||||
if(!molotov)
|
||||
@@ -68,6 +71,7 @@
|
||||
item_state = "glass_empty"
|
||||
name = "drinking glass"
|
||||
desc = "Your standard drinking glass."
|
||||
can_flip = TRUE
|
||||
|
||||
if(iscarbon(loc))
|
||||
var/mob/living/carbon/M = loc
|
||||
|
||||
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
BIN
icons/obj/bottleflip.dmi
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |