mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-07-19 12:12:43 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into food2021
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
/datum/category_item/player_setup_item/player_global/settings/load_preferences(var/savefile/S)
|
||||
S["lastchangelog"] >> pref.lastchangelog
|
||||
S["lastnews"] >> pref.lastnews
|
||||
S["lastlorenews"] >> pref.lastlorenews
|
||||
S["default_slot"] >> pref.default_slot
|
||||
S["preferences"] >> pref.preferences_enabled
|
||||
S["preferences_disabled"] >> pref.preferences_disabled
|
||||
@@ -16,6 +17,7 @@
|
||||
/datum/category_item/player_setup_item/player_global/settings/save_preferences(var/savefile/S)
|
||||
S["lastchangelog"] << pref.lastchangelog
|
||||
S["lastnews"] << pref.lastnews
|
||||
S["lastlorenews"] << pref.lastlorenews
|
||||
S["default_slot"] << pref.default_slot
|
||||
S["preferences"] << pref.preferences_enabled
|
||||
S["preferences_disabled"] << pref.preferences_disabled
|
||||
|
||||
@@ -115,7 +115,7 @@ var/list/_client_preferences_by_type
|
||||
key = "SOUND_AIRPUMP"
|
||||
enabled_description = "Audible"
|
||||
disabled_description = "Silent"
|
||||
|
||||
|
||||
/datum/client_preference/old_door_sounds
|
||||
description ="Old Door Sounds"
|
||||
key = "SOUND_OLDDOORS"
|
||||
@@ -253,6 +253,12 @@ var/list/_client_preferences_by_type
|
||||
enabled_description = "Show"
|
||||
disabled_description = "Hide"
|
||||
|
||||
/datum/client_preference/radio_sounds
|
||||
description = "Radio Sounds"
|
||||
key = "RADIO_SOUNDS"
|
||||
enabled_description = "On"
|
||||
disabled_description = "Off"
|
||||
|
||||
/datum/client_preference/runechat_mob
|
||||
description = "Runechat (Mobs)"
|
||||
key = "RUNECHAT_MOB"
|
||||
@@ -270,13 +276,13 @@ var/list/_client_preferences_by_type
|
||||
key = "RUNECHAT_BORDER"
|
||||
enabled_description = "Show"
|
||||
disabled_description = "Hide"
|
||||
enabled_by_default = FALSE
|
||||
enabled_by_default = TRUE
|
||||
|
||||
/datum/client_preference/runechat_long_messages
|
||||
description = "Runechat Message Length"
|
||||
key = "RUNECHAT_LONG"
|
||||
enabled_description = "ERP KING"
|
||||
disabled_description = "Normie"
|
||||
enabled_description = "Long"
|
||||
disabled_description = "Short"
|
||||
enabled_by_default = FALSE
|
||||
|
||||
/datum/client_preference/status_indicators/toggled(mob/preference_mob, enabled)
|
||||
@@ -285,6 +291,13 @@ var/list/_client_preferences_by_type
|
||||
var/datum/plane_holder/PH = preference_mob.plane_holder
|
||||
PH.set_vis(VIS_STATUS, enabled)
|
||||
|
||||
/datum/client_preference/show_lore_news
|
||||
description = "Lore News Popup"
|
||||
key = "NEWS_POPUP"
|
||||
enabled_by_default = TRUE
|
||||
enabled_description = "Popup New On Login"
|
||||
disabled_description = "Do Nothing"
|
||||
|
||||
/********************
|
||||
* Staff Preferences *
|
||||
********************/
|
||||
|
||||
@@ -203,6 +203,10 @@
|
||||
display_name = "hat, tophat"
|
||||
path = /obj/item/clothing/head/that
|
||||
|
||||
/datum/gear/head/panama
|
||||
display_name = "hat, panama"
|
||||
path = /obj/item/clothing/head/panama
|
||||
|
||||
/datum/gear/head/wig/philosopher
|
||||
display_name = "natural philosopher's wig"
|
||||
path = /obj/item/clothing/head/philosopher_wig
|
||||
|
||||
@@ -559,6 +559,18 @@
|
||||
display_name = "department jacket, medical"
|
||||
path = /obj/item/clothing/suit/storage/toggle/med_dep_jacket
|
||||
|
||||
/datum/gear/suit/miscellaneous/light_jacket
|
||||
display_name = "light jacket selection"
|
||||
path = /obj/item/clothing/suit/storage/toggle/light_jacket
|
||||
|
||||
/datum/gear/suit/miscellaneous/light_jacket/New()
|
||||
..()
|
||||
var/list/jacket = list(
|
||||
"grey light jacket" = /obj/item/clothing/suit/storage/toggle/light_jacket,
|
||||
"dark blue light jacket" = /obj/item/clothing/suit/storage/toggle/light_jacket/blue
|
||||
)
|
||||
gear_tweaks += new/datum/gear_tweak/path(jacket)
|
||||
|
||||
/datum/gear/suit/miscellaneous/peacoat
|
||||
display_name = "peacoat"
|
||||
path = /obj/item/clothing/suit/storage/toggle/peacoat
|
||||
|
||||
@@ -57,6 +57,22 @@
|
||||
jumpclothes[initial(jumps.name)] = jumps
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(jumpclothes))
|
||||
|
||||
/datum/gear/uniform/qipao
|
||||
display_name = "qipao"
|
||||
path = /obj/item/clothing/under/qipao
|
||||
|
||||
/datum/gear/uniform/qipao/New()
|
||||
..()
|
||||
gear_tweaks += gear_tweak_free_color_choice
|
||||
|
||||
/datum/gear/uniform/qipao2
|
||||
display_name = "qipao, slim"
|
||||
path = /obj/item/clothing/under/qipao2
|
||||
|
||||
/datum/gear/uniform/qipao2/New()
|
||||
..()
|
||||
gear_tweaks += gear_tweak_free_color_choice
|
||||
|
||||
/datum/gear/uniform/skirt
|
||||
display_name = "skirt selection"
|
||||
path = /obj/item/clothing/under/skirt
|
||||
|
||||
@@ -677,3 +677,14 @@
|
||||
whitelisted = SPECIES_TESHARI
|
||||
sort_category = "Xenowear"
|
||||
cost = 4
|
||||
|
||||
/datum/gear/shoes/teshwrap
|
||||
display_name = "Teshari legwraps"
|
||||
path = /obj/item/clothing/shoes/footwraps/teshari
|
||||
sort_category = "Xenowear"
|
||||
whitelisted = SPECIES_TESHARI
|
||||
cost = 1
|
||||
|
||||
/datum/gear/shoes/teshwrap/New()
|
||||
..()
|
||||
gear_tweaks += gear_tweak_free_color_choice
|
||||
|
||||
@@ -139,6 +139,7 @@ var/list/preferences_datums = list()
|
||||
var/datum/browser/panel
|
||||
|
||||
var/lastnews // Hash of last seen lobby news content.
|
||||
var/lastlorenews //ID of last seen lore news article.
|
||||
|
||||
var/examine_text_mode = 0 // Just examine text, include usage (description_info), switch to examine panel.
|
||||
var/multilingual_mode = 0 // Default behaviour, delimiter-key-space, delimiter-key-delimiter, off
|
||||
|
||||
@@ -238,7 +238,7 @@
|
||||
SScharacter_setup.queue_preferences_save(prefs)
|
||||
|
||||
feedback_add_details("admin_verb","TAirPumpNoise")
|
||||
|
||||
|
||||
/client/verb/toggle_old_door_sounds()
|
||||
set name = "Toggle Old Door Sounds"
|
||||
set category = "Preferences"
|
||||
@@ -253,7 +253,7 @@
|
||||
SScharacter_setup.queue_preferences_save(prefs)
|
||||
|
||||
feedback_add_details("admin_verb","TOldDoorSounds")
|
||||
|
||||
|
||||
/client/verb/toggle_department_door_sounds()
|
||||
set name = "Toggle Department Door Sounds"
|
||||
set category = "Preferences"
|
||||
@@ -378,6 +378,19 @@
|
||||
feedback_add_details("admin_verb","TStatusIndicators")
|
||||
|
||||
|
||||
/client/verb/toggle_radio_sounds()
|
||||
set name = "Toggle Radio Sounds"
|
||||
set category = "Preferences"
|
||||
set desc = "Enable/Disable hearing a sound when somebody speaks over your headset."
|
||||
|
||||
var/pref_path = /datum/client_preference/radio_sounds
|
||||
toggle_preference(pref_path)
|
||||
SScharacter_setup.queue_preferences_save(prefs)
|
||||
|
||||
to_chat(src, "You will now [(is_preference_enabled(/datum/client_preference/radio_sounds)) ? "hear" : "not hear"] radio sounds.")
|
||||
|
||||
feedback_add_details("admin_verb","TRadioSounds")
|
||||
|
||||
// Not attached to a pref datum because those are strict binary toggles
|
||||
/client/verb/toggle_examine_mode()
|
||||
set name = "Toggle Examine Mode"
|
||||
|
||||
@@ -103,6 +103,11 @@
|
||||
siemens_coefficient = 0.9
|
||||
body_parts_covered = 0
|
||||
|
||||
/obj/item/clothing/head/panama
|
||||
name = "panama hat"
|
||||
icon_state = "panama"
|
||||
desc = "Columbian Pure."
|
||||
|
||||
/obj/item/clothing/head/redcoat
|
||||
name = "redcoat's hat"
|
||||
icon_state = "redcoat"
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
/obj/item/clothing/shoes/footwraps/teshari
|
||||
name = "Teshari legwraps"
|
||||
desc = "Traditional Teshari footwear, consisting of a cloth wrapping to cover the foot and lower leg."
|
||||
icon = 'icons/obj/clothing/species/teshari/shoes.dmi'
|
||||
icon_state = "teshwrap"
|
||||
item_state = "teshwrap"
|
||||
shoes_under_pants = 1 //these are thin and wrapped around the leg, clothing would go over it
|
||||
species_restricted = list(SPECIES_TESHARI)
|
||||
@@ -715,6 +715,19 @@
|
||||
item_state_slots = list(slot_r_hand_str = "med_dep_jacket", slot_l_hand_str = "med_dep_jacket")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/light_jacket
|
||||
name = "grey light jacket"
|
||||
desc = "A light, cozy jacket. Now in grey."
|
||||
icon_state = "grey_dep_jacket"
|
||||
item_state_slots = list(slot_r_hand_str = "grey_dep_jacket", slot_l_hand_str = "grey_dep_jacket")
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/light_jacket/blue
|
||||
name = "dark blue light jacket"
|
||||
desc = "A light, cozy jacket. Now in dark blue."
|
||||
icon_state = "blue_dep_jacket"
|
||||
item_state_slots = list(slot_r_hand_str = "blue_dep_jacket", slot_l_hand_str = "blue_dep_jacket")
|
||||
|
||||
/*
|
||||
* Track Jackets
|
||||
*/
|
||||
|
||||
@@ -813,6 +813,18 @@ Uniforms and such
|
||||
desc = "It is a dark blue cheongsam dress."
|
||||
icon_state = "cheongsam-darkblue"
|
||||
|
||||
/obj/item/clothing/under/qipao
|
||||
name = "qipao"
|
||||
desc = "A traditional Chinese women's garment, typically made from silk."
|
||||
icon_state = "qipao"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/qipao2
|
||||
name = "slim qipao"
|
||||
desc = "A traditional Chinese women's garment, typically made from silk. This one is fairly slim."
|
||||
icon_state = "qipao2"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
/obj/item/clothing/under/blazer
|
||||
name = "blue blazer"
|
||||
desc = "A bold but yet conservative outfit, red corduroys, navy blazer and a tie."
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
emagged = 0 //Ignores if somebody doesn't have card access to that machine.
|
||||
var/seconds_electrified = 0 //Shock customers like an airlock.
|
||||
var/shoot_inventory = 0 //Fire items at customers! We're broken!
|
||||
var/shoot_inventory_chance = 1
|
||||
|
||||
var/scan_id = 1
|
||||
var/obj/item/weapon/coin/coin
|
||||
@@ -662,7 +663,7 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
speak(slogan)
|
||||
last_slogan = world.time
|
||||
|
||||
if(shoot_inventory && prob(2))
|
||||
if(shoot_inventory && prob(shoot_inventory_chance))
|
||||
throw_item()
|
||||
|
||||
return
|
||||
@@ -702,20 +703,20 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
|
||||
//Somebody cut an important wire and now we're following a new definition of "pitch."
|
||||
/obj/machinery/vending/proc/throw_item()
|
||||
var/obj/throw_item = null
|
||||
var/obj/item/throw_item = null
|
||||
var/mob/living/target = locate() in view(7,src)
|
||||
if(!target)
|
||||
return 0
|
||||
|
||||
for(var/datum/stored_item/vending_product/R in product_records)
|
||||
for(var/datum/stored_item/vending_product/R in shuffle(product_records))
|
||||
throw_item = R.get_product(loc)
|
||||
if(!throw_item)
|
||||
continue
|
||||
break
|
||||
if(!throw_item)
|
||||
return 0
|
||||
spawn(0)
|
||||
throw_item.throw_at(target, 16, 3, src)
|
||||
return FALSE
|
||||
throw_item.vendor_action(src)
|
||||
INVOKE_ASYNC(throw_item, /atom/movable.proc/throw_at, target, rand(3, 10), rand(1, 3), src)
|
||||
visible_message("<span class='warning'>\The [src] launches \a [throw_item] at \the [target]!</span>")
|
||||
return 1
|
||||
|
||||
|
||||
@@ -843,23 +843,18 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("protein", 3)
|
||||
reagents.add_reagent(toxin_type, toxin_amount)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif
|
||||
desc = "A fillet of sivian fish meat."
|
||||
filling_color = "#2c2cff"
|
||||
color = "#2c2cff"
|
||||
toxin_type = "neurotoxic_protein"
|
||||
toxin_amount = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif/murkfish
|
||||
toxin_type = "murk_protein"
|
||||
reagents.add_reagent("seafood", 3)
|
||||
if(toxin_type && toxin_amount)
|
||||
reagents.add_reagent(toxin_type, toxin_amount)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish
|
||||
desc = "A fillet of fish meat."
|
||||
toxin_type = "neurotoxic_protein"
|
||||
toxin_amount = 1
|
||||
toxin_type = null
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish/sif
|
||||
desc = "A fillet of sivian fish meat."
|
||||
filling_color = "#2c2cff"
|
||||
color = "#2c2cff"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fishfingers
|
||||
name = "Fish Fingers"
|
||||
@@ -871,7 +866,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fishfingers/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("protein", 4)
|
||||
reagents.add_reagent("seafood", 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/zestfish
|
||||
name = "Zesty Fish"
|
||||
@@ -883,11 +878,11 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/zestfish/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("protein", 4)
|
||||
reagents.add_reagent("seafood", 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice
|
||||
name = "huge mushroom slice"
|
||||
desc = "A slice from a huge mushroom."
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mushroomslice
|
||||
name = "mushroom slice"
|
||||
desc = "A slice of mushroom."
|
||||
icon_state = "hugemushroomslice"
|
||||
filling_color = "#E0D7C5"
|
||||
center_of_mass = list("x"=17, "y"=16)
|
||||
@@ -895,7 +890,7 @@
|
||||
nutriment_desc = list("raw" = 2, "mushroom" = 2)
|
||||
bitesize = 6
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/Initialize()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mushroomslice/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("psilocybin", 3)
|
||||
|
||||
@@ -3601,19 +3596,6 @@
|
||||
nutriment_amt = 3
|
||||
nutriment_desc = list("bread" = 3)
|
||||
|
||||
// potato + knife = raw sticks
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(obj/item/weapon/W, mob/user)
|
||||
if(seed && seed.kitchen_tag && seed.kitchen_tag == "potato" && istype(W,/obj/item/weapon/material/knife))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(get_turf(src))
|
||||
to_chat(user, "<span class='notice'>You cut the potato.</span>")
|
||||
qdel(src)
|
||||
else if(seed && seed.kitchen_tag && seed.kitchen_tag == "sunflower" && istype(W,/obj/item/weapon/material/knife))
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawsunflower(get_turf(src))
|
||||
to_chat(user, "<span class='notice'>You remove the seeds from the flower, slightly damaging them.</span>")
|
||||
qdel(src)
|
||||
else
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/rawsticks
|
||||
name = "raw potato sticks"
|
||||
desc = "Raw fries, not very tasty."
|
||||
@@ -4002,7 +3984,8 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/wormsickly/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("fishbait", 10)
|
||||
reagents.add_reagent("fishbait", 9)
|
||||
reagents.add_reagent("protein", 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/worm
|
||||
name = "strange worm"
|
||||
@@ -4015,7 +3998,8 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/worm/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("fishbait", 20)
|
||||
reagents.add_reagent("fishbait", 15)
|
||||
reagents.add_reagent("protein", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/wormdeluxe
|
||||
name = "deluxe worm"
|
||||
@@ -4028,7 +4012,8 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/wormdeluxe/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("fishbait", 40)
|
||||
reagents.add_reagent("fishbait", 30)
|
||||
reagents.add_reagent("protein", 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/siffruit
|
||||
name = "pulsing fruit"
|
||||
|
||||
@@ -339,7 +339,7 @@ I said no!
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/caramelapple
|
||||
|
||||
/datum/recipe/twobread
|
||||
reagents = list("wine" = 5)
|
||||
reagents = list("redwine" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slice/bread,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slice/bread,
|
||||
@@ -790,7 +790,7 @@ I said no!
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/chilicheesefries
|
||||
|
||||
/datum/recipe/risotto
|
||||
reagents = list("wine" = 5, "rice" = 10, "spacespice" = 1)
|
||||
reagents = list("redwine" = 5, "rice" = 10, "spacespice" = 1)
|
||||
fruit = list("mushroom" = 1)
|
||||
reagent_mix = RECIPE_REAGENT_REPLACE //Get that rice and wine outta here
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/risotto
|
||||
|
||||
@@ -191,13 +191,17 @@
|
||||
pocell.charge = pocell.maxcharge
|
||||
qdel(src)
|
||||
return
|
||||
else if(W.sharp)
|
||||
|
||||
if(W.sharp)
|
||||
|
||||
if(seed.kitchen_tag == "pumpkin") // Ugggh these checks are awful.
|
||||
user.show_message("<span class='notice'>You carve a face into [src]!</span>", 1)
|
||||
new /obj/item/clothing/head/pumpkinhead (user.loc)
|
||||
qdel(src)
|
||||
return
|
||||
else if(seed.chems)
|
||||
|
||||
if(seed.chems)
|
||||
|
||||
if(W.sharp && W.edge && !isnull(seed.chems["woodpulp"]))
|
||||
user.show_message("<span class='notice'>You make planks out of \the [src]!</span>", 1)
|
||||
playsound(src, 'sound/effects/woodcutting.ogg', 50, 1)
|
||||
@@ -215,36 +219,49 @@
|
||||
to_chat(user, "You add the newly-formed wood to the stack. It now contains [NG.amount] planks.")
|
||||
qdel(src)
|
||||
return
|
||||
else if(!isnull(seed.chems["potato"]))
|
||||
|
||||
if(seed.kitchen_tag == "sunflower")
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawsunflower(get_turf(src))
|
||||
to_chat(user, SPAN_NOTICE("You remove the seeds from the flower, slightly damaging them."))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(seed.kitchen_tag == "potato" || !isnull(seed.chems["potato"]))
|
||||
to_chat(user, "You slice \the [src] into sticks.")
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
else if(!isnull(seed.chems["carrotjuice"]))
|
||||
|
||||
if(!isnull(seed.chems["carrotjuice"]))
|
||||
to_chat(user, "You slice \the [src] into sticks.")
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/carrotfries(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
else if(!isnull(seed.chems["pineapplejuice"]))
|
||||
|
||||
if(!isnull(seed.chems["pineapplejuice"]))
|
||||
to_chat(user, "You slice \the [src] into rings.")
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/pineapple_ring(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
else if(!isnull(seed.chems["soymilk"]))
|
||||
|
||||
if(!isnull(seed.chems["soymilk"]))
|
||||
to_chat(user, "You roughly chop up \the [src].")
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/soydope(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
else if(seed.get_trait(TRAIT_FLESH_COLOUR))
|
||||
|
||||
if(seed.get_trait(TRAIT_FLESH_COLOUR))
|
||||
to_chat(user, "You slice up \the [src].")
|
||||
var/slices = rand(3,5)
|
||||
var/reagents_to_transfer = round(reagents.total_volume/slices)
|
||||
for(var/i=1; i<=slices; i++)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/fruit_slice/F = new(get_turf(src),seed)
|
||||
if(reagents_to_transfer) reagents.trans_to_obj(F,reagents_to_transfer)
|
||||
if(reagents_to_transfer)
|
||||
reagents.trans_to_obj(F,reagents_to_transfer)
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
|
||||
. = ..()
|
||||
|
||||
@@ -3,6 +3,3 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus
|
||||
plantname = "ambrosiadeus"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sifpod
|
||||
plantname = "sifbulb"
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif
|
||||
var/seeds = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/Initialize(mapload, planttype) // Wild Sifplants have some seeds you can extract with a knife.
|
||||
. = ..()
|
||||
seeds = rand(1, 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/examine(mob/user)
|
||||
. = ..()
|
||||
if(seeds)
|
||||
to_chat(user, SPAN_NOTICE("You can see [seeds] seed\s in \the [src]. You might be able to extract them with a sharp object."))
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/attackby(var/obj/item/weapon/W, var/mob/living/user)
|
||||
if(seed && W.sharp && seeds > 0)
|
||||
var/take_seeds = min(seeds, rand(1,2))
|
||||
seeds -= take_seeds
|
||||
to_chat(user, SPAN_NOTICE("You stick \the [W] into \the [src] and lever out [take_seeds] seed\s."))
|
||||
for(var/i = 1 to take_seeds)
|
||||
new /obj/item/seeds(get_turf(src), seed.name)
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/sifpod
|
||||
plantname = "sifbulb"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/wabback
|
||||
plantname = "wabback"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/blackwabback
|
||||
plantname = "blackwabback"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/wildwabback
|
||||
plantname = "wildwabback"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/eyebulbs
|
||||
plantname = "eyebulbs"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/cavebulbs
|
||||
plantname = "cavebulbs"
|
||||
@@ -13,7 +13,9 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds)
|
||||
var/datum/seed/seed
|
||||
var/modified = 0
|
||||
|
||||
/obj/item/seeds/Initialize()
|
||||
/obj/item/seeds/Initialize(var/ml, var/_seed_type)
|
||||
if(_seed_type in plant_controller.seeds)
|
||||
seed_type = _seed_type
|
||||
update_seed()
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -43,41 +43,46 @@
|
||||
..()
|
||||
wires = new(src)
|
||||
if(!contraband_seeds.len)
|
||||
contraband_seeds = pick(list(
|
||||
list(
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/greengrapeseed = 3,
|
||||
/obj/item/seeds/reishimycelium = 2,
|
||||
/obj/item/seeds/bloodtomatoseed = 1
|
||||
),
|
||||
list(
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/plastiseed = 3,
|
||||
/obj/item/seeds/kudzuseed = 2,
|
||||
/obj/item/seeds/rose/blood = 1
|
||||
),
|
||||
list(
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/amanitamycelium = 3,
|
||||
/obj/item/seeds/libertymycelium = 2,
|
||||
/obj/item/seeds/glowshroom = 1
|
||||
),
|
||||
list(
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/glowberryseed = 3,
|
||||
/obj/item/seeds/icepepperseed = 2,
|
||||
/obj/item/seeds/bluetomatoseed = 1
|
||||
),
|
||||
list(
|
||||
/obj/item/seeds/durian = 2,
|
||||
/obj/item/seeds/ambrosiadeusseed = 1,
|
||||
/obj/item/seeds/killertomatoseed = 1
|
||||
),
|
||||
list(
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/random = 6
|
||||
)
|
||||
))
|
||||
contraband_seeds = pick( /// Some form of ambrosia in all lists.
|
||||
prob(30);list( /// General produce
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/greengrapeseed = 3,
|
||||
/obj/item/seeds/icepepperseed = 2,
|
||||
/obj/item/seeds/kudzuseed = 1
|
||||
),
|
||||
prob(30);list( ///Mushroom batch
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 1,
|
||||
/obj/item/seeds/glowberryseed = 2,
|
||||
/obj/item/seeds/libertymycelium = 1,
|
||||
/obj/item/seeds/reishimycelium = 2,
|
||||
/obj/item/seeds/sporemycelium = 1
|
||||
),
|
||||
prob(15);list( /// Survivalist
|
||||
/obj/item/seeds/ambrosiadeusseed = 2,
|
||||
/obj/item/seeds/redtowermycelium = 2,
|
||||
/obj/item/seeds/vale = 2,
|
||||
/obj/item/seeds/siflettuce = 2
|
||||
),
|
||||
prob(20);list( /// Cold plants
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 2,
|
||||
/obj/item/seeds/thaadra = 2,
|
||||
/obj/item/seeds/icepepperseed = 2,
|
||||
/obj/item/seeds/siflettuce = 1
|
||||
),
|
||||
prob(10);list( ///Poison party
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/surik = 1,
|
||||
/obj/item/seeds/telriis = 1,
|
||||
/obj/item/seeds/nettleseed = 2,
|
||||
/obj/item/seeds/poisonberryseed = 1
|
||||
),
|
||||
prob(5);list( /// Extra poison party!
|
||||
/obj/item/seeds/ambrosiainfernusseed = 1,
|
||||
/obj/item/seeds/amauri = 1,
|
||||
/obj/item/seeds/surik = 1,
|
||||
/obj/item/seeds/deathberryseed = 1 /// Very ow.
|
||||
)
|
||||
)
|
||||
return
|
||||
|
||||
/obj/machinery/seed_storage/process()
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
/datum/seed/apple/sif
|
||||
name = "sifbulb"
|
||||
seed_name = "sivian tree"
|
||||
seed_name = "sivian pod"
|
||||
display_name = "sivian pod"
|
||||
kitchen_tag = "apple"
|
||||
chems = list("nutriment" = list(1,5),"sifsap" = list(10,20))
|
||||
|
||||
@@ -22,6 +22,16 @@
|
||||
/obj/machinery/portable_atmospherics/hydroponics/soil/CanPass()
|
||||
return 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/hydroponics/soil/attackby(obj/item/O, mob/user)
|
||||
if(istype(O, /obj/item/weapon/shovel) && user.a_intent == I_HURT)
|
||||
user.visible_message(SPAN_NOTICE("\The [user] begins filling in \the [src]."))
|
||||
if(do_after(user, 3 SECONDS) && !QDELETED(src))
|
||||
user.visible_message(SPAN_NOTICE("\The [user] fills in \the [src]."))
|
||||
qdel(src)
|
||||
return
|
||||
. = ..()
|
||||
|
||||
|
||||
// Holder for vine plants.
|
||||
// Icons for plants are generated as overlays, so setting it to invisible wouldn't work.
|
||||
// Hence using a blank icon.
|
||||
|
||||
@@ -112,6 +112,12 @@
|
||||
/datum/lore/codex/page/about_news,
|
||||
)
|
||||
|
||||
var/newsindex
|
||||
|
||||
/datum/lore/codex/category/main_news/New()
|
||||
..()
|
||||
newsindex = LAZYLEN(children)
|
||||
|
||||
/datum/lore/codex/page/about_news
|
||||
name = "About the Publisher"
|
||||
data = "The <i>Daedalus Pocket Newscaster</i> is produced and maintained by Occulum Broadcast, the foremost authority on media distribution \
|
||||
|
||||
@@ -42,7 +42,9 @@
|
||||
new /datum/stack_recipe("coilgun stock", /obj/item/weapon/coilgun_assembly, 5, pass_stack_color = TRUE, recycle_material = "[name]"),
|
||||
new /datum/stack_recipe("crude fishing rod", /obj/item/weapon/material/fishing_rod/built, 8, time = 10 SECONDS, pass_stack_color = TRUE, recycle_material = "[name]"),
|
||||
new /datum/stack_recipe("noticeboard", /obj/structure/noticeboard, 1, recycle_material = "[name]"),
|
||||
new /datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]")
|
||||
new /datum/stack_recipe("tanning rack", /obj/structure/tanning_rack, 3, one_per_turf = TRUE, time = 20, on_floor = TRUE, supplied_material = "[name]"),
|
||||
new /datum/stack_recipe("roofing tile", /obj/item/stack/tile/roofing, 3, 4, 20, recycle_material = "[name]"),
|
||||
new /datum/stack_recipe("shovel", /obj/item/weapon/shovel/wood, 2, time = 10, on_floor = TRUE, supplied_material = "[name]")
|
||||
)
|
||||
|
||||
/datum/material/wood/sif
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
//visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message)
|
||||
user.visible_message("<span class='notice'>\The [user] starts cutting hair off \the [src]</span>", "<span class='notice'>You start cutting the hair off \the [src]</span>", "You hear the sound of a knife rubbing against flesh")
|
||||
var/scraped = 0
|
||||
while(amount > 0 && do_after(user, 2.5 SECONDS)) // 2.5s per hide
|
||||
while(amount > 0 && do_after(user, 2.5 SECONDS, user))
|
||||
//Try locating an exisitng stack on the tile and add to there if possible
|
||||
var/obj/item/stack/hairlesshide/H = null
|
||||
for(var/obj/item/stack/hairlesshide/HS in user.loc) // Could be scraping something inside a locker, hence the .loc, not get_turf
|
||||
|
||||
@@ -128,6 +128,26 @@
|
||||
edge = 1
|
||||
var/digspeed = 40
|
||||
|
||||
/obj/item/weapon/shovel/wood
|
||||
icon_state = "whiteshovel"
|
||||
item_state = "whiteshovel"
|
||||
var/datum/material/material
|
||||
|
||||
/obj/item/weapon/shovel/wood/Initialize(var/ml, var/_mat)
|
||||
. = ..()
|
||||
material = get_material_by_name(_mat)
|
||||
if(!istype(material))
|
||||
material = null
|
||||
else
|
||||
name = "[material.display_name] shovel"
|
||||
matter = list("[material.name]" = 50)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/shovel/wood/update_icon()
|
||||
. = ..()
|
||||
color = material ? material.icon_colour : initial(color)
|
||||
alpha = min(max(255 * material.opacity, 80), 255)
|
||||
|
||||
/obj/item/weapon/shovel/spade
|
||||
name = "spade"
|
||||
desc = "A small tool for digging and moving dirt."
|
||||
|
||||
@@ -6,24 +6,25 @@ var/list/mining_overlay_cache = list()
|
||||
icon = 'icons/turf/walls.dmi'
|
||||
icon_state = "rock-dark"
|
||||
density = 1
|
||||
|
||||
|
||||
/turf/simulated/mineral //wall piece
|
||||
name = "rock"
|
||||
icon = 'icons/turf/walls.dmi'
|
||||
icon_state = "rock"
|
||||
var/rock_side_icon_state = "rock_side"
|
||||
var/sand_icon_state = "asteroid"
|
||||
var/rock_icon_state = "rock"
|
||||
var/random_icon = 0
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
opacity = 1
|
||||
density = 1
|
||||
blocks_air = 1
|
||||
temperature = T0C
|
||||
|
||||
can_dirty = FALSE
|
||||
|
||||
var/floor_name = "sand"
|
||||
var/rock_side_icon_state = "rock_side"
|
||||
var/sand_icon_state = "asteroid"
|
||||
var/rock_icon_state = "rock"
|
||||
var/random_icon = 0
|
||||
|
||||
var/ore/mineral
|
||||
var/sand_dug
|
||||
var/mined_ore = 0
|
||||
@@ -65,6 +66,10 @@ var/list/mining_overlay_cache = list()
|
||||
|
||||
has_resources = 1
|
||||
|
||||
/turf/simulated/mineral/ChangeTurf(turf/N, tell_universe, force_lighting_update, preserve_outdoors)
|
||||
clear_ore_effects()
|
||||
. = ..()
|
||||
|
||||
// Alternative rock wall sprites.
|
||||
/turf/simulated/mineral/light
|
||||
icon_state = "rock-light"
|
||||
@@ -109,6 +114,14 @@ var/list/mining_overlay_cache = list()
|
||||
blocks_air = 0
|
||||
can_build_into_floor = TRUE
|
||||
|
||||
/turf/simulated/mineral/floor/mud
|
||||
icon_state = "mud"
|
||||
sand_icon_state = "mud"
|
||||
|
||||
/turf/simulated/mineral/floor/dirt
|
||||
icon_state = "dirt"
|
||||
sand_icon_state = "dirt"
|
||||
|
||||
//Alternative sand floor sprite.
|
||||
/turf/simulated/mineral/floor/light
|
||||
icon_state = "sand-light"
|
||||
@@ -140,6 +153,7 @@ var/list/mining_overlay_cache = list()
|
||||
opacity = 0
|
||||
blocks_air = 0
|
||||
can_build_into_floor = TRUE
|
||||
clear_ore_effects()
|
||||
update_general()
|
||||
|
||||
/turf/simulated/mineral/proc/make_wall()
|
||||
@@ -223,7 +237,7 @@ var/list/mining_overlay_cache = list()
|
||||
|
||||
//We are a sand floor
|
||||
else
|
||||
name = "sand"
|
||||
name = floor_name
|
||||
icon = 'icons/turf/flooring/asteroid.dmi'
|
||||
icon_state = sand_icon_state
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ var/list/slot_equipment_priority = list( \
|
||||
/mob/proc/equip_voidsuit_to_slot_or_del_with_refit(obj/item/clothing/suit/space/void/W as obj, slot, species = SPECIES_HUMAN)
|
||||
W.refit_for_species(species)
|
||||
return equip_to_slot_if_possible(W, slot, 1, 1, 0)
|
||||
|
||||
|
||||
/mob/proc/equip_voidhelm_to_slot_or_del_with_refit(obj/item/clothing/head/helmet/space/void/W as obj, slot, species = SPECIES_HUMAN)
|
||||
W.refit_for_species(species)
|
||||
return equip_to_slot_if_possible(W, slot, 1, 1, 0)
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
data["replaces_nutriment"] = replaces_nutriment
|
||||
data["collects_produce"] = collects_produce
|
||||
data["removes_dead"] = removes_dead
|
||||
|
||||
|
||||
return data
|
||||
|
||||
|
||||
@@ -83,22 +83,22 @@
|
||||
/mob/living/bot/farmbot/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
|
||||
add_fingerprint(usr)
|
||||
|
||||
switch(action)
|
||||
if("power")
|
||||
if(!access_scanner.allowed(src))
|
||||
if(!access_scanner.allowed(usr))
|
||||
return FALSE
|
||||
if(on)
|
||||
turn_off()
|
||||
else
|
||||
turn_on()
|
||||
. = TRUE
|
||||
|
||||
|
||||
if(locked)
|
||||
return TRUE
|
||||
|
||||
|
||||
switch(action)
|
||||
if("water")
|
||||
waters_trays = !waters_trays
|
||||
|
||||
@@ -249,13 +249,13 @@
|
||||
cold_discomfort_level = 215
|
||||
|
||||
has_organ = list( //No appendix.
|
||||
O_HEART = /obj/item/organ/internal/heart,
|
||||
O_HEART = /obj/item/organ/internal/heart/tajaran,
|
||||
O_LUNGS = /obj/item/organ/internal/lungs,
|
||||
O_VOICE = /obj/item/organ/internal/voicebox,
|
||||
O_LIVER = /obj/item/organ/internal/liver,
|
||||
O_KIDNEYS = /obj/item/organ/internal/kidneys,
|
||||
O_BRAIN = /obj/item/organ/internal/brain,
|
||||
O_EYES = /obj/item/organ/internal/eyes,
|
||||
O_EYES = /obj/item/organ/internal/eyes/tajaran,
|
||||
O_STOMACH = /obj/item/organ/internal/stomach,
|
||||
O_INTESTINE = /obj/item/organ/internal/intestine
|
||||
)
|
||||
|
||||
@@ -301,7 +301,7 @@
|
||||
if(istype(H.w_uniform, /obj/item/clothing/under))
|
||||
suit = H.w_uniform
|
||||
|
||||
|
||||
|
||||
var/list/slots = list()
|
||||
for(var/entry in H.species.hud.gear)
|
||||
var/list/slot_ref = H.species.hud.gear[entry]
|
||||
@@ -316,7 +316,7 @@
|
||||
)))
|
||||
data["slots"] = slots
|
||||
|
||||
|
||||
|
||||
var/list/specialSlots = list()
|
||||
if(H.species.hud.has_hands)
|
||||
specialSlots.Add(list(list(
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
|
||||
catalogue_data = list(/datum/category_item/catalogue/fauna/javelin)
|
||||
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish/sif
|
||||
|
||||
/datum/category_item/catalogue/fauna/icebass
|
||||
name = "Sivian Fauna - Glitter Bass"
|
||||
@@ -156,7 +156,7 @@
|
||||
|
||||
catalogue_data = list(/datum/category_item/catalogue/fauna/icebass)
|
||||
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish/sif
|
||||
|
||||
var/max_red = 150
|
||||
var/min_red = 50
|
||||
@@ -245,7 +245,7 @@
|
||||
|
||||
var/image/head_image
|
||||
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish/sif
|
||||
|
||||
/mob/living/simple_mob/animal/passive/fish/rockfish/Initialize()
|
||||
. = ..()
|
||||
@@ -292,7 +292,7 @@
|
||||
|
||||
has_eye_glow = TRUE
|
||||
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish/sif
|
||||
|
||||
/datum/category_item/catalogue/fauna/murkin
|
||||
name = "Sivian Fauna - Murkfish"
|
||||
@@ -319,4 +319,4 @@
|
||||
|
||||
catalogue_data = list(/datum/category_item/catalogue/fauna/murkin)
|
||||
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/sif/murkfish
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/fish/sif
|
||||
|
||||
@@ -57,7 +57,8 @@
|
||||
icon_living = "mouse_[body_color]"
|
||||
icon_dead = "mouse_[body_color]_dead"
|
||||
icon_rest = "mouse_[body_color]_sleep"
|
||||
desc = "A small [body_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself."
|
||||
if (body_color != "rat")
|
||||
desc = "A small [body_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself."
|
||||
|
||||
/mob/living/simple_mob/animal/passive/mouse/Crossed(atom/movable/AM as mob|obj)
|
||||
if(AM.is_incorporeal())
|
||||
@@ -106,6 +107,8 @@
|
||||
|
||||
/mob/living/simple_mob/animal/passive/mouse/rat
|
||||
name = "rat"
|
||||
tt_desc = "E Rattus rattus"
|
||||
desc = "A large rodent, often seen hiding in maintenance areas and making a nuisance of itself."
|
||||
body_color = "rat"
|
||||
icon_state = "mouse_rat"
|
||||
maxHealth = 20
|
||||
|
||||
@@ -72,12 +72,20 @@
|
||||
output += "<p>[href(src, list("give_feedback" = 1), "Give Feedback")]</p>"
|
||||
|
||||
if(GLOB.news_data.station_newspaper)
|
||||
output += "<a href='byond://?src=\ref[src];open_station_news=1'>Show [using_map.station_name] News</A>"
|
||||
if(client.prefs.lastlorenews == GLOB.news_data.newsindex)
|
||||
output += "<p><a href='byond://?src=\ref[src];open_station_news=1'>Show [using_map.station_name] News</A></p>"
|
||||
else
|
||||
output += "<p><b><a href='byond://?src=\ref[src];open_station_news=1'>Show [using_map.station_name] News (NEW!)</A></b></p>"
|
||||
|
||||
output += "</div>"
|
||||
|
||||
if(GLOB.news_data.station_newspaper && !client.seen_news)
|
||||
if (client.prefs.lastlorenews == GLOB.news_data.newsindex)
|
||||
client.seen_news = 1
|
||||
|
||||
if(GLOB.news_data.station_newspaper && !client.seen_news && client.is_preference_enabled(/datum/client_preference/show_lore_news))
|
||||
show_latest_news(GLOB.news_data.station_newspaper)
|
||||
client.prefs.lastlorenews = GLOB.news_data.newsindex
|
||||
SScharacter_setup.queue_preferences_save(client.prefs)
|
||||
|
||||
panel = new(src, "Welcome","Welcome", 500, 480, src)
|
||||
panel.set_window_options("can_close=0")
|
||||
|
||||
@@ -1679,159 +1679,223 @@ shaved
|
||||
///////////////////////////////////
|
||||
*/
|
||||
|
||||
/datum/sprite_accessory/hair/una_spines_long
|
||||
//Unathi Head-Bits
|
||||
|
||||
/datum/sprite_accessory/hair/una
|
||||
name = "Long Unathi Spines"
|
||||
icon_state = "soghun_longspines"
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
/datum/sprite_accessory/hair/una_spines_short
|
||||
/datum/sprite_accessory/hair/una/spines_short
|
||||
name = "Short Unathi Spines"
|
||||
icon_state = "soghun_shortspines"
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
/datum/sprite_accessory/hair/una_frills_long
|
||||
/datum/sprite_accessory/hair/una/frills_long
|
||||
name = "Long Unathi Frills"
|
||||
icon_state = "soghun_longfrills"
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
/datum/sprite_accessory/hair/una_frills_short
|
||||
/datum/sprite_accessory/hair/una/frills_short
|
||||
name = "Short Unathi Frills"
|
||||
icon_state = "soghun_shortfrills"
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
/datum/sprite_accessory/hair/una_horns
|
||||
/datum/sprite_accessory/hair/una/horns
|
||||
name = "Unathi Horns"
|
||||
icon_state = "soghun_horns"
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
/datum/sprite_accessory/hair/una_bighorns
|
||||
/datum/sprite_accessory/hair/una/bighorns
|
||||
name = "Unathi Big Horns"
|
||||
icon_state = "unathi_bighorn"
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
/datum/sprite_accessory/hair/una_smallhorns
|
||||
/datum/sprite_accessory/hair/una/smallhorns
|
||||
name = "Unathi Small Horns"
|
||||
icon_state = "unathi_smallhorn"
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
/datum/sprite_accessory/hair/una_ramhorns
|
||||
/datum/sprite_accessory/hair/una/ramhorns
|
||||
name = "Unathi Ram Horns"
|
||||
icon_state = "unathi_ramhorn"
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
/datum/sprite_accessory/hair/una_sidefrills
|
||||
/datum/sprite_accessory/hair/una/sidefrills
|
||||
name = "Unathi Side Frills"
|
||||
icon_state = "unathi_sidefrills"
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
//Skrell 'hairstyles'
|
||||
/datum/sprite_accessory/hair/skr_tentacle_veryshort
|
||||
name = "Skrell Short Tentacles"
|
||||
icon_state = "skrell_hair_short"
|
||||
species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = MALE
|
||||
|
||||
/datum/sprite_accessory/hair/skr_tentacle_short
|
||||
/datum/sprite_accessory/hair/skr
|
||||
name = "Skrell Average Tentacles"
|
||||
icon_state = "skrell_hair_average"
|
||||
species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/hair/skr_tentacle_average
|
||||
/datum/sprite_accessory/hair/skr/tentacle_veryshort
|
||||
name = "Skrell Short Tentacles"
|
||||
icon_state = "skrell_hair_short"
|
||||
gender = MALE
|
||||
|
||||
/datum/sprite_accessory/hair/skr/tentacle_average
|
||||
name = "Skrell Long Tentacles"
|
||||
icon_state = "skrell_hair_long"
|
||||
species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/hair/skr_tentacle_verylong
|
||||
/datum/sprite_accessory/hair/skr/tentacle_verylong
|
||||
name = "Skrell Very Long Tentacles"
|
||||
icon_state = "skrell_hair_verylong"
|
||||
species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
//Tajaran hairstyles
|
||||
/datum/sprite_accessory/hair/taj_ears
|
||||
/datum/sprite_accessory/hair/taj
|
||||
name = "Tajaran Ears"
|
||||
icon_state = "ears_plain"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_clean
|
||||
name = "Tajaran Clean"
|
||||
icon_state = "hair_clean"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_bangs
|
||||
/datum/sprite_accessory/hair/taj/bangs
|
||||
name = "Tajaran Bangs"
|
||||
icon_state = "hair_bangs"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj/bangs_alt
|
||||
name = "Tajaran Bangs (Alt)"
|
||||
icon_state = "hair_bangs_alt"
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_braid
|
||||
/datum/sprite_accessory/hair/taj/short_fringe
|
||||
name = "Tajaran Short Fringe"
|
||||
icon_state = "hair_shortfringe"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/braid
|
||||
name = "Tajaran Braid"
|
||||
icon_state = "hair_tbraid"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_shaggy
|
||||
/datum/sprite_accessory/hair/taj/clean
|
||||
name = "Tajaran Clean"
|
||||
icon_state = "hair_clean"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/gman
|
||||
name = "Tajaran G-Man"
|
||||
icon_state = "hair_gman"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/greaser
|
||||
name = "Tajaran Greaser"
|
||||
icon_state = "hair_greaser"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/bun
|
||||
name = "Tajaran Bun"
|
||||
icon_state = "hair_tajbun"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/bunsmall
|
||||
name = "Tajaran Bun (Small)"
|
||||
icon_state = "hair_tajsmallbun"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/bunlow
|
||||
name = "Tajaran Bun (Low)"
|
||||
icon_state = "hair_tajbunlow"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/bunlowsmall
|
||||
name = "Tajaran Bun (Low, Small)"
|
||||
icon_state = "hair_tajbunlowsmall"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/_wedge
|
||||
name = "Tajaran Wedge"
|
||||
icon_state = "hair_wedge"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/shaggy
|
||||
name = "Tajaran Shaggy"
|
||||
icon_state = "hair_shaggy"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_mohawk
|
||||
/datum/sprite_accessory/hair/taj/mohawk
|
||||
name = "Tajaran Mohawk"
|
||||
icon_state = "hair_mohawk"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_plait
|
||||
/datum/sprite_accessory/hair/taj/plait
|
||||
name = "Tajaran Plait"
|
||||
icon_state = "hair_plait"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_straight
|
||||
/datum/sprite_accessory/hair/taj/_sidepony
|
||||
name = "Tajaran Side Ponytail"
|
||||
icon_state = "hair_sidepony"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/straight
|
||||
name = "Tajaran Straight"
|
||||
icon_state = "hair_straight"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_long
|
||||
/datum/sprite_accessory/hair/taj/long
|
||||
name = "Tajaran Long"
|
||||
icon_state = "hair_long"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_rattail
|
||||
/datum/sprite_accessory/hair/taj/tresses
|
||||
name = "Tajaran Tresses"
|
||||
icon_state = "hair_tresses"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/shoulderparted
|
||||
name = "Tajaran Shoulder Parted"
|
||||
icon_state = "hair_shoulderparted"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/shoulderpartedsmall
|
||||
name = "Tajaran Shoulder Parted (Small)"
|
||||
icon_state = "hair_shoulderpartedsmall"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/shoulderpartedlong
|
||||
name = "Tajaran Shoulder Parted (Long)"
|
||||
icon_state = "hair_shoulderpartedlong"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/sidepartedleft
|
||||
name = "Tajaran Side Parted (Left)"
|
||||
icon_state = "hair_sidepartedleft"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/sidepartedright
|
||||
name = "Tajaran Side Parted (Right)"
|
||||
icon_state = "hair_sidepartedright"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/shoulderlength
|
||||
name = "Tajaran Shoulder Length"
|
||||
icon_state = "hair_shoulderlength"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/shoulderlengthalt
|
||||
name = "Tajaran Shoulder Length (Alt)"
|
||||
icon_state = "hair_shoulderlengthalt"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/cascading
|
||||
name = "Tajaran Cascading"
|
||||
icon_state = "hair_cascading"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/cascadingalt
|
||||
name = "Tajaran Cascading (Alt)"
|
||||
icon_state = "hair_cascadingalt"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/rattail
|
||||
name = "Tajaran Rat Tail"
|
||||
icon_state = "hair_rattail"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_spiky
|
||||
/datum/sprite_accessory/hair/taj/spiky
|
||||
name = "Tajaran Spiky"
|
||||
icon_state = "hair_tajspiky"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_messy
|
||||
/datum/sprite_accessory/hair/taj/fringeup
|
||||
name = "Tajaran Fringe Spike"
|
||||
icon_state = "hair_fringeup"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/messy
|
||||
name = "Tajaran Messy"
|
||||
icon_state = "hair_messy"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_curls
|
||||
/datum/sprite_accessory/hair/taj/curls
|
||||
name = "Tajaran Curly"
|
||||
icon_state = "hair_curly"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_wife
|
||||
/datum/sprite_accessory/hair/taj/curlsalt
|
||||
name = "Tajaran Curly, alt"
|
||||
icon_state = "hair_curlyalt"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/mane
|
||||
name = "Tajaran Mane"
|
||||
icon_state = "hair_mane"
|
||||
|
||||
/datum/sprite_accessory/hair/taj/wife
|
||||
name = "Tajaran Housewife"
|
||||
icon_state = "hair_wife"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_victory
|
||||
/datum/sprite_accessory/hair/taj/victory
|
||||
name = "Tajaran Victory Curls"
|
||||
icon_state = "hair_victory"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_bob
|
||||
/datum/sprite_accessory/hair/taj/bob
|
||||
name = "Tajaran Bob"
|
||||
icon_state = "hair_tbob"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/hair/taj_ears_fingercurl
|
||||
/datum/sprite_accessory/hair/taj/fingercurl
|
||||
name = "Tajaran Finger Curls"
|
||||
icon_state = "hair_fingerwave"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
//Teshari things
|
||||
/datum/sprite_accessory/hair/teshari
|
||||
@@ -1891,8 +1955,6 @@ shaved
|
||||
name = "Teshari Mushroom"
|
||||
icon_state = "teshari_mushroom"
|
||||
|
||||
//Tesh things ported from Ark Station
|
||||
|
||||
/datum/sprite_accessory/hair/teshari/twies
|
||||
name = "Teshari Twies"
|
||||
icon_state = "teshari_twies"
|
||||
@@ -1914,102 +1976,89 @@ shaved
|
||||
icon_state = "teshari_fluffymohawk"
|
||||
|
||||
// Vox things
|
||||
/datum/sprite_accessory/hair/vox_braid_long
|
||||
/datum/sprite_accessory/hair/vox
|
||||
name = "Long Vox braid"
|
||||
icon_state = "vox_longbraid"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_braid_short
|
||||
/datum/sprite_accessory/hair/vox/braid_short
|
||||
name = "Short Vox Braid"
|
||||
icon_state = "vox_shortbraid"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_quills_short
|
||||
/datum/sprite_accessory/hair/vox/quills_short
|
||||
name = "Short Vox Quills"
|
||||
icon_state = "vox_shortquills"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_quills_kingly
|
||||
/datum/sprite_accessory/hair/vox/quills_kingly
|
||||
name = "Kingly Vox Quills"
|
||||
icon_state = "vox_kingly"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_quills_mohawk
|
||||
/datum/sprite_accessory/hair/vox/quills_mohawk
|
||||
name = "Quill Mohawk"
|
||||
icon_state = "vox_mohawk"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/facial_hair/taj_sideburns
|
||||
//Tajaran Facial Hair
|
||||
|
||||
/datum/sprite_accessory/facial_hair/taj
|
||||
name = "Tajaran Sideburns"
|
||||
icon_state = "facial_sideburns"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/facial_hair/taj_mutton
|
||||
/datum/sprite_accessory/facial_hair/taj/mutton
|
||||
name = "Tajaran Mutton"
|
||||
icon_state = "facial_mutton"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/facial_hair/taj_pencilstache
|
||||
/datum/sprite_accessory/facial_hair/taj/pencilstache
|
||||
name = "Tajaran Pencilstache"
|
||||
icon_state = "facial_pencilstache"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/facial_hair/taj_moustache
|
||||
/datum/sprite_accessory/facial_hair/taj/moustache
|
||||
name = "Tajaran Moustache"
|
||||
icon_state = "facial_moustache"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/facial_hair/taj_goatee
|
||||
/datum/sprite_accessory/facial_hair/taj/goatee
|
||||
name = "Tajaran Goatee"
|
||||
icon_state = "facial_goatee"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
/datum/sprite_accessory/facial_hair/taj_smallstache
|
||||
/datum/sprite_accessory/facial_hair/taj/smallstache
|
||||
name = "Tajaran Smallsatche"
|
||||
icon_state = "facial_smallstache"
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
|
||||
//unathi horn beards and the like
|
||||
|
||||
/datum/sprite_accessory/facial_hair/una_chinhorn
|
||||
/datum/sprite_accessory/facial_hair/una
|
||||
name = "Unathi Chin Horn"
|
||||
icon_state = "facial_chinhorns"
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
/datum/sprite_accessory/facial_hair/una_hornadorns
|
||||
/datum/sprite_accessory/facial_hair/una/hornadorns
|
||||
name = "Unathi Horn Adorns"
|
||||
icon_state = "facial_hornadorns"
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
/datum/sprite_accessory/facial_hair/una_spinespikes
|
||||
/datum/sprite_accessory/facial_hair/una/spinespikes
|
||||
name = "Unathi Spine Spikes"
|
||||
icon_state = "facial_spikes"
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
/datum/sprite_accessory/facial_hair/una_dorsalfrill
|
||||
/datum/sprite_accessory/facial_hair/una/dorsalfrill
|
||||
name = "Unathi Dorsal Frill"
|
||||
icon_state = "facial_dorsalfrill"
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
|
||||
//Teshari things
|
||||
/datum/sprite_accessory/facial_hair/teshari_beard
|
||||
//Teshari face things
|
||||
/datum/sprite_accessory/facial_hair/teshari
|
||||
name = "Teshari Beard"
|
||||
icon_state = "teshari_chin"
|
||||
species_allowed = list(SPECIES_TESHARI)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/facial_hair/teshari_scraggly
|
||||
/datum/sprite_accessory/facial_hair/teshari/scraggly
|
||||
name = "Teshari Scraggly"
|
||||
icon_state = "teshari_scraggly"
|
||||
species_allowed = list(SPECIES_TESHARI)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/facial_hair/teshari_chops
|
||||
|
||||
/datum/sprite_accessory/facial_hair/teshari/chops
|
||||
name = "Teshari Chops"
|
||||
icon_state = "teshari_gap"
|
||||
species_allowed = list(SPECIES_TESHARI)
|
||||
gender = NEUTER
|
||||
|
||||
/*
|
||||
////////////////////////////
|
||||
|
||||
@@ -344,13 +344,43 @@
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/elfs2
|
||||
name = "pointed ears"
|
||||
desc = ""
|
||||
icon_state = "ears_pointy"
|
||||
do_colouration = 1
|
||||
species_allowed = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/ears/elfs
|
||||
name = "elven ears"
|
||||
name = "pointed ears (tall)"
|
||||
desc = ""
|
||||
icon_state = "elfs"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
species_allowed = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/ears/elfs3
|
||||
name = "pointed ears (down)"
|
||||
desc = ""
|
||||
icon_state = "ears_pointy_down"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
species_allowed = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/ears/elfs4
|
||||
name = "pointed ears (long)"
|
||||
desc = ""
|
||||
icon_state = "ears_pointy_long"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
species_allowed = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/ears/elfs5
|
||||
name = "pointed ears (long, down)"
|
||||
desc = ""
|
||||
icon_state = "ears_pointy_long_down"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
species_allowed = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/ears/sleek
|
||||
|
||||
@@ -7,6 +7,7 @@ GLOBAL_DATUM_INIT(news_data, /datum/lore/news, new)
|
||||
/datum/lore/news
|
||||
var/datum/feed_channel/station_newspaper
|
||||
var/datum/lore/codex/category/main_news/news_codex = new()
|
||||
var/newsindex
|
||||
|
||||
/datum/lore/news/New()
|
||||
..()
|
||||
@@ -17,6 +18,10 @@ GLOBAL_DATUM_INIT(news_data, /datum/lore/news, new)
|
||||
break
|
||||
spawn(300) // Yes, again.
|
||||
fill_codex_news()
|
||||
if (!news_codex.newsindex)
|
||||
return
|
||||
else
|
||||
newsindex = news_codex.newsindex
|
||||
|
||||
/datum/lore/news/proc/fill_codex_news()
|
||||
if(!news_network)
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
/obj/item/organ/internal/eyes/tajaran
|
||||
icon_state = "tajaran_eyes"
|
||||
|
||||
/obj/item/organ/internal/heart/tajaran
|
||||
icon_state = "tajaran_heart-on"
|
||||
dead_icon = "tajaran_heart-off"
|
||||
|
||||
@@ -30,17 +30,6 @@
|
||||
charge_cost = 800
|
||||
recharge_time = 0.5 SECONDS
|
||||
|
||||
/obj/item/weapon/gun/energy/stunrevolver
|
||||
name = "stun revolver"
|
||||
desc = "A LAEP20 Aktzin. Designed and produced by Lawson Arms under the wing of Hephaestus, several TSCs have been trying to get a hold of the blueprints for half a decade."
|
||||
description_fluff = "Lawson Arms is Hephaestus Industries’ main personal-energy-weapon branding, often sold alongside MarsTech projectile weapons to security and law enforcement agencies. \
|
||||
The Aktzin's capsule-based stun ammunition is a closely guarded Hephaestus Industries patent, and the company has been particularly litigious towards any attempted imitators."
|
||||
icon_state = "stunrevolver"
|
||||
item_state = "stunrevolver"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
projectile_type = /obj/item/projectile/energy/electrode/strong
|
||||
charge_cost = 300
|
||||
|
||||
/obj/item/weapon/gun/energy/crossbow
|
||||
name = "mini energy-crossbow"
|
||||
desc = "A weapon favored by many mercenary stealth specialists."
|
||||
@@ -80,4 +69,45 @@
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_POWER = 3)
|
||||
fire_delay = 20
|
||||
charge_cost = 600
|
||||
projectile_type = /obj/item/projectile/energy/plasmastun
|
||||
projectile_type = /obj/item/projectile/energy/plasmastun
|
||||
|
||||
//Stun Revolvers
|
||||
|
||||
/obj/item/weapon/gun/energy/stunrevolver
|
||||
name = "stun revolver"
|
||||
desc = "A LAEP20 Aktzin. Designed and produced by Lawson Arms under the wing of Hephaestus, \
|
||||
several TSCs have been trying to get a hold of the blueprints for half a decade."
|
||||
description_fluff = "Lawson Arms is Hephaestus Industries’ main personal-energy-weapon branding, \
|
||||
often sold alongside MarsTech projectile weapons to security and law enforcement agencies. \
|
||||
The Aktzin's capsule-based stun ammunition is a closely guarded Hephaestus Industries patent, \
|
||||
and the company has been particularly litigious towards any attempted imitators."
|
||||
icon_state = "stunrevolver"
|
||||
item_state = "stunrevolver"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
projectile_type = /obj/item/projectile/energy/electrode/strong
|
||||
charge_cost = 300
|
||||
|
||||
/obj/item/weapon/gun/energy/stunrevolver/vintage
|
||||
name = "vintage stun revolver"
|
||||
desc = "An older model stun revolver that is still in service across the frontier."
|
||||
description_fluff = "The LTX1020 Bolter, a Firefly Co. staple from when the company was in its hayday. \
|
||||
While Firefly Co. has sadly been dissmantled due to bankruptcy, their iconic weapons can still be found \
|
||||
across the frontier as anything from collectors items to surplus equipment. The LTX1020 falls under \
|
||||
the latter category. Several companies have been known to use the base tech within the Bolter to create \
|
||||
their own variants of the Stun Revolver."
|
||||
icon_state = "vinstunrevolver"
|
||||
item_state = "stunrevolver"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
|
||||
/obj/item/weapon/gun/energy/stunrevolver/snubnose
|
||||
name = "snub stun revolver"
|
||||
desc = "A snub nose stun revolver sporting a rather elegant look."
|
||||
description_fluff = "The LTX1010 Stubby, a Firefly Co. staple from when the company was in its hayday. \
|
||||
While Firefly Co. has sadly been dissmantled due to bankruptcy, their iconic weapons can still be found \
|
||||
across the frontier as anything from collectors items to surplus equipment. The LTX1010 falls under \
|
||||
the latter category. Gangsters and other gentlemanly criminals alike use the Stubby as a means of policing \
|
||||
within their ranks."
|
||||
icon_state = "snubstunrevolver"
|
||||
item_state = "stunrevolver"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
@@ -1,7 +1,8 @@
|
||||
// For all intents and purposes, these work exactly the same as pump shotguns. It's unnecessary to make their own procs for them.
|
||||
|
||||
////////Base Rifle////////
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/rifle
|
||||
name = "bolt action rifle"
|
||||
name = "bolt-action rifle"
|
||||
desc = "The Hedberg-Hammarstrom Volsung is a modern interpretation of an almost ancient weapon design. The model is popular among hunters and collectors due to its reliability. Uses 7.62mm rounds."
|
||||
description_fluff = "Sif’s largest home-grown firearms manufacturer, the Hedberg-Hammarstrom company offers a range of high-quality, high-cost hunting rifles and shotguns designed with the Sivian wilderness - and its wildlife - in mind. \
|
||||
The company operates just one production plant in Kalmar, but their weapons have found popularity on garden worlds as far afield as the Tajaran homeworld due to their excellent build quality, precision, and stopping power."
|
||||
@@ -14,20 +15,25 @@
|
||||
ammo_type = /obj/item/ammo_casing/a762
|
||||
load_method = SINGLE_CASING|SPEEDLOADER
|
||||
action_sound = 'sound/weapons/riflebolt.ogg'
|
||||
pump_animation = null
|
||||
pump_animation = "boltaction-cycling"
|
||||
|
||||
////////Practice Rifle////////
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice // For target practice
|
||||
name = "practice bolt-action rifle"
|
||||
icon_state = "boltaction_practice"
|
||||
desc = "A bolt-action rifle with a lightweight synthetic wood stock, designed for competitive shooting. Comes shipped with practice rounds pre-loaded into the gun. Popular among professional marksmen. Uses 7.62mm rounds."
|
||||
ammo_type = /obj/item/ammo_casing/a762/practice
|
||||
pump_animation = "boltaction_practice-cycling"
|
||||
|
||||
////////Ceremonial Rifle////////
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/ceremonial
|
||||
name = "ceremonial bolt-action rifle"
|
||||
desc = "A bolt-action rifle with a heavy, high-quality wood stock that has a beautiful finish. Clearly not intended to be used in combat. Uses 7.62mm rounds."
|
||||
icon_state = "boltaction_c"
|
||||
item_state = "boltaction_c"
|
||||
icon_state = "ceremonial_rifle"
|
||||
ammo_type = /obj/item/ammo_casing/a762/blank
|
||||
pump_animation = "ceremonial_rifle-cycling"
|
||||
|
||||
// Stole hacky terrible code from doublebarrel shotgun. -Spades
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/ceremonial/attackby(var/obj/item/A as obj, mob/user as mob)
|
||||
if(istype(A, /obj/item/weapon/surgical/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter) && w_class != ITEMSIZE_NORMAL)
|
||||
to_chat(user, "<span class='notice'>You begin to shorten the barrel and stock of \the [src].</span>")
|
||||
@@ -37,7 +43,7 @@
|
||||
user.visible_message("<span class='danger'>[src] goes off!</span>", "<span class='danger'>The rifle goes off in your face!</span>")
|
||||
return
|
||||
if(do_after(user, 30))
|
||||
icon_state = "sawnrifle"
|
||||
icon_state = "sawn_rifle"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
recoil = 2 // Owch
|
||||
accuracy = -15 // You know damn well why.
|
||||
@@ -46,11 +52,14 @@
|
||||
slot_flags |= (SLOT_BELT|SLOT_HOLSTER) //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) - or in a holster, why not.
|
||||
name = "sawn-off rifle"
|
||||
desc = "The firepower of a rifle, now the size of a pistol, with an effective combat range of about three feet. Uses 7.62mm rounds."
|
||||
pump_animation = "sawn_rifle-cycling"
|
||||
to_chat(user, "<span class='warning'>You shorten the barrel and stock of \the [src]!</span>")
|
||||
else
|
||||
..()
|
||||
|
||||
//Lever actions are the same thing, but bigger.
|
||||
|
||||
////////Standard Lever Action Rifle////////
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever
|
||||
name = "lever-action rifle"
|
||||
desc = "The Hedberg-Hammarstrom Edda is the latest version of an almost ancient weapon design from the 19th century, popular with some due to its simplistic design. This one uses a lever-action to move new rounds into the chamber. Uses 7.62mm rounds."
|
||||
@@ -61,10 +70,12 @@
|
||||
max_shells = 5
|
||||
caliber = "7.62mm"
|
||||
load_method = SINGLE_CASING
|
||||
pump_animation = "leveraction-cycling"
|
||||
|
||||
////////Vintage Lever Action Rifle////////
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/lever/vintage
|
||||
name = "vintage repeater"
|
||||
desc = "An iconic manually operated lever action rifle, offering adequate stopping power due to it's still powerful cartridge while at the same time having a rather respectable firing rate due to it's mechanism. It is very probable this is a replica instead of a museum piece, but rifles of this pattern still see usage as colonist guns in some far off regions. Uses 7.62mm rounds."
|
||||
item_state = "levercarabine" // That isn't how carbine is spelled ya knob! :U
|
||||
icon_state = "levercarabine"
|
||||
pump_animation = "levercarabine-cycling"
|
||||
item_state = "levercarbine"
|
||||
icon_state = "levercarbine"
|
||||
pump_animation = "levercarbine-cycling"
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
|
||||
//Bastard child of a revolver and a semi-auto rifle.
|
||||
|
||||
//Standard Revolving Rifle
|
||||
/obj/item/weapon/gun/projectile/revolvingrifle
|
||||
name = "revolving rifle"
|
||||
desc = "The Gungnir is a novel, antique idea brought into the modern era by Hedberg-Hammarstrom. The semi-automatic revolving mechanism offers no real advantage, but some colonists swear by it. Uses .44 magnum revolver rounds."
|
||||
@@ -31,7 +33,7 @@
|
||||
The company operates just one production plant in Kalmar, but their weapons have found popularity on garden worlds as far afield as the Tajaran homeworld due to their excellent build quality, \
|
||||
precision, and stopping power."
|
||||
icon_state = "revolvingrifle"
|
||||
item_state = "boltaction"
|
||||
item_state = "rifle"
|
||||
w_class = ITEMSIZE_LARGE
|
||||
caliber = ".44"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
|
||||
@@ -41,8 +43,9 @@
|
||||
max_shells = 6
|
||||
ammo_type = /obj/item/ammo_casing/a44/rifle
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolvingrifle/update_icon()
|
||||
if(ammo_magazine)
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
//Vintage Revolving Rifle
|
||||
/obj/item/weapon/gun/projectile/revolvingrifle/vintage
|
||||
name = "vintage revolving rifle"
|
||||
desc = "The Willhem is the Gungir's older cousin by Hedberg-Hammarstrom, the perfect collector piece. The semi-automatic revolving mechanism offers no real advantage, but some colonists swear by it. Uses .44 magnum revolver rounds."
|
||||
icon_state = "vintagerevolvingrifle"
|
||||
|
||||
|
||||
@@ -24,6 +24,9 @@ var/global/list/map_count = list()
|
||||
var/floor_type = /turf/simulated/floor
|
||||
var/target_turf_type
|
||||
|
||||
var/skip_dense = FALSE
|
||||
var/keep_outside = FALSE
|
||||
|
||||
// Storage for the final iteration of the map.
|
||||
var/list/map = list() // Actual map.
|
||||
|
||||
@@ -61,11 +64,16 @@ var/global/list/map_count = list()
|
||||
rand_seed(seed)
|
||||
priority_process = 1
|
||||
|
||||
var/failed = FALSE
|
||||
for(var/i = 0;i<max_attempts;i++)
|
||||
if(generate())
|
||||
if(!do_not_announce) admin_notice("<span class='danger'>[capitalize(name)] generation completed in [round(0.1*(world.timeofday-start_time),0.1)] seconds.</span>", R_DEBUG)
|
||||
return
|
||||
if(!do_not_announce) admin_notice("<span class='danger'>[capitalize(name)] failed to generate ([round(0.1*(world.timeofday-start_time),0.1)] seconds): could not produce sane map.</span>", R_DEBUG)
|
||||
if(!generate())
|
||||
failed = TRUE
|
||||
|
||||
if(!do_not_announce)
|
||||
if(!failed)
|
||||
admin_notice("<span class='danger'>[capitalize(name)] generation completed in [round(0.1*(world.timeofday-start_time),0.1)] seconds.</span>", R_DEBUG)
|
||||
else
|
||||
admin_notice("<span class='danger'>[capitalize(name)] failed to generate ([round(0.1*(world.timeofday-start_time),0.1)] seconds): could not produce sane map.</span>", R_DEBUG)
|
||||
|
||||
/datum/random_map/proc/get_map_cell(var/x,var/y)
|
||||
if(!map)
|
||||
@@ -162,11 +170,11 @@ var/global/list/map_count = list()
|
||||
if(!current_cell)
|
||||
return 0
|
||||
var/turf/T = locate((origin_x-1)+x,(origin_y-1)+y,origin_z)
|
||||
if(!T || (target_turf_type && !istype(T,target_turf_type)))
|
||||
if(!T || (skip_dense && T.density) || (target_turf_type && !istype(T,target_turf_type)))
|
||||
return 0
|
||||
var/newpath = get_appropriate_path(map[current_cell])
|
||||
if(newpath)
|
||||
T.ChangeTurf(newpath)
|
||||
T.ChangeTurf(newpath, preserve_outdoors = keep_outside)
|
||||
get_additional_spawns(map[current_cell],T,get_spawn_dir(x, y))
|
||||
return T
|
||||
|
||||
|
||||
@@ -399,7 +399,7 @@
|
||||
name = "Singulo"
|
||||
id = "singulo"
|
||||
result = "singulo"
|
||||
required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5)
|
||||
required_reagents = list("vodka" = 5, "radium" = 1, "redwine" = 5)
|
||||
result_amount = 10
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/alliescocktail
|
||||
@@ -505,14 +505,14 @@
|
||||
name = "Acid Spit"
|
||||
id = "acidspit"
|
||||
result = "acidspit"
|
||||
required_reagents = list("sacid" = 1, "wine" = 5)
|
||||
required_reagents = list("sacid" = 1, "redwine" = 5)
|
||||
result_amount = 6
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/amasec
|
||||
name = "Amasec"
|
||||
id = "amasec"
|
||||
result = "amasec"
|
||||
required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5)
|
||||
required_reagents = list("iron" = 1, "redwine" = 5, "vodka" = 5)
|
||||
result_amount = 10
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/changelingsting
|
||||
@@ -661,7 +661,7 @@
|
||||
name = "Melon Spritzer"
|
||||
id = "melonspritzer"
|
||||
result = "melonspritzer"
|
||||
required_reagents = list("watermelonjuice" = 2, "wine" = 2, "applejuice" = 1, "limejuice" = 1)
|
||||
required_reagents = list("watermelonjuice" = 2, "redwine" = 2, "applejuice" = 1, "limejuice" = 1)
|
||||
result_amount = 6
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/fauxfizz
|
||||
@@ -915,7 +915,7 @@
|
||||
name = "Wine brandy"
|
||||
id = "winebrandy"
|
||||
result = "winebrandy"
|
||||
required_reagents = list("wine" = 10)
|
||||
required_reagents = list("redwine" = 10)
|
||||
catalysts = list("enzyme" = 10) //10u enzyme so it requires more than is usually added. Stops overlap with wine recipe
|
||||
result_amount = 5
|
||||
|
||||
@@ -937,7 +937,7 @@
|
||||
name = "Vesper"
|
||||
id = "vesper"
|
||||
result = "vesper"
|
||||
required_reagents = list("gin" = 3, "vodka" = 1, "wine" = 1)
|
||||
required_reagents = list("gin" = 3, "vodka" = 1, "redwine" = 1)
|
||||
result_amount = 4
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/rotgut
|
||||
|
||||
@@ -1105,14 +1105,12 @@
|
||||
name = "Neutralize Carpotoxin"
|
||||
id = "carpotoxin_neutral"
|
||||
result = "protein"
|
||||
required_reagents = list("radium" = 1, "carpotoxin" = 1, "sifsap" = 1)
|
||||
catalysts = list("sifsap" = 10)
|
||||
result_amount = 2
|
||||
required_reagents = list("enzyme" = 1, "carpotoxin" = 1, "sifsap" = 1)
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/neutralize_spidertoxin
|
||||
name = "Neutralize Spidertoxin"
|
||||
id = "spidertoxin_neutral"
|
||||
result = "protein"
|
||||
required_reagents = list("radium" = 1, "spidertoxin" = 1, "sifsap" = 1)
|
||||
catalysts = list("sifsap" = 10)
|
||||
result_amount = 2
|
||||
required_reagents = list("enzyme" = 1, "spidertoxin" = 1, "sifsap" = 1)
|
||||
result_amount = 1
|
||||
@@ -155,6 +155,7 @@
|
||||
"milk",
|
||||
"mint",
|
||||
"orangejuice",
|
||||
"redwine",
|
||||
"rum",
|
||||
"sake",
|
||||
"sodawater",
|
||||
@@ -172,8 +173,7 @@
|
||||
"vodka",
|
||||
"water",
|
||||
"watermelonjuice",
|
||||
"whiskey",
|
||||
"wine")
|
||||
"whiskey")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/service/attack(var/mob/M, var/mob/user)
|
||||
return
|
||||
|
||||
@@ -297,13 +297,6 @@
|
||||
color = "#FFFFAA"
|
||||
allergen_type = ALLERGEN_EGGS //Eggs contain egg
|
||||
|
||||
/datum/reagent/nutriment/protein/murk
|
||||
name = "murkfin protein"
|
||||
id = "murk_protein"
|
||||
taste_description = "mud"
|
||||
color = "#664330"
|
||||
allergen_type = ALLERGEN_FISH //Murkfin is fish
|
||||
|
||||
/datum/reagent/nutriment/honey
|
||||
name = "Honey"
|
||||
id = "honey"
|
||||
|
||||
@@ -627,10 +627,11 @@
|
||||
M.adjustToxLoss(2 * removed)
|
||||
M.adjustCloneLoss(2 * removed)
|
||||
|
||||
/datum/reagent/fishbait
|
||||
/datum/reagent/nutriment/fishbait
|
||||
name = "Fish Bait"
|
||||
id = "fishbait"
|
||||
description = "A natural slurry that particularily appeals to fish."
|
||||
taste_description = "earthy"
|
||||
taste_description = "slimy dirt"
|
||||
reagent_state = LIQUID
|
||||
color = "#62764E"
|
||||
color = "#62764E"
|
||||
nutriment_factor = 15
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
/datum/reagent/toxin/neurotoxic_protein
|
||||
name = "toxic protein"
|
||||
id = "neurotoxic_protein"
|
||||
description = "A weak neurotoxic chemical commonly found in Sivian fish meat."
|
||||
description = "A weak neurotoxic chemical."
|
||||
taste_description = "fish"
|
||||
reagent_state = LIQUID
|
||||
color = "#005555"
|
||||
|
||||
@@ -70,6 +70,13 @@
|
||||
build_path = /obj/item/weapon/gun/energy/floragun
|
||||
sort_string = "MAAAG"
|
||||
|
||||
/datum/design/item/weapon/energy/vinstunrevolver
|
||||
id = "vinstunrevolver"
|
||||
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
materials = list(MAT_STEEL = 4000)
|
||||
build_path = /obj/item/weapon/gun/energy/stunrevolver/vintage
|
||||
sort_string = "MAAAH"
|
||||
|
||||
// Ballistic weapons
|
||||
|
||||
/datum/design/item/weapon/ballistic/AssembleDesignName()
|
||||
|
||||
@@ -202,8 +202,8 @@ research holder datum.
|
||||
id = TECH_DATA
|
||||
|
||||
/datum/tech/syndicate
|
||||
name = "Illegal Technologies Research"
|
||||
desc = "The study of technologies that violate standard government regulations."
|
||||
name = "Transgressive Technologies Research"
|
||||
desc = "The study of technologies that sit on the very boundaries of legality and ethics."
|
||||
id = TECH_ILLEGAL
|
||||
level = 0
|
||||
|
||||
|
||||
@@ -275,7 +275,7 @@
|
||||
newsign.data["vmask"] = 0
|
||||
newsign.data["level"] = list()
|
||||
|
||||
var/pass = S.relay_information(newsign, "/obj/machinery/telecomms/hub")
|
||||
var/pass = S.relay_information(newsign, /obj/machinery/telecomms/hub)
|
||||
if(!pass)
|
||||
S.relay_information(newsign, "/obj/machinery/telecomms/broadcaster") // send this simple message to broadcasters
|
||||
S.relay_information(newsign, /obj/machinery/telecomms/broadcaster) // send this simple message to broadcasters
|
||||
|
||||
|
||||
@@ -473,11 +473,9 @@
|
||||
if(clean_name)
|
||||
var/okay = alert(target,"New name will be '[clean_name]', ok?", "Confirmation","Cancel","Ok")
|
||||
if(okay == "Ok")
|
||||
new_name = clean_name
|
||||
|
||||
new_name = sanitizeName(new_name, allow_numbers = TRUE)
|
||||
target.name = new_name
|
||||
target.real_name = target.name
|
||||
target.name = new_name
|
||||
target.real_name = target.name
|
||||
return
|
||||
|
||||
/datum/surgery_step/robotics/install_mmi/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips.</span>", \
|
||||
|
||||
@@ -60,14 +60,30 @@
|
||||
return 1
|
||||
|
||||
|
||||
/obj/structure/table/MouseDrop_T(obj/O as obj, mob/user as mob)
|
||||
/obj/structure/table/MouseDrop_T(obj/O, mob/user, src_location, over_location, src_control, over_control, params)
|
||||
if(ismob(O.loc)) //If placing an item
|
||||
if(!isitem(O) || user.get_active_hand() != O)
|
||||
return ..()
|
||||
if(isrobot(user))
|
||||
return
|
||||
user.drop_item()
|
||||
if(O.loc != src.loc)
|
||||
step(O, get_dir(O, src))
|
||||
|
||||
if ((!( istype(O, /obj/item/weapon) ) || user.get_active_hand() != O))
|
||||
return ..()
|
||||
if(isrobot(user))
|
||||
return
|
||||
user.unEquip(O, 0, src.loc)
|
||||
return
|
||||
else if(isturf(O.loc) && isitem(O)) //If pushing an item on the tabletop
|
||||
var/obj/item/I = O
|
||||
if(I.anchored)
|
||||
return
|
||||
|
||||
if((isliving(user)) && (Adjacent(user)) && !(user.incapacitated()))
|
||||
if(O.w_class <= user.can_pull_size)
|
||||
O.forceMove(loc)
|
||||
auto_align(I, params, TRUE)
|
||||
else
|
||||
to_chat(user, SPAN_WARNING("\The [I] is too big for you to move!"))
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/structure/table/attackby(obj/item/W as obj, mob/user as mob, var/hit_modifier, var/click_parameters)
|
||||
@@ -159,7 +175,7 @@ Note: This proc can be overwritten to allow for different types of auto-alignmen
|
||||
|
||||
/obj/item/var/list/center_of_mass = list("x" = 16,"y" = 16)
|
||||
|
||||
/obj/structure/table/proc/auto_align(obj/item/W, click_parameters)
|
||||
/obj/structure/table/proc/auto_align(obj/item/W, click_parameters, var/animate = FALSE)
|
||||
if(!W.center_of_mass)
|
||||
W.randpixel_xy()
|
||||
return
|
||||
@@ -176,8 +192,16 @@ Note: This proc can be overwritten to allow for different types of auto-alignmen
|
||||
var/cell_x = max(0, min(CELLS-1, round(mouse_x/CELLSIZE)))
|
||||
var/cell_y = max(0, min(CELLS-1, round(mouse_y/CELLSIZE)))
|
||||
|
||||
W.pixel_x = (CELLSIZE * (0.5 + cell_x)) - W.center_of_mass["x"]
|
||||
W.pixel_y = (CELLSIZE * (0.5 + cell_y)) - W.center_of_mass["y"]
|
||||
var/target_x = (CELLSIZE * (cell_x + 0.5)) - W.center_of_mass["x"]
|
||||
var/target_y = (CELLSIZE * (cell_y + 0.5)) - W.center_of_mass["y"]
|
||||
if(animate)
|
||||
var/dist_x = abs(W.pixel_x - target_x)
|
||||
var/dist_y = abs(W.pixel_y - target_y)
|
||||
var/dist = sqrt((dist_x*dist_x)+(dist_y*dist_y))
|
||||
animate(W, pixel_x=target_x, pixel_y=target_y,time=dist*0.5)
|
||||
else
|
||||
W.pixel_x = target_x
|
||||
W.pixel_y = target_y
|
||||
|
||||
#undef CELLS
|
||||
#undef CELLSIZE
|
||||
|
||||
Reference in New Issue
Block a user