mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2026-08-21 13:26:32 +01:00
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request **Mobs:** 1. **Adds the Shank.** 2. **Adds the Stormdrifter.** 3. **Goliaths can now be milked for gunpowder.** **Structures:** 1. **Adds Ashlander Structures: Magma Forge and Brick Press.** 2. **Adds Ashlander Catwalks.** 3. **Adds Goliath Hide curtains.** 4. **Adds a Tying Post.** **Map Edits:** 1. **Removes the Harmony colony.** 2. **Removes Ashlander Camp.** 3. **Adds Ashlander Village.** **Adjustments/Changes:** 1. **Tweaks Bone Axes and Spears.** 2. **Restricts Tribal Recipes.** 3. **Rearranges Ashlander structures and icons into bespoke files.** 4. **Beakers can now scoop ash piles off the ground.** 5. **Shows Reagents in Stone Mortars on Examine.** 6. **Creates Preset Types for Bone Tables/Benches & Sandstone Tables/Benches.** 7. **Wood Fences are now craftable with planks.** 8. **Boosts Ashlander Darksight.** 9. **Changes the lid colors of Ashlander containers.** 10. **Gives Ashlanders a Dedicated Language.** **Alchemy:** 1. **Adds a craftable Ashlander Alchemy Station.** 2. **Adds a craftable stone mortar.** 3. **Creates New Reagent: "Alchemical Base"** 4. **Adds a Fertilizer recipe.** 5. **Adds an Alternate Tallow recipe.** 6. **Adds a Soap recipe.** 7. **Adds a Charcoal Stick recipe.** 8. **Adds a craftable Calcinator.** 9. **Adds the Industrial Plant Cersut.** 10. **Creates a craftable Stone Dropper.** 11. **Adds Juhtak Poultice recipe.** 12. **Adds Pyrrhlea Poultice recipe.** **Craftables/Content:** 1. **Creates Craftable Saddles.** 2. **Adds Sandstone Flooring.** 3. **Adds Wooden Roofing.** 4. **Adds the craftable lava-proof boat and oar.** 5. **Adds elder stones and a harvestable outcrop.** 6. **Adds Charcoal Sticks - a pen subtype.** 7. **Adds craftable Sandstone jars.** 8. **Adds craftable Cooking Spit.** 9. **Adds primitive Soap.** 10. **Adds Goliath hide gloves.** 11. **Adds Goliath hide ore bags.** 12. **Adds bone specific arrow recipes for Ashlanders.** 13. **Provides specialized armor for Ashlanders.** 14. **Adds Bone Talisman (Disenchanted) to Loadout.** 15. **Adds Goliath half-cloak.** 18. **Adds Goliath plant bag.** **Weaponry:** 1. **Adds the Stun Lance.** 2. **Removes Firing Pins from Muskets.** 3. **Adds the Bone Sword and Elder Bone Sword.** 4. **Adds Shiv Knife.** 5. **Removes Musket safety.** 6. **Removes the safety from bows.** ## Why It's Good For The Game **Mobs:** 1. _Gutshanks can now be matured into Shanks, which serve as mounts for Ashlanders. If a Shank has a saddle on it, you can set its name/rename it with a charcoal stick._ 2. _Stormdrifters are floating mobs who wander the Eastern Plains aimlessly, having been blown off-course by storms. They likely have some kind of utility._ 3. _Goliaths eat lots of sulfur and saltpeter-rich rocks and sand, and now canonically create gunpowder as a waste byproduct. This can now be collected by Ashlanders to replenish musket reserves._ **Structures:** 1. _Ashlanders need a way to generate rods to create flooring for their structures, and also a way to access lead sheets to make musket balls. The Magma Forge creates rods when fed iron ore, lead ingots when fed lead ore, copper ingots when fed copper ore, and slag when fed sand. To encourage more thematic construction, Ashlanders can use a Brick Press to create sandstone bricks when they feed it sand._ 2. _I wanted a bridge/catwalk system for Ashlanders, and this is what I came up with._ 3. _Instead of heavy stone doors and stuff, I thought goliath hide curtains would be pretty nifty. So we've got those now!_ 4. _This craftable bone tying post allows you to anchor your mount in one spot, just like in the Wild West!_ **Map Edits:** 1. _As much as I love Harmony, it has served its narrative purpose. Instead of extending Lavaland with another Z-Level, as I planned a while back, I'm going to instead remap East to be the new Ashlander spawn zone._ 2. _The exile POI for Ashlanders no longer serves purpose._ 3. _It is instead replaced by this village!_ **Adjustments/Changes:** 1. _Bone axes and spears now use their bespoke sprites, instead of material inheritance sprites._ 2. _To craft Tribal recipes, you must now be an Ashlander. This should encourage more commercial trade between Ashlanders and station crew._ 3. _I had to create a new file and icon sheet for Ashlander specific structures. I have moved the primitive seed press and the yurt to this file, and adjusted the relevant areas in code._ 4. _I was surprised to discover this function didn't exist. It seems obvious that you should be able to sweep ash up. Most people don't even realize ash is a valid reagent type. Now it can be utilized somewhere, hopefully! Besides just me, I mean._ 5. _There have been complaints about the confusion around stone mortar contents on Surt. The ability to see reagents in a beaker used to exist, but appears to have been removed somewhere. It was a pain, but I figured out how to restore it for stone mortars. Now Ashlanders can safely know whether they're about to drink water or gunpowder._ 6. _I just wanted these so I could map them in to replace most of the wood in the Ashlander village._ 7. _I've seen some pretty weird fencing solutions for when the Ashlander corral breaks. I'm debating a bone-based fence for it, but in lieu of that, these should be craftable anyways._ 8. _Originally I had this set to 5. It turns out 5 was too low. Even 7 feels a little inadequate. I'm considering other solutions._ 9. _To match with more bone and less wood, these should be changed!_ 10. _Apparently I was using an Admin event language all along. Now they have a language of their own!_ **Alchemy:** 1. _I know there isn't like, a super obvious utility for this yet, but it feels like something that might be useful later. Maybe for advanced Ashlander medicines like poultices or something. Maybe a Phase 4 thing._ 2. _The stone mortar functions as a beaker, and can be used to contain reagents for Ashlanders, such as gunpowder._ 3. _This chemical serves as the core reagent in Ashlander alchemical recipes. It helps to prevent overlap in recipes considering the limited number of reagents Ashlanders have access to. It can be crafted by combining ash and sulphuric acid._ 4. _Ashlander players have also requested access to fertilizer. Although you can grind up plants currently to provide plots with nutrients, giving the players access to a baseline fertilizer recipe (which I was surprised to see didn't exist/doesn't exist in a way Ashlanders can fairly access) works too. It can be crafted by combining equal parts tallow, ash, and alchemical base._ 5. _Tallow is vital for a couple of my early concept alchemical formulas. It also serves to add additional utility to raw meat which might otherwise go unused. I designed this alternate recipe to require little more than grinding meat down into its components. It can be crafted by combining equal parts triglyceride, protein, and alchemical base._ 6. _Butchering animals is dirty work. There have been multiple requests for a way to wash dirty items. Unfortunately, providing Ashlanders with a puddle of water or other water-based vectors would undermine the purpose of farming Gutshanks. However, primitive cultures knew about soap and how to create it. It can be crafted by combining equal parts tallow, water, and ash._ 7. _That Charcoal has to be made somewhere! It can be crafted by combining equal parts tallow, ash, and alchemical base._ 8. _In alchemy, Calcinators are used to reduce ingredients to ash and release their interior potential. This is a fancy way of saying you burn stuff into ash. This machine was a total headache to me, and took up the majority of my code work on this particular day. It's essentially a bastard child of the reagent grinder designed to burn wood or bone (only bone really matters for Ashlanders), and pump out ash for use in recipes._ 9. _The eagle eyed may have noticed earlier that Alchemical Base requires sulphuric acid to craft. This is possible due to the addition of Cersut. This leafy plant leeches Sulphur out of the soil, which is processed through its body. Consequently, the leaves retain a significant amount of sulphuric acid. Cersut is not designed for any form of consumption. It is purely an industrial plant._ 10. _I've discovered that due to some uneven production results, you can get some total nightmare situations with Ashlander beakers. I've considered adding some kind of chem master to allow for faster refinement, but I mean. Where's the fun in that?_ 11. _This poultice can be used to heal brute damage in a more focused way. Made by mixing ten parts alchemy base with ten parts bicaridine._ 12. _As the above, but used to heal burn damage. Made by mixing ten parts alchemy base and ten parts kelotane._ **Craftables/Content:** 1. _Saddles allow you to ride Shanks when crafted and applied._ 2. _Now Ashlanders can construct interior floors out of sandstone._ 3. _Now we can have wood roofs, instead of just steel ones. This is basically a fluff addition._ 4. _The current redesign for Lavaland East has a lot of lava rivers and stuff going on. It'd be nice if Ashlanders had special boats to sail over it with._ 5. _Older Lavaland recipes for certain tools required Cultist soul stones. Obviously on Main this makes sense, but less so here. So I've created Elder Stones, slightly anomalous gems that can be found in special outcrops. I've come up with some lore for these, but it doesn't belong here. They're used in recipes for things like lava-proof boats, Ashlander welders, and Elder Swords, all of which are meant to be rare._ 6. _Originally I had this concept of Ashlanders using charcoal sticks to draw pictures and stuff, but I realized it would just lead to graffiti and English letters all over my sand. So instead I've made them primitive pens with no vector for paper, etc. They can be used to label stone mortars, and feature in at least one crafting recipe._ 7. _Since there's no wood on Surt, wood buckets don't make sense. Now Ashlanders can craft sandstone jars - which function as buckets - in their stead._ 8. _The people have cried out for a way to cook food. I've made this grill subtype that's just a spit over fire. Originally I was going to make it require charcoal sticks as fuel to consume, but I think that'd just add tedium (and I kinda don't wanna code it.)_ 9. _It's ugly and it doesn't smell fancy, but it sure cleans stuff up._ 10. _Fashion and utility! These gloves will protect you from stinging nettles when farming._ 11. _Picking up ore one at a time is kinda lame at this point._ 12. _Since there's no way for Ashlanders to reliably get wood, I've made it so they can craft arrows just using bone._ 13. _Ashlanders have been using borrowed Gladiator uniforms for a while. Now they have Babylonian style lamellar armor._ 14. _Disenchanted bone talismans may now be selected in the accessory loadout, at the request of players who have received them as gifts from Ashlanders._ 15. _This is purely an aesthetic/style addition._ 16. _Adds Plant Bags for Ashlanders._ **Weaponry:** 1. _Designed to work in tandem with jousting, Stun Lances are more of a tool for flavor._ 2. _Muskets are ancient, primitive tech. They wouldn't use firing pins._ 3. _As with the above, mechanical safeties didn't exist for decades/centuries after muskets._ 4. _Bone swords are neat! Elder Bone Swords were a recommendation by someone, but I really loved the concept. Both are craftable, although the Elder requires advanced (for Ashlanders) materials._ 5. _I'm already touching the misc weapons file and someone suggested a cheap shiv made of duct tape and knife blades. Sounded fun._ 6. _Bows shouldn't have safeties._ ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 add: Adds the Shank. add: Adds craftable saddles. add: Adds craftable stone mortar. add: Adds gunpowder milking feature to Goliaths. add: Adds Stun Lance. add: Adds Ashlander crafting structures (Magma Forge and Brick Press) add: Adds Ashlander alchemy station. add: Adds sandstone flooring. add: Adds wooden roofing. add: Adds the bone sword and elder bone sword. add: Adds lava-proof boats. add: Adds elder stones. add: Adds Ashlander catwalks. add: Adds Ashlander Village to Lavaland East. add: Adds a shiv. add: Adds Goliath hide curtains. add: Adds alchemical system. add: Adds alchemical recipes: alchemical base, fertilizer, tallow, soap, charcoal sticks. add: Adds Calcinator. add: Adds industrial plant 'Cersut'. add: Adds primitive soap and charcoal stick pens. add: Adds sandstone jars. add: Adds cooking spit. add: Adds stone dropper. add: Adds preset bone & sandstone tables and benches. del: Removes Harmony colony. del: Removes Ashlander Exile POI. tweak: Removes firing pin requirement for muskets. tweak: Changes Bone Axe and Spear sprites. tweak: Restricts Tribal recipes to Ashlanders. tweak: Rearranges Ashlander structures into specialized files. tweak: Allows inspection of reagents in stone mortars. /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> --------- Co-authored-by: silicons <no@you.cat> Co-authored-by: Zandario <zandarioh@gmail.com>
365 lines
12 KiB
Plaintext
365 lines
12 KiB
Plaintext
//As part of the Phase 3 expansions, Ashlanders are receiving some dedicated structures.
|
|
//One of these is a functional forge where they can produce metal rods and lead sheets.
|
|
//Another is a bricklayer that will compress sandstone blocks for construction.
|
|
/obj/structure/ashlander
|
|
name = "ashlander structure"
|
|
desc = "Woah! You shouldn't be seeing me, outlander! Report me to the Buried Ones at once!"
|
|
icon = 'icons/obj/lavaland.dmi'
|
|
density = TRUE
|
|
anchored = TRUE
|
|
|
|
/obj/structure/ashlander/forge
|
|
name = "magma forge"
|
|
desc = "A primitive forge of Scorian design. It is used primarily to convert iron and lead into more workable shapes."
|
|
icon = 'icons/obj/lavaland.dmi'
|
|
icon_state = "forge"
|
|
|
|
/obj/structure/ashlander/forge/attackby(obj/item/O, mob/user)
|
|
. = ..()
|
|
if(istype(O, /obj/item/ore/lead))
|
|
to_chat(user, "<span class='danger'>You drop the [O] into the [src]! It begins to melt in the crucible.</span>")
|
|
qdel(O)
|
|
var/turf/T = get_turf(src)
|
|
new /obj/item/stack/material/lead(T)
|
|
if(istype(O, /obj/item/ore/copper))
|
|
to_chat(user, "<span class='danger'>You drop the [O] into the [src]! It begins to melt in the crucible.</span>")
|
|
qdel(O)
|
|
var/turf/T = get_turf(src)
|
|
new /obj/item/stack/material/copper(T)
|
|
if(istype(O, /obj/item/ore/iron))
|
|
to_chat(user, "<span class='danger'>You drop the [O] into the [src]! It starts feed through the extruder.</span>")
|
|
qdel(O)
|
|
var/turf/T = get_turf(src)
|
|
new /obj/item/stack/rods(T)
|
|
if(istype(O, /obj/item/ore/glass))
|
|
to_chat(user, "<span class='danger'>You pour [O] into the [src]! It starts to melt in the crucible.</span>")
|
|
qdel(O)
|
|
var/turf/T = get_turf(src)
|
|
new /obj/item/ore/slag(T)
|
|
|
|
//This is a child of the Hydroponics seed extractor, and was originally in that file. But I've moved it here since it's an Ashlander "machine".
|
|
/obj/machinery/seed_extractor/press
|
|
name = "primitive press"
|
|
desc = "A hand crafted press and sieve designed to extract seeds from fruit."
|
|
icon = 'icons/obj/lavaland.dmi'
|
|
icon_state = "press"
|
|
use_power = USE_POWER_OFF
|
|
|
|
/obj/structure/ashlander/brickmaker
|
|
name = "brick press"
|
|
desc = "Scorians have been observed using this device to compress sand and clay into hardened bricks."
|
|
icon = 'icons/obj/lavaland.dmi'
|
|
icon_state = "brickmaker"
|
|
|
|
/obj/structure/ashlander/brickmaker/attackby(obj/item/O, mob/user)
|
|
. = ..()
|
|
if(istype(O, /obj/item/ore/glass))
|
|
to_chat(user, "<span class='danger'>You pour the [O] into the [src]! After some work you compress it into a sturdy brick.</span>")
|
|
qdel(O)
|
|
var/turf/T = get_turf(src)
|
|
new /obj/item/stack/material/sandstone(T)
|
|
|
|
//This is a child of the juicer/all-in-one grinder/reagent grinder. Just for some fun alchemy.
|
|
|
|
/obj/machinery/reagentgrinder/ashlander
|
|
name = "basic alchemical station"
|
|
desc = "A primitive assembly designed to hold a mortar and pestle."
|
|
icon = 'icons/obj/lavaland.dmi'
|
|
icon_state = "alchemy1"
|
|
density = FALSE
|
|
anchored = FALSE
|
|
use_power = USE_POWER_OFF
|
|
circuit = null
|
|
no_panel = TRUE
|
|
|
|
/obj/machinery/reagentgrinder/ashlander/Initialize(mapload, newdir)
|
|
. = ..()
|
|
beaker = new /obj/item/reagent_containers/glass/stone(src)
|
|
|
|
/obj/machinery/reagentgrinder/ashlander/update_icon()
|
|
icon_state = "alchemy"+num2text(!isnull(beaker))
|
|
return
|
|
|
|
/obj/machinery/reagentgrinder/ashlander/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
|
if(beaker)
|
|
if(default_deconstruction_screwdriver(user, O))
|
|
return
|
|
if(default_deconstruction_crowbar(user, O))
|
|
return
|
|
|
|
if (istype(O,/obj/item/reagent_containers/glass) || \
|
|
istype(O,/obj/item/reagent_containers/food/drinks/glass2) || \
|
|
istype(O,/obj/item/reagent_containers/food/drinks/shaker))
|
|
|
|
if (beaker)
|
|
return 1
|
|
else
|
|
if(!user.attempt_insert_item_for_installation(O, src))
|
|
return
|
|
beaker = O
|
|
update_icon()
|
|
updateUsrDialog()
|
|
return 0
|
|
|
|
if(holdingitems && holdingitems.len >= limit)
|
|
to_chat(user, "The assembly cannot hold anymore items.")
|
|
return 1
|
|
|
|
if(!istype(O))
|
|
return
|
|
|
|
if(istype(O,/obj/item/storage/bag/plants))
|
|
var/obj/item/storage/bag/plants/bag = O
|
|
var/failed = 1
|
|
for(var/obj/item/G in O.contents)
|
|
if(!G.reagents || !G.reagents.total_volume)
|
|
continue
|
|
failed = 0
|
|
bag.remove_from_storage(G, src)
|
|
holdingitems += G
|
|
if(holdingitems && holdingitems.len >= limit)
|
|
break
|
|
|
|
if(failed)
|
|
to_chat(user, "Nothing in the plant bag is usable.")
|
|
return 1
|
|
|
|
if(!O.contents.len)
|
|
to_chat(user, "You empty \the [O] into \the [src].")
|
|
else
|
|
to_chat(user, "You fill \the [src] from \the [O].")
|
|
|
|
src.updateUsrDialog()
|
|
return 0
|
|
|
|
if(!sheet_reagents[O.type] && (!O.reagents || !O.reagents.total_volume))
|
|
to_chat(user, "\The [O] is not suitable for reduction.")
|
|
return 1
|
|
if(!user.attempt_insert_item_for_installation(O, src))
|
|
return
|
|
|
|
holdingitems += O
|
|
src.updateUsrDialog()
|
|
return 0
|
|
|
|
/obj/machinery/reagentgrinder/ashlander/grind()
|
|
|
|
// Sanity check.
|
|
if (!beaker || (beaker && beaker.reagents.total_volume >= beaker.reagents.maximum_volume))
|
|
return
|
|
|
|
playsound(src, 'sound/effects/stonedoor_openclose.ogg', 50, 1)
|
|
inuse = 1
|
|
|
|
// Reset the machine.
|
|
spawn(60)
|
|
inuse = 0
|
|
|
|
// Process.
|
|
for (var/obj/item/O in holdingitems)
|
|
|
|
var/remaining_volume = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
|
if(remaining_volume <= 0)
|
|
break
|
|
|
|
if(sheet_reagents[O.type])
|
|
var/obj/item/stack/stack = O
|
|
if(istype(stack))
|
|
var/list/sheet_components = sheet_reagents[stack.type]
|
|
var/amount_to_take = max(0,min(stack.amount,round(remaining_volume/REAGENTS_PER_SHEET)))
|
|
if(amount_to_take)
|
|
stack.use(amount_to_take)
|
|
if(QDELETED(stack))
|
|
holdingitems -= stack
|
|
if(islist(sheet_components))
|
|
amount_to_take = (amount_to_take/(sheet_components.len))
|
|
for(var/i in sheet_components)
|
|
beaker.reagents.add_reagent(i, (amount_to_take*REAGENTS_PER_SHEET))
|
|
else
|
|
beaker.reagents.add_reagent(sheet_components, (amount_to_take*REAGENTS_PER_SHEET))
|
|
continue
|
|
|
|
if(O.reagents)
|
|
O.reagents.trans_to_obj(beaker, min(O.reagents.total_volume, remaining_volume))
|
|
if(O.reagents.total_volume == 0)
|
|
holdingitems -= O
|
|
qdel(O)
|
|
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
|
break
|
|
|
|
//Calcinator
|
|
//"A very basic implement that burns things down into ash. Pretty simple. Almost a waste to create it."
|
|
//The above is the note I wrote for this when I started. Obviously now it's gigantic.
|
|
/obj/structure/ashlander/calcinator
|
|
name = "calcinator"
|
|
desc = "This carved basin is used in alchemy to reduce an item down to ashes, thereby releasing its inner properties."
|
|
icon_state = "calcinator1"
|
|
var/obj/item/reagent_containers/beaker
|
|
|
|
/obj/structure/ashlander/calcinator/Initialize(mapload, newdir)
|
|
. = ..()
|
|
beaker = new /obj/item/reagent_containers/glass/stone(src)
|
|
|
|
/obj/structure/ashlander/calcinator/update_icon()
|
|
icon_state = "calcinator"+num2text(!isnull(beaker))
|
|
return
|
|
|
|
/obj/structure/ashlander/calcinator/attackby(obj/item/I as obj, mob/user as mob)
|
|
if(!istype(I))
|
|
return
|
|
if (beaker && beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
|
return
|
|
if(istype(I,/obj/item/reagent_containers/glass/stone))
|
|
if(beaker)
|
|
return
|
|
if(!user.attempt_insert_item_for_installation(I, src))
|
|
return
|
|
else
|
|
beaker = I
|
|
update_icon()
|
|
updateUsrDialog()
|
|
return 0
|
|
|
|
if(istype(I,/obj/item/stack/material/wood))
|
|
if(!beaker)
|
|
return
|
|
else
|
|
var/obj/item/stack/material/wood/W = I
|
|
if(W.get_amount() < 1)
|
|
return
|
|
else if(do_after(user, 10))
|
|
W.use(1)
|
|
user.visible_message("<span class='notice'>[user] feeds \the [W] into \the [src].</span>","<span class='notice'>You reduce \the [W] using \the [src].</span>")
|
|
playsound(loc, 'sound/weapons/gun_flamethrower3.ogg', 50, 1)
|
|
beaker.reagents.add_reagent("ash", 10)
|
|
|
|
if(istype(I,/obj/item/stack/material/bone))
|
|
if(!beaker)
|
|
return
|
|
else
|
|
var/obj/item/stack/material/bone/W = I
|
|
if(W.get_amount() < 1)
|
|
return
|
|
else if(do_after(user, 10))
|
|
W.use(1)
|
|
user.visible_message("<span class='notice'>[user] feeds \the [W] into \the [src].</span>","<span class='notice'>You reduce \the [W] using \the [src].</span>")
|
|
playsound(loc, 'sound/weapons/gun_flamethrower3.ogg', 50, 1)
|
|
beaker.reagents.add_reagent("ash", 10)
|
|
|
|
src.updateUsrDialog()
|
|
return 0
|
|
|
|
/obj/structure/ashlander/calcinator/attack_hand(mob/user as mob)
|
|
interact(user)
|
|
|
|
/obj/structure/ashlander/calcinator/AltClick(mob/user)
|
|
. = ..()
|
|
if(user.incapacitated() || !Adjacent(user))
|
|
return
|
|
replace_beaker(user)
|
|
|
|
/obj/structure/ashlander/calcinator/interact(mob/user)
|
|
if(user.incapacitated())
|
|
return
|
|
if(beaker)
|
|
replace_beaker(user)
|
|
|
|
/obj/structure/ashlander/calcinator/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker)
|
|
if(!user)
|
|
return FALSE
|
|
if(beaker)
|
|
if(!user.incapacitated() && Adjacent(user) && !isrobot(user))
|
|
user.put_in_hands(beaker)
|
|
else
|
|
beaker.forceMove(drop_location())
|
|
beaker = null
|
|
if(new_beaker)
|
|
beaker = new_beaker
|
|
update_icon()
|
|
return TRUE
|
|
|
|
//Ashies gotta eat.
|
|
/obj/machinery/appliance/cooker/grill/spit
|
|
name = "cooking spit"
|
|
desc = "Primitive structures such as these have been used to cook raw meat for as long as the benefits of such a practice have been known."
|
|
icon = 'icons/obj/lavaland.dmi'
|
|
icon_state = "spitgrill_off"
|
|
food_color = "#630905"
|
|
on_icon = "spitgrill_on"
|
|
off_icon = "spitgrill_off"
|
|
max_contents = 1
|
|
container_type = /obj/item/reagent_containers/cooking_container/grill/spit
|
|
use_power = USE_POWER_OFF
|
|
var/lit = 0
|
|
|
|
/obj/machinery/appliance/cooker/grill/spit/attempt_toggle_power(mob/user)
|
|
if (!isliving(user))
|
|
return
|
|
|
|
if (!user.IsAdvancedToolUser())
|
|
to_chat(user, "You lack the dexterity to do that!")
|
|
return
|
|
|
|
if (user.stat || user.restrained() || user.incapacitated())
|
|
return
|
|
|
|
if (!Adjacent(user) && !issilicon(user))
|
|
to_chat(user, "You can't reach [src] from here.")
|
|
return
|
|
|
|
if (!lit) //It's not lit.
|
|
machine_stat &= ~POWEROFF
|
|
lit = 1
|
|
user.visible_message("[user] ignites the flame beneath the [src].", "You ignite the flame under the [src].")
|
|
|
|
else //Its on, turn it off.
|
|
lit = 0
|
|
user.visible_message("[user] douses the flame of the [src].", "You douse the flame.")
|
|
|
|
playsound(src, 'sound/weapons/gun_flamethrower2.ogg', 40, 1)
|
|
update_icon()
|
|
|
|
/obj/machinery/appliance/cooker/grill/spit/update_icon()
|
|
. = ..()
|
|
if(lit)
|
|
set_light(3, 2, "#FF9933")
|
|
icon_state = "[on_icon]"
|
|
else
|
|
set_light(0)
|
|
icon_state = "[off_icon]"
|
|
|
|
/obj/structure/ashlander/statue
|
|
name = "religious statue"
|
|
desc = "This statue depicts the Mother, one of the Buried Ones. It has been carved from one giant piece of elderstone. It seems to glow faintly, and the distant ring of the chiming stone fills the air around it. The Mother can be seen standing proudly, one arm outstretched. Floating above her open hand somehow is a small, polished sphere of pure elderstone."
|
|
icon_state = "mother_statue"
|
|
|
|
/obj/structure/ashlander/statue/Initialize(mapload)
|
|
. = ..()
|
|
set_light(3, 2, "#9463bb")
|
|
|
|
/obj/structure/ashlander/statue/attack_hand(mob/user)
|
|
var/choice = tgui_alert(user, "Do you wish to pray to the statue?", "Interact With the Statue", list("Yes", "No"))
|
|
if(choice != "Yes")
|
|
return
|
|
else
|
|
user.visible_message("[user] prays before the [src].", "You pray before the [src].")
|
|
Bless()
|
|
|
|
/obj/structure/ashlander/statue/proc/Bless(mob/user)
|
|
var/mob/living/carbon/human/H = usr
|
|
if(!H.faction == "lavaland")
|
|
to_chat(user, "<span class='danger'>You feel as if an eye briefly regards you, and then turns away.</span>")
|
|
else
|
|
H.add_modifier(/datum/modifier/ashlander_blessing, 5 MINUTES)
|
|
|
|
/datum/modifier/ashlander_blessing
|
|
name = "The Mother's Blessing"
|
|
desc = "You feel as if a higher power is protecting you."
|
|
stacks = MODIFIER_STACK_FORBID
|
|
pain_immunity = TRUE
|
|
incoming_tox_damage_percent = 0.25
|
|
incoming_fire_damage_percent = 0.75
|
|
evasion = 5
|
|
on_created_text = "<span class='notice'>You feel safe and content. There is a sense that someone is watching over you.</span>"
|
|
on_expired_text = "<span class='notice'>The feeling that you are being protected fades, but the sense of contentment lingers.</span>"
|