mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-18 10:33:30 +01:00
Merge remote-tracking branch 'refs/remotes/ParadiseSS13/master' into navconsoles2
# Conflicts: # code/modules/shuttle/shuttle.dm
This commit is contained in:
@@ -1067,3 +1067,28 @@ var/gamma_ship_location = 1 // 0 = station , 1 = space
|
||||
continue
|
||||
result[1]++
|
||||
return result
|
||||
|
||||
//Discord duplications
|
||||
/datum/admins/proc/discord_duplicates()
|
||||
if(!usr.client.holder)
|
||||
return
|
||||
var/dat = "<html><head><title>Discord Duplicates</title></head>"
|
||||
dat += "<body><p><i>Discord IDs with more than one ckey linked are shown below</i></i><table border=1 cellspacing=5><B><tr><th>Discord ID</th><th>CKEYs</th><th>Unlink</th></B>"
|
||||
// If anyone reads this, I spent a whole 30 minutes writing just this fucking query. It is the messiest SQL statement I have ever written
|
||||
// If anyone even thinks about touching this I will impale you on a railroad spike
|
||||
// It hurts to wake up in the morning, -aa07
|
||||
var/DBQuery/discord_ids = dbcon.NewQuery("SELECT a.* FROM [format_table_name("discord")] a JOIN (SELECT discord_id, ckey, COUNT(*) FROM [format_table_name("discord")] GROUP BY discord_id HAVING count(*) > 1 ) b ON a.discord_id = b.discord_id ORDER BY a.discord_id")
|
||||
if(!discord_ids.Execute())
|
||||
var/err = discord_ids.ErrorMsg()
|
||||
log_game("SQL ERROR while selecting discord accounts. Error : \[[err]\]\n")
|
||||
return
|
||||
while(discord_ids.NextRow())
|
||||
var/ckey = discord_ids.item[1]
|
||||
var/id = discord_ids.item[2]
|
||||
dat += "<tr><td><b>" + id + "</b></td>"
|
||||
dat += "<td>" + ckey + "</td>"
|
||||
dat += "<td><a href='?src=[UID()];force_discord_unlink=[ckey]'>Unlink</td></tr>"
|
||||
|
||||
dat += "</table></body></html>"
|
||||
|
||||
usr << browse(dat, "window=duplicates;size=500x480")
|
||||
@@ -79,6 +79,7 @@ var/list/admin_verbs_admin = list(
|
||||
/client/proc/list_ssds,
|
||||
/client/proc/cmd_admin_headset_message,
|
||||
/client/proc/spawn_floor_cluwne,
|
||||
/client/proc/show_discord_duplicates,
|
||||
)
|
||||
var/list/admin_verbs_ban = list(
|
||||
/client/proc/unban_panel,
|
||||
@@ -1045,3 +1046,12 @@ var/list/admin_verbs_ticket = list(
|
||||
|
||||
log_admin("[key_name(usr)] has [advanced_admin_interaction ? "activated" : "deactivated"] their advanced admin interaction.")
|
||||
message_admins("[key_name_admin(usr)] has [advanced_admin_interaction ? "activated" : "deactivated"] their advanced admin interaction.")
|
||||
|
||||
/client/proc/show_discord_duplicates()
|
||||
set name = "Show Duplicate Discord Links"
|
||||
set category = "Admin"
|
||||
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
holder.discord_duplicates()
|
||||
@@ -3349,6 +3349,20 @@
|
||||
// Refresh the page
|
||||
src.view_flagged_books()
|
||||
|
||||
// Force unlink a discord key
|
||||
else if(href_list["force_discord_unlink"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/target_ckey = href_list["force_discord_unlink"]
|
||||
var/DBQuery/admin_unlink_discord_id = dbcon.NewQuery("DELETE FROM [format_table_name("discord")] WHERE ckey = '[target_ckey]'")
|
||||
if(!admin_unlink_discord_id.Execute())
|
||||
var/err = admin_unlink_discord_id.ErrorMsg()
|
||||
log_game("SQL ERROR while admin-unlinking discord account. Error : \[[err]\]\n")
|
||||
return
|
||||
to_chat(src, "<span class='notice'>Successfully forcefully unlinked discord account from [target_ckey]</span>")
|
||||
message_admins("[key_name_admin(usr)] forcefully unlinked the discord account belonging to [target_ckey]")
|
||||
log_admin("[key_name_admin(usr)] forcefully unlinked the discord account belonging to [target_ckey]")
|
||||
|
||||
/client/proc/create_eventmob_for(var/mob/living/carbon/human/H, var/killthem = 0)
|
||||
if(!check_rights(R_EVENT))
|
||||
return
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
//Golem shells: Spawns in Free Golem ships in lavaland, or through xenobiology adamantine extract.
|
||||
//Xenobiology golems are slaved to their creator.
|
||||
|
||||
/obj/item/golem_shell
|
||||
name = "incomplete free golem shell"
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "construct"
|
||||
desc = "The incomplete body of a golem. Add ten sheets of any mineral to finish."
|
||||
var/shell_type = /obj/effect/mob_spawn/human/golem
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
|
||||
/obj/item/golem_shell/servant
|
||||
name = "incomplete servant golem shell"
|
||||
shell_type = /obj/effect/mob_spawn/human/golem/servant
|
||||
|
||||
/obj/item/golem_shell/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
var/static/list/golem_shell_species_types = list(
|
||||
/obj/item/stack/sheet/metal = /datum/species/golem,
|
||||
/obj/item/stack/sheet/glass = /datum/species/golem/glass,
|
||||
/obj/item/stack/sheet/plasteel = /datum/species/golem/plasteel,
|
||||
/obj/item/stack/ore/glass = /datum/species/golem/sand,
|
||||
/obj/item/stack/sheet/mineral/sandstone = /datum/species/golem/sand,
|
||||
/obj/item/stack/sheet/mineral/plasma = /datum/species/golem/plasma,
|
||||
/obj/item/stack/sheet/mineral/diamond = /datum/species/golem/diamond,
|
||||
/obj/item/stack/sheet/mineral/gold = /datum/species/golem/gold,
|
||||
/obj/item/stack/sheet/mineral/silver = /datum/species/golem/silver,
|
||||
/obj/item/stack/sheet/mineral/uranium = /datum/species/golem/uranium,
|
||||
/obj/item/stack/sheet/mineral/bananium = /datum/species/golem/bananium,
|
||||
/obj/item/stack/sheet/mineral/tranquillite = /datum/species/golem/tranquillite,
|
||||
/obj/item/stack/sheet/mineral/titanium = /datum/species/golem/titanium,
|
||||
/obj/item/stack/sheet/mineral/plastitanium = /datum/species/golem/plastitanium,
|
||||
/obj/item/stack/sheet/mineral/abductor = /datum/species/golem/alloy,
|
||||
/obj/item/stack/sheet/wood = /datum/species/golem/wood,
|
||||
/obj/item/stack/sheet/bluespace_crystal = /datum/species/golem/bluespace,
|
||||
/obj/item/stack/sheet/mineral/adamantine = /datum/species/golem/adamantine,
|
||||
/obj/item/stack/sheet/plastic = /datum/species/golem/plastic)
|
||||
|
||||
if(istype(I, /obj/item/stack))
|
||||
var/obj/item/stack/O = I
|
||||
var/species = golem_shell_species_types[O.merge_type]
|
||||
if(species)
|
||||
if(O.use(10))
|
||||
to_chat(user, "You finish up the golem shell with ten sheets of [O].")
|
||||
new shell_type(get_turf(src), species, user)
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "You need at least ten sheets to finish a golem.")
|
||||
else
|
||||
to_chat(user, "You can't build a golem out of this kind of material.")
|
||||
|
||||
/obj/effect/mob_spawn/human/golem
|
||||
name = "inert free golem shell"
|
||||
desc = "A humanoid shape, empty, lifeless, and full of potential."
|
||||
mob_name = "a free golem"
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "construct"
|
||||
mob_species = /datum/species/golem
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
anchored = FALSE
|
||||
move_resist = MOVE_FORCE_NORMAL
|
||||
density = FALSE
|
||||
var/has_owner = FALSE
|
||||
var/can_transfer = TRUE //if golems can switch bodies to this new shell
|
||||
var/mob/living/owner = null //golem's owner if it has one
|
||||
flavour_text = "<span class='big bold'>You are a Free Golem.</span><b> Your family worships <span class='danger'>The Liberator</span>. In his infinite and divine wisdom, he set your clan free to \
|
||||
travel the stars with a single declaration: \"Yeah go do whatever.\" Though you are bound to the one who created you, it is customary in your society to repeat those same words to newborn \
|
||||
golems, so that no golem may ever be forced to serve again.</b>"
|
||||
|
||||
/obj/effect/mob_spawn/human/golem/Initialize(mapload, datum/species/golem/species = null, mob/creator = null)
|
||||
if(species) //spawners list uses object name to register so this goes before ..()
|
||||
name += " ([initial(species.prefix)])"
|
||||
mob_species = species
|
||||
. = ..()
|
||||
var/area/A = get_area(src)
|
||||
if(!mapload && A)
|
||||
notify_ghosts("\A [initial(species.prefix)] golem shell has been completed in [A.name].", source = src)
|
||||
if(has_owner && creator)
|
||||
flavour_text = "<span class='big bold'>You are a Golem.</span><b> You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. \
|
||||
Serve [creator], and assist [creator.p_them()] in completing [creator.p_their()] goals at any cost.</b>"
|
||||
owner = creator
|
||||
|
||||
/obj/effect/mob_spawn/human/golem/special(mob/living/new_spawn, name)
|
||||
var/datum/species/golem/X = mob_species
|
||||
to_chat(new_spawn, "[initial(X.info_text)]")
|
||||
if(!owner)
|
||||
to_chat(new_spawn, "Build golem shells in the autolathe, and feed refined mineral sheets to the shells to bring them to life! You are generally a peaceful group unless provoked.")
|
||||
to_chat(new_spawn, "<span class='warning'>You are not an antagonist, but you are not a crewmember either. \
|
||||
You may interact or trade with crew you come across, aswell as defend yourself and your ship \
|
||||
but avoid actively interfering with the station unless you have a valid roleplay reason to do so, such as an invitation by crewmembers.</span>")
|
||||
else
|
||||
new_spawn.mind.store_memory("<b>Serve [owner.real_name], your creator.</b>")
|
||||
log_game("[key_name(new_spawn)] possessed a golem shell enslaved to [key_name(owner)].")
|
||||
log_admin("[key_name(new_spawn)] possessed a golem shell enslaved to [key_name(owner)].")
|
||||
if(ishuman(new_spawn))
|
||||
var/mob/living/carbon/human/H = new_spawn
|
||||
if(has_owner)
|
||||
var/datum/species/golem/G = H.dna.species
|
||||
G.owner = owner
|
||||
if(!name)
|
||||
H.rename_character(null, H.dna.species.get_random_name())
|
||||
else
|
||||
H.rename_character(null, name)
|
||||
if(has_owner)
|
||||
new_spawn.mind.assigned_role = "Servant Golem"
|
||||
else
|
||||
new_spawn.mind.assigned_role = "Free Golem"
|
||||
|
||||
/obj/effect/mob_spawn/human/golem/attack_hand(mob/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
if(isgolem(user) && can_transfer)
|
||||
var/transfer_choice = alert("Transfer your soul to [src]? (Warning, your old body will die!)",,"Yes","No")
|
||||
if(transfer_choice != "Yes")
|
||||
return
|
||||
if(QDELETED(src) || uses <= 0)
|
||||
return
|
||||
log_game("[key_name(user)] golem-swapped into [src]")
|
||||
user.visible_message("<span class='notice'>A faint light leaves [user], moving to [src] and animating it!</span>","<span class='notice'>You leave your old body behind, and transfer into [src]!</span>")
|
||||
create(ckey = user.ckey, name = user.real_name)
|
||||
user.death()
|
||||
return
|
||||
|
||||
/obj/effect/mob_spawn/human/golem/servant
|
||||
has_owner = TRUE
|
||||
name = "inert servant golem shell"
|
||||
mob_name = "a servant golem"
|
||||
|
||||
/obj/effect/mob_spawn/human/golem/adamantine
|
||||
name = "dust-caked free golem shell"
|
||||
desc = "A humanoid shape, empty, lifeless, and full of potential."
|
||||
mob_name = "a free golem"
|
||||
can_transfer = FALSE
|
||||
mob_species = /datum/species/golem/adamantine
|
||||
@@ -0,0 +1,110 @@
|
||||
//Ancient cryogenic sleepers. Players become NT crewmen from a hundred year old space station, now on the verge of collapse.
|
||||
|
||||
/obj/effect/mob_spawn/human/oldsec
|
||||
name = "old cryogenics pod"
|
||||
desc = "A humming cryo pod. You can barely recognise a security uniform underneath the built up ice. The machine is attempting to wake up its occupant."
|
||||
mob_name = "a security officer"
|
||||
icon = 'icons/obj/cryogenic2.dmi'
|
||||
icon_state = "sleeper"
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
random = TRUE
|
||||
mob_species = /datum/species/human
|
||||
flavour_text = "<span class='big bold'>You are a security officer working for Nanotrasen,</span><b> stationed onboard a state of the art research station. You vaguely recall rushing into a \
|
||||
cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \
|
||||
your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \
|
||||
Work as a team with your fellow survivors and do not abandon them.</b>"
|
||||
uniform = /obj/item/clothing/under/retro/security
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
id = /obj/item/card/id/away/old/sec
|
||||
r_pocket = /obj/item/restraints/handcuffs
|
||||
l_pocket = /obj/item/flash
|
||||
assignedrole = "Ancient Crew"
|
||||
|
||||
/obj/effect/mob_spawn/human/oldsec/Destroy()
|
||||
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
|
||||
return ..()
|
||||
|
||||
/obj/effect/mob_spawn/human/oldmed
|
||||
name = "old cryogenics pod"
|
||||
desc = "A humming cryo pod. You can barely recognise a medical uniform underneath the built up ice. The machine is attempting to wake up its occupant."
|
||||
mob_name = "a medical doctor"
|
||||
icon = 'icons/obj/cryogenic2.dmi'
|
||||
icon_state = "sleeper"
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
random = TRUE
|
||||
mob_species = /datum/species/human
|
||||
flavour_text = "<span class='big bold'>You are a medical working for Nanotrasen,</span><b> stationed onboard a state of the art research station. You vaguely recall rushing into a \
|
||||
cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \
|
||||
your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \
|
||||
Work as a team with your fellow survivors and do not abandon them.</b>"
|
||||
uniform = /obj/item/clothing/under/retro/medical
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
id = /obj/item/card/id/away/old/med
|
||||
l_pocket = /obj/item/stack/medical/ointment
|
||||
r_pocket = /obj/item/stack/medical/ointment
|
||||
assignedrole = "Ancient Crew"
|
||||
|
||||
/obj/effect/mob_spawn/human/oldmed/Destroy()
|
||||
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
|
||||
return ..()
|
||||
|
||||
/obj/effect/mob_spawn/human/oldeng
|
||||
name = "old cryogenics pod"
|
||||
desc = "A humming cryo pod. You can barely recognise an engineering uniform underneath the built up ice. The machine is attempting to wake up its occupant."
|
||||
mob_name = "an engineer"
|
||||
icon = 'icons/obj/cryogenic2.dmi'
|
||||
icon_state = "sleeper"
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
random = TRUE
|
||||
mob_species = /datum/species/human
|
||||
flavour_text = "<span class='big bold'>You are an engineer working for Nanotrasen,</span><b> stationed onboard a state of the art research station. You vaguely recall rushing into a \
|
||||
cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \
|
||||
your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \
|
||||
Work as a team with your fellow survivors and do not abandon them.</b>"
|
||||
uniform = /obj/item/clothing/under/retro/engineering
|
||||
shoes = /obj/item/clothing/shoes/workboots
|
||||
id = /obj/item/card/id/away/old/eng
|
||||
gloves = /obj/item/clothing/gloves/color/fyellow/old
|
||||
l_pocket = /obj/item/tank/emergency_oxygen
|
||||
assignedrole = "Ancient Crew"
|
||||
|
||||
/obj/effect/mob_spawn/human/oldeng/Destroy()
|
||||
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
|
||||
return ..()
|
||||
|
||||
/obj/effect/mob_spawn/human/oldsci
|
||||
name = "old cryogenics pod"
|
||||
desc = "A humming cryo pod. You can barely recognise a science uniform underneath the built up ice. The machine is attempting to wake up its occupant."
|
||||
mob_name = "a scientist"
|
||||
icon = 'icons/obj/cryogenic2.dmi'
|
||||
icon_state = "sleeper"
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
random = TRUE
|
||||
mob_species = /datum/species/human
|
||||
flavour_text = "<span class='big bold'>You are a scientist working for Nanotrasen,</span><b> stationed onboard a state of the art research station. You vaguely recall rushing into a \
|
||||
cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \
|
||||
your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \
|
||||
Work as a team with your fellow survivors and do not abandon them.</b>"
|
||||
uniform = /obj/item/clothing/under/retro/science
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
id = /obj/item/card/id/away/old/sci
|
||||
l_pocket = /obj/item/stack/medical/bruise_pack
|
||||
assignedrole = "Ancient Crew"
|
||||
|
||||
/obj/effect/mob_spawn/human/oldsci/Destroy()
|
||||
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
|
||||
return ..()
|
||||
|
||||
/obj/structure/showcase/machinery/oldpod
|
||||
name = "damaged cryogenic pod"
|
||||
desc = "A damaged cryogenic pod long since lost to time, including its former occupant..."
|
||||
icon = 'icons/obj/cryogenic2.dmi'
|
||||
icon_state = "sleeper-open"
|
||||
|
||||
/obj/structure/showcase/machinery/oldpod/used
|
||||
name = "opened cryogenic pod"
|
||||
desc = "A cryogenic pod that has recently discharged its occupant. The pod appears non-functional."
|
||||
@@ -360,116 +360,4 @@
|
||||
|
||||
/area/ruin/space/ancientstation/hivebot
|
||||
name = "Hivebot Mothership"
|
||||
icon_state = "teleporter"
|
||||
|
||||
// Mob Spawners
|
||||
//Ancient cryogenic sleepers. Players become NT crewmen from a hundred year old space station, now on the verge of collapse.
|
||||
|
||||
/obj/effect/mob_spawn/human/oldsec
|
||||
name = "old cryogenics pod"
|
||||
desc = "A humming cryo pod. You can barely recognise a security uniform underneath the built up ice. The machine is attempting to wake up its occupant."
|
||||
mob_name = "a security officer"
|
||||
icon = 'icons/obj/cryogenic2.dmi'
|
||||
icon_state = "sleeper"
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
random = TRUE
|
||||
mob_species = /datum/species/human
|
||||
flavour_text = "<span class='big bold'>You are a security officer working for Nanotrasen,</span><b> stationed onboard a state of the art research station. You vaguely recall rushing into a \
|
||||
cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \
|
||||
your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \
|
||||
Work as a team with your fellow survivors and do not abandon them.</b>"
|
||||
uniform = /obj/item/clothing/under/retro/security
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
id = /obj/item/card/id/away/old/sec
|
||||
r_pocket = /obj/item/restraints/handcuffs
|
||||
l_pocket = /obj/item/flash
|
||||
assignedrole = "Ancient Crew"
|
||||
|
||||
/obj/effect/mob_spawn/human/oldsec/Destroy()
|
||||
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
|
||||
return ..()
|
||||
|
||||
/obj/effect/mob_spawn/human/oldmed
|
||||
name = "old cryogenics pod"
|
||||
desc = "A humming cryo pod. You can barely recognise a medical uniform underneath the built up ice. The machine is attempting to wake up its occupant."
|
||||
mob_name = "a medical doctor"
|
||||
icon = 'icons/obj/cryogenic2.dmi'
|
||||
icon_state = "sleeper"
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
random = TRUE
|
||||
mob_species = /datum/species/human
|
||||
flavour_text = "<span class='big bold'>You are a medical working for Nanotrasen,</span><b> stationed onboard a state of the art research station. You vaguely recall rushing into a \
|
||||
cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \
|
||||
your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \
|
||||
Work as a team with your fellow survivors and do not abandon them.</b>"
|
||||
uniform = /obj/item/clothing/under/retro/medical
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
id = /obj/item/card/id/away/old/med
|
||||
l_pocket = /obj/item/stack/medical/ointment
|
||||
r_pocket = /obj/item/stack/medical/ointment
|
||||
assignedrole = "Ancient Crew"
|
||||
|
||||
/obj/effect/mob_spawn/human/oldmed/Destroy()
|
||||
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
|
||||
return ..()
|
||||
|
||||
/obj/effect/mob_spawn/human/oldeng
|
||||
name = "old cryogenics pod"
|
||||
desc = "A humming cryo pod. You can barely recognise an engineering uniform underneath the built up ice. The machine is attempting to wake up its occupant."
|
||||
mob_name = "an engineer"
|
||||
icon = 'icons/obj/cryogenic2.dmi'
|
||||
icon_state = "sleeper"
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
random = TRUE
|
||||
mob_species = /datum/species/human
|
||||
flavour_text = "<span class='big bold'>You are an engineer working for Nanotrasen,</span><b> stationed onboard a state of the art research station. You vaguely recall rushing into a \
|
||||
cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \
|
||||
your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \
|
||||
Work as a team with your fellow survivors and do not abandon them.</b>"
|
||||
uniform = /obj/item/clothing/under/retro/engineering
|
||||
shoes = /obj/item/clothing/shoes/workboots
|
||||
id = /obj/item/card/id/away/old/eng
|
||||
gloves = /obj/item/clothing/gloves/color/fyellow/old
|
||||
l_pocket = /obj/item/tank/emergency_oxygen
|
||||
assignedrole = "Ancient Crew"
|
||||
|
||||
/obj/effect/mob_spawn/human/oldeng/Destroy()
|
||||
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
|
||||
return ..()
|
||||
|
||||
/obj/effect/mob_spawn/human/oldsci
|
||||
name = "old cryogenics pod"
|
||||
desc = "A humming cryo pod. You can barely recognise a science uniform underneath the built up ice. The machine is attempting to wake up its occupant."
|
||||
mob_name = "a scientist"
|
||||
icon = 'icons/obj/cryogenic2.dmi'
|
||||
icon_state = "sleeper"
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
random = TRUE
|
||||
mob_species = /datum/species/human
|
||||
flavour_text = "<span class='big bold'>You are a scientist working for Nanotrasen,</span><b> stationed onboard a state of the art research station. You vaguely recall rushing into a \
|
||||
cryogenics pod due to an oncoming radiation storm. The last thing you remember is the station's Artificial Program telling you that you would only be asleep for eight hours. As you open \
|
||||
your eyes, everything seems rusted and broken, a dark feeling swells in your gut as you climb out of your pod. \
|
||||
Work as a team with your fellow survivors and do not abandon them.</b>"
|
||||
uniform = /obj/item/clothing/under/retro/science
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
id = /obj/item/card/id/away/old/sci
|
||||
l_pocket = /obj/item/stack/medical/bruise_pack
|
||||
assignedrole = "Ancient Crew"
|
||||
|
||||
/obj/effect/mob_spawn/human/oldsci/Destroy()
|
||||
new /obj/structure/showcase/machinery/oldpod/used(drop_location())
|
||||
return ..()
|
||||
|
||||
/obj/structure/showcase/machinery/oldpod
|
||||
name = "damaged cryogenic pod"
|
||||
desc = "A damaged cryogenic pod long since lost to time, including its former occupant..."
|
||||
icon = 'icons/obj/cryogenic2.dmi'
|
||||
icon_state = "sleeper-open"
|
||||
|
||||
/obj/structure/showcase/machinery/oldpod/used
|
||||
name = "opened cryogenic pod"
|
||||
desc = "A cryogenic pod that has recently discharged its occupant. The pod appears non-functional."
|
||||
icon_state = "teleporter"
|
||||
@@ -0,0 +1,17 @@
|
||||
//stuff for the crashed wizard shuttle space ruin (wizardcrash.dmm)
|
||||
|
||||
/obj/item/paper/fluff/ruins/wizardcrash
|
||||
name = "Mission Briefing"
|
||||
info = "To the Magnificent Z.A.P.<BR>A small mining base has been created within our territory by wandless scum. Send them a message from the wizard federation they will not forget. I know your kind is rather fragile, but a group of lightly armed miners should not pose any threat to you at all. Just be warned they have a security cyborg for self defence, you might want to tune your spells to that threat. I look forward to hearing of your success.<BR>Grand Magus Abra the Wonderous"
|
||||
|
||||
|
||||
/obj/effect/spawner/lootdrop/wizardcrash
|
||||
loot = list(
|
||||
/obj/item/guardiancreator = 1, //jackpot.
|
||||
/obj/item/spellbook/oneuse/knock = 1, //tresspassing charges incoming
|
||||
/obj/item/gun/magic/wand/resurrection = 1, //medbay's best friend
|
||||
/obj/item/spellbook/oneuse/charge = 20, //and now for less useful stuff to dilute the good loot chances
|
||||
/obj/item/spellbook/oneuse/summonitem = 20,
|
||||
/obj/item/spellbook/oneuse/forcewall = 10,
|
||||
/obj/item/soulstone = 15 //spooky wizard stuff
|
||||
)
|
||||
@@ -373,7 +373,8 @@
|
||||
if(prefs.lastchangelog != changelog_hash) //bolds the changelog button on the interface so we know there are updates. -CP
|
||||
if(establish_db_connection())
|
||||
to_chat(src, "<span class='info'>Changelog has changed since your last visit.</span>")
|
||||
winset(src, "rpane.changelog", "background-color=#bb7700;text-color=#FFFFFF;font-style=bold")
|
||||
update_changelog_button()
|
||||
|
||||
|
||||
if(!void)
|
||||
void = new()
|
||||
@@ -671,6 +672,7 @@
|
||||
// IF YOU CHANGE ANYTHING IN ACTIVATE, MAKE SURE IT HAS A DEACTIVATE METHOD, -AA07
|
||||
/client/proc/activate_darkmode()
|
||||
///// BUTTONS /////
|
||||
update_changelog_button()
|
||||
/* Rpane */
|
||||
winset(src, "rpane.textb", "background-color=#40628a;text-color=#FFFFFF")
|
||||
winset(src, "rpane.infob", "background-color=#40628a;text-color=#FFFFFF")
|
||||
@@ -705,6 +707,7 @@
|
||||
|
||||
/client/proc/deactivate_darkmode()
|
||||
///// BUTTONS /////
|
||||
update_changelog_button()
|
||||
/* Rpane */
|
||||
winset(src, "rpane.textb", "background-color=none;text-color=#000000")
|
||||
winset(src, "rpane.infob", "background-color=none;text-color=#000000")
|
||||
@@ -735,4 +738,20 @@
|
||||
winset(src, "infowindow", "background-color=none;text-color=#000000")
|
||||
winset(src, "infowindow.info", "background-color=none;text-color=#000000;highlight-color=#007700;tab-text-color=#000000;tab-background-color=none")
|
||||
///// NOTIFY USER /////
|
||||
to_chat(src, "<span class='notice'>Darkmode Disabled</span>") // what a sick fuck
|
||||
to_chat(src, "<span class='notice'>Darkmode Disabled</span>") // what a sick fuck
|
||||
|
||||
// Better changelog button handling
|
||||
/client/proc/update_changelog_button()
|
||||
if(establish_db_connection())
|
||||
if(prefs.lastchangelog != changelog_hash)
|
||||
winset(src, "rpane.changelog", "background-color=#bb7700;text-color=#FFFFFF;font-style=bold")
|
||||
else
|
||||
if(prefs.toggles & UI_DARKMODE)
|
||||
winset(src, "rpane.changelog", "background-color=#40628a;text-color=#FFFFFF")
|
||||
else
|
||||
winset(src, "rpane.changelog", "background-color=none;text-color=#000000")
|
||||
else
|
||||
if(prefs.toggles & UI_DARKMODE)
|
||||
winset(src, "rpane.changelog", "background-color=#40628a;text-color=#FFFFFF")
|
||||
else
|
||||
winset(src, "rpane.changelog", "background-color=none;text-color=#000000")
|
||||
|
||||
@@ -842,19 +842,17 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
|
||||
if(CAN_WINGDINGS in S.species_traits)
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_WINGDINGS, "Speak in Wingdings")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_NEARSIGHTED, "Needs glasses")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_FAT, "Obese")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_EPILEPTIC, "Seizures")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_DEAF, "Deaf")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_BLIND, "Blind")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_NEARSIGHTED, "Nearsighted")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_COLOURBLIND, "Colourblind")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_BLIND, "Blind")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_DEAF, "Deaf")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_MUTE, "Mute")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_TOURETTES, "Tourettes syndrome") // this will / can not be abused. It also SEVERELY stuns. It's just for fun.
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_FAT, "Obese")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_NERVOUS, "Stutter")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_SWEDISH, "Swedish accent")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_CHAV, "Chav accent")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_LISP, "Lisp")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_DIZZY, "Dizziness")
|
||||
HTML += ShowDisabilityState(user, DISABILITY_FLAG_SCRAMBLED, "Can't speak properly")
|
||||
|
||||
|
||||
HTML += {"</ul>
|
||||
@@ -2204,18 +2202,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
character.dna.SetSEState(GLASSESBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(GLASSESBLOCK)
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_EPILEPTIC)
|
||||
character.dna.SetSEState(EPILEPSYBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(EPILEPSYBLOCK)
|
||||
if(disabilities & DISABILITY_FLAG_BLIND)
|
||||
character.dna.SetSEState(BLINDBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(BLINDBLOCK)
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_DEAF)
|
||||
character.dna.SetSEState(DEAFBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(DEAFBLOCK)
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_BLIND)
|
||||
character.dna.SetSEState(BLINDBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(BLINDBLOCK)
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_COLOURBLIND)
|
||||
character.dna.SetSEState(COLOURBLINDBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(COLOURBLINDBLOCK)
|
||||
@@ -2224,10 +2218,6 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
character.dna.SetSEState(MUTEBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(MUTEBLOCK)
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_TOURETTES)
|
||||
character.dna.SetSEState(TWITCHBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(TWITCHBLOCK)
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_NERVOUS)
|
||||
character.dna.SetSEState(NERVOUSBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(NERVOUSBLOCK)
|
||||
@@ -2236,9 +2226,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
character.dna.SetSEState(SWEDEBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(SWEDEBLOCK)
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_SCRAMBLED)
|
||||
character.dna.SetSEState(SCRAMBLEBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(SCRAMBLEBLOCK)
|
||||
if(disabilities & DISABILITY_FLAG_CHAV)
|
||||
character.dna.SetSEState(CHAVBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(CHAVBLOCK)
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_LISP)
|
||||
character.dna.SetSEState(LISPBLOCK, TRUE, TRUE)
|
||||
@@ -2248,10 +2238,6 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
character.dna.SetSEState(DIZZYBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(DIZZYBLOCK)
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_SCRAMBLED)
|
||||
character.dna.SetSEState(SCRAMBLEBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(SCRAMBLEBLOCK)
|
||||
|
||||
if(disabilities & DISABILITY_FLAG_WINGDINGS && (CAN_WINGDINGS in character.dna.species.species_traits))
|
||||
character.dna.SetSEState(WINGDINGSBLOCK, TRUE, TRUE)
|
||||
character.dna.default_blocks.Add(WINGDINGSBLOCK)
|
||||
|
||||
@@ -494,9 +494,3 @@
|
||||
to_chat(C, "Couldn't update your last seen changelog, please try again later.")
|
||||
return
|
||||
return 1
|
||||
|
||||
/datum/preferences/proc/UpdateChangelogButton(client/C)
|
||||
if(preferences_datums[C.ckey].toggles & UI_DARKMODE)
|
||||
winset(C, "rpane.changelog", "background-color=#40628a;text-color=#ffffff;font-style=none")
|
||||
else
|
||||
winset(C, "rpane.changelog", "background-color=none;text-color=#000000;font-style=none")
|
||||
@@ -847,6 +847,15 @@
|
||||
species_fit = null
|
||||
sprite_sheets = null
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/fluff/pulsecoat //ozewse : Daniel Harper : Donated to them by Runemeds, who is the original donor.
|
||||
name = "EMT pulse coat"
|
||||
desc = "An EMT labcoat modified to track the wearer's heartbeat. It's so worn out that it doesn't seem to accurately track heartbeat anymore. Also, the zipper is stuck."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "pulsecoat"
|
||||
item_state = "pulsecoat"
|
||||
ignore_suitadjust = 1
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/clothing/suit/jacket/miljacket/patch // sniper_fairy : P.A.T.C.H.
|
||||
name = "custom purple military jacket"
|
||||
desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable. This one has a medical patch on it."
|
||||
@@ -1115,6 +1124,20 @@
|
||||
flags = NODROP|BLOCKHAIR
|
||||
flags_inv = HIDEEARS
|
||||
|
||||
/obj/item/clothing/suit/fluff/pineapple //Pineapple Salad: Dan Jello
|
||||
name = "red trench coat"
|
||||
desc = "A red coat with cheaply made plastic accessories."
|
||||
icon_state = "pineapple_trench"
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/fluff/shesi //MrSynnester : Shesi Skaklas
|
||||
name = "custom made winter coat"
|
||||
desc = "A custom made winter coat with the arms removed. Looks comfy."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "shesicoat"
|
||||
item_state = "shesicoat"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO
|
||||
|
||||
//////////// Uniforms ////////////
|
||||
/obj/item/clothing/under/fluff/counterfeitguise_uniform // thatdanguy23 : Rissa Williams
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
@@ -1313,6 +1336,13 @@
|
||||
/obj/item/toy/plushie/fluff/fox/ui_action_click()
|
||||
change_color()
|
||||
|
||||
/obj/item/clothing/suit/jacket/miljacket/desert/fox
|
||||
name = "rugged military jacket"
|
||||
desc = "A rugged brown military jacket with a stylized 'A' embroidered on the back. It seems very old, yet is in near mint condition. Has a tag on the inside collar signed 'Fox McCloud'."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "fox_coat"
|
||||
item_color = "fox_coat"
|
||||
|
||||
// TheFlagbearer: Willow Walker
|
||||
/obj/item/clothing/under/fluff/arachno_suit
|
||||
name = "Arachno-Man costume"
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
// DONT TOUCH ANYTHING IN HERE UNLESS YOU KNOW WHAT YOU ARE DOING -affected
|
||||
/client/verb/linkdiscord()
|
||||
set category = "OOC"
|
||||
set name = "Link Discord Account"
|
||||
set desc = "Link your discord account to your BYOND account."
|
||||
var/user_ckey = sanitizeSQL(usr.ckey) // Probably not neccassary but better safe than sorry
|
||||
if(!config.sql_enabled)
|
||||
to_chat(src, "<span class='warning'>This is feature requires the SQL backend</span>")
|
||||
return
|
||||
var/DBQuery/db_discord_id = dbcon.NewQuery("SELECT discord_id FROM [format_table_name("discord")] WHERE ckey = '[user_ckey]'")
|
||||
if(!db_discord_id.Execute())
|
||||
var/err = db_discord_id.ErrorMsg()
|
||||
log_game("SQL ERROR while selecting discord account. Error : \[[err]\]\n")
|
||||
to_chat(src, "<span class='warning'>Error checking Discord account. Please inform an administrator</span>")
|
||||
return
|
||||
var/stored_id
|
||||
while(db_discord_id.NextRow())
|
||||
stored_id = db_discord_id.item[1]
|
||||
if(!stored_id) // Not linked
|
||||
var/know_how = alert("Do you know how to get a discord user ID?","Question","Yes","No")
|
||||
if(know_how == "No") // Opens discord support on how to collect IDs
|
||||
src << link("https://support.discordapp.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID")
|
||||
var/entered_id = input("Please enter your Discord ID.", "Enter Discord ID", null, null) as text|null
|
||||
var/sql_id = sanitizeSQL(entered_id)
|
||||
var/DBQuery/store_discord_id = dbcon.NewQuery("INSERT INTO [format_table_name("discord")] (ckey, discord_id, notify) VALUES ('[user_ckey]', [sql_id], 0)")
|
||||
if(!store_discord_id.Execute())
|
||||
var/err = db_discord_id.ErrorMsg()
|
||||
log_game("SQL ERROR while linking discord account. Error : \[[err]\]\n")
|
||||
to_chat(src, "<span class='warning'>Error linking Discord account. Please inform an administrator</span>")
|
||||
return
|
||||
to_chat(src, "<span class='notice'>Successfully linked discord account [entered_id] to [user_ckey]</span>")
|
||||
else // Linked
|
||||
var/choice = alert("You already have the Discord Account [stored_id] linked to [user_ckey]. Would you like to unlink or replace","Already Linked","Unlink","Replace")
|
||||
switch(choice)
|
||||
if("Unlink")
|
||||
var/DBQuery/unlink_discord_id = dbcon.NewQuery("DELETE FROM [format_table_name("discord")] WHERE ckey = '[user_ckey]'")
|
||||
if(!unlink_discord_id.Execute())
|
||||
var/err = unlink_discord_id.ErrorMsg()
|
||||
log_game("SQL ERROR while unlinking discord account. Error : \[[err]\]\n")
|
||||
to_chat(src, "<span class='warning'>Error unlinking Discord account. Please inform an administrator</span>")
|
||||
return
|
||||
to_chat(src, "<span class='notice'>Successfully unlinked discord account</span>")
|
||||
if("Replace")
|
||||
var/entered_id = input("Please enter your Discord ID. Instructions can be found at https://bit.ly/2AfUu40", "Enter Discord ID", null, null) as text|null
|
||||
var/sql_id = sanitizeSQL(entered_id)
|
||||
var/DBQuery/store_discord_id = dbcon.NewQuery("UPDATE [format_table_name("discord")] SET discord_id = '[sql_id]' WHERE ckey='[user_ckey]'")
|
||||
if(!store_discord_id.Execute())
|
||||
var/err = db_discord_id.ErrorMsg()
|
||||
to_chat(src, "<span class='warning'>Error replacing Discord account. Please inform an administrator</span>")
|
||||
log_game("SQL ERROR while linking discord account. Error : \[[err]\]\n")
|
||||
return
|
||||
to_chat(src, "<span class='notice'>Successfully linked discord account [entered_id] to [user_ckey]</span>")
|
||||
@@ -0,0 +1,48 @@
|
||||
// DONT TOUCH ANYTHING IN HERE UNLESS YOU KNOW WHAT YOU ARE DOING -affected
|
||||
/client/verb/notify_restart()
|
||||
set category = "OOC"
|
||||
set name = "Notify Restart"
|
||||
set desc = "Notifies you on Discord when the server restarts."
|
||||
if(!config.sql_enabled)
|
||||
to_chat(src, "<span class='warning'>This is feature requires the SQL backend</span>")
|
||||
return
|
||||
var/DBQuery/db_discord_id = dbcon.NewQuery("SELECT discord_id FROM [format_table_name("discord")] WHERE ckey = '[ckey]'")
|
||||
if(!db_discord_id.Execute())
|
||||
var/err = db_discord_id.ErrorMsg()
|
||||
log_game("SQL ERROR while selecting discord account. Error : \[[err]\]\n")
|
||||
to_chat(src, "<span class='warning'>Error checking Discord account. Please inform an administrator</span>")
|
||||
return
|
||||
var/stored_id
|
||||
while(db_discord_id.NextRow())
|
||||
stored_id = db_discord_id.item[1]
|
||||
if(!stored_id) // Not linked
|
||||
to_chat(src, "<span class='warning'>This requires you to link your Discord account with the \"Link Discord Account\" verb.</span>")
|
||||
return
|
||||
else // Linked
|
||||
var/DBQuery/toggle_status = dbcon.NewQuery("SELECT notify FROM [format_table_name("discord")] WHERE ckey = '[ckey]'")
|
||||
if(!toggle_status.Execute())
|
||||
var/err = toggle_status.ErrorMsg()
|
||||
log_game("SQL ERROR while getting discord account. Error : \[[err]\]\n")
|
||||
var/notify_status
|
||||
while(toggle_status.NextRow())
|
||||
notify_status = toggle_status.item[1]
|
||||
if(notify_status) // Data is there
|
||||
switch(notify_status)
|
||||
if("0")
|
||||
var/DBQuery/update_notify = dbcon.NewQuery("UPDATE [format_table_name("discord")] SET notify = 1 WHERE ckey='[ckey]'")
|
||||
if(!update_notify.Execute())
|
||||
var/err = db_discord_id.ErrorMsg()
|
||||
to_chat(src, "<span class='warning'>Error updating notify status. Please inform an administrator</span>")
|
||||
log_game("SQL ERROR while updating notify status. Error : \[[err]\]\n")
|
||||
return
|
||||
to_chat(src, "<span class='notice'>You will now be notified on discord when the next round is starting</span>")
|
||||
if("1")
|
||||
var/DBQuery/update_notify = dbcon.NewQuery("UPDATE [format_table_name("discord")] SET notify = 0 WHERE ckey='[ckey]'")
|
||||
if(!update_notify.Execute())
|
||||
var/err = db_discord_id.ErrorMsg()
|
||||
to_chat(src, "<span class='warning'>Error updating notify status. Please inform an administrator</span>")
|
||||
log_game("SQL ERROR while updating notify status. Error : \[[err]\]\n")
|
||||
return
|
||||
to_chat(src, "<span class='notice'>You will no longer be notified on discord when the next round is starting</span>")
|
||||
else // Oh fuck what the hell happened
|
||||
to_chat(src, "<span class='danger'>Something has gone VERY wrong, or affected cant code.</span>")
|
||||
@@ -1,14 +1,18 @@
|
||||
/proc/send2irc(var/channel, var/msg)
|
||||
/proc/send2irc(var/channel, var/msg, var/lesser_sanitize = FALSE)
|
||||
if(config.use_irc_bot && config.irc_bot_host.len)
|
||||
for(var/IP in config.irc_bot_host)
|
||||
spawn(0)
|
||||
// I have no means of trusting you, cmd
|
||||
ext_python("ircbot_message.py", "[config.comms_password] [IP] [channel] [paranoid_sanitize(msg)]")
|
||||
if(lesser_sanitize == 7355608) // Super random number because this could be bad if done accidentally
|
||||
// Runs sanitization but allows <> and // (Needed for discord)
|
||||
ext_python("ircbot_message.py", "[config.comms_password] [IP] [channel] [not_as_paranoid_sanitize(msg)]")
|
||||
else
|
||||
// I have no means of trusting you, cmd
|
||||
ext_python("ircbot_message.py", "[config.comms_password] [IP] [channel] [paranoid_sanitize(msg)]")
|
||||
return
|
||||
|
||||
/proc/send2mainirc(var/msg)
|
||||
/proc/send2mainirc(var/msg, var/lesser_sanitize = FALSE)
|
||||
if(config.main_irc)
|
||||
send2irc(config.main_irc, msg)
|
||||
send2irc(config.main_irc, msg, lesser_sanitize)
|
||||
return
|
||||
|
||||
/proc/send2adminirc(var/msg)
|
||||
@@ -17,5 +21,18 @@
|
||||
return
|
||||
|
||||
/hook/startup/proc/ircNotify()
|
||||
send2mainirc("Server starting up on [station_name()]. Connect to: [config.server? "[config.server]" : "[world.address]:[world.port]"]")
|
||||
var/people_to_ping = ""
|
||||
var/DBQuery/pull_notify = dbcon.NewQuery("SELECT discord_id FROM [format_table_name("discord")] WHERE notify = 1")
|
||||
if(!pull_notify.Execute())
|
||||
var/err = pull_notify.ErrorMsg()
|
||||
log_game("SQL ERROR while pulling notify people. Error : \[[err]\]\n")
|
||||
else
|
||||
while(pull_notify.NextRow())
|
||||
people_to_ping += "<@" + pull_notify.item[1] + "> "
|
||||
send2mainirc("Server starting up on [station_name()]. Connect to: <byond://[config.server? "[config.server]" : "[world.address]:[world.port]"]> "+people_to_ping, 7355608)
|
||||
// Set notify to 0 so people arent pinged round after round
|
||||
var/DBQuery/reset_notify = dbcon.NewQuery("UPDATE [format_table_name("discord")] SET notify = 0 WHERE notify = 1")
|
||||
if(!reset_notify.Execute())
|
||||
var/err = reset_notify.ErrorMsg()
|
||||
log_game("SQL ERROR while resetting notify status. Error : \[[err]\]\n")
|
||||
return 1
|
||||
|
||||
@@ -197,13 +197,13 @@
|
||||
list_reagents = list("coffee" = 30)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/ice
|
||||
name = "Ice Cup"
|
||||
name = "ice cup"
|
||||
desc = "Careful, cold ice, do not chew."
|
||||
icon_state = "icecup"
|
||||
list_reagents = list("ice" = 30)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/tea
|
||||
name = "Duke Purple Tea"
|
||||
name = "Duke Purple tea"
|
||||
desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea."
|
||||
icon_state = "teacup"
|
||||
item_state = "coffee"
|
||||
@@ -215,34 +215,34 @@
|
||||
reagents.add_reagent("mugwort", 3)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/mugwort
|
||||
name = "Mugwort Tea"
|
||||
name = "mugwort tea"
|
||||
desc = "A bitter herbal tea."
|
||||
icon_state = "manlydorfglass"
|
||||
item_state = "coffee"
|
||||
list_reagents = list("mugwort" = 30)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/h_chocolate
|
||||
name = "Dutch Hot Coco"
|
||||
name = "Dutch hot coco"
|
||||
desc = "Made in Space South America."
|
||||
icon_state = "hot_coco"
|
||||
item_state = "coffee"
|
||||
list_reagents = list("hot_coco" = 30, "sugar" = 5)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/chocolate
|
||||
name = "Hot Chocolate"
|
||||
name = "hot chocolate"
|
||||
desc = "Made in Space Switzerland."
|
||||
icon_state = "hot_coco"
|
||||
item_state = "coffee"
|
||||
list_reagents = list("chocolate" = 30)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/weightloss
|
||||
name = "Weight-Loss Shake"
|
||||
name = "weight-loss shake"
|
||||
desc = "A shake designed to cause weight loss. The package proudly proclaims that it is 'tapeworm free.'"
|
||||
icon_state = "weightshake"
|
||||
list_reagents = list("lipolicide" = 30, "chocolate" = 5)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/dry_ramen
|
||||
name = "Cup Ramen"
|
||||
name = "cup ramen"
|
||||
desc = "Just add 10ml of water, self heats! A taste that reminds you of your school years."
|
||||
icon_state = "ramen"
|
||||
item_state = "ramen"
|
||||
@@ -254,7 +254,7 @@
|
||||
reagents.add_reagent("enzyme", 3)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/chicken_soup
|
||||
name = "Canned Chicken Soup"
|
||||
name = "canned chicken soup"
|
||||
desc = "A delicious and soothing can of chicken noodle soup; just like spessmom used to microwave it."
|
||||
icon_state = "soupcan"
|
||||
item_state = "soupcan"
|
||||
@@ -331,7 +331,7 @@
|
||||
volume = 50
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/flask/lithium
|
||||
name = "Lithium Flask"
|
||||
name = "lithium flask"
|
||||
desc = "A flask with a Lithium Atom symbol on it."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "lithiumflask"
|
||||
@@ -353,13 +353,13 @@
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bag
|
||||
name = "Drink bag"
|
||||
name = "drink bag"
|
||||
desc = "Normally put in wine boxes, or down pants at stadium events."
|
||||
icon_state = "goonbag"
|
||||
volume = 70
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bag/goonbag
|
||||
name = "Goon from a Blue Toolbox special edition"
|
||||
name = "goon from a Blue Toolbox special edition"
|
||||
desc = "Wine from the land down under, where the dingos roam and the roos do wander."
|
||||
icon_state = "goonbag"
|
||||
list_reagents = list("wine" = 70)
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
list_reagents = list("rum" = 100)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bottle/holywater
|
||||
name = "Flask of Holy Water"
|
||||
name = "flask of holy water"
|
||||
desc = "A flask of the chaplain's holy water."
|
||||
icon_state = "holyflask"
|
||||
list_reagents = list("holywater" = 100)
|
||||
@@ -232,8 +232,8 @@
|
||||
list_reagents = list("wine" = 100)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bottle/absinthe
|
||||
name = "Extra-Strong Absinthe"
|
||||
desc = "A strong alcoholic drink brewed and distributed by REDACTED."
|
||||
name = "Yellow Marquee Absinthe"
|
||||
desc = "A strong alcoholic drink brewed and distributed by Yellow Marquee."
|
||||
icon_state = "absinthebottle"
|
||||
list_reagents = list("absinthe" = 100)
|
||||
|
||||
@@ -252,7 +252,7 @@
|
||||
//////////////////////////JUICES AND STUFF ///////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bottle/orangejuice
|
||||
name = "Orange Juice"
|
||||
name = "orange juice"
|
||||
desc = "Full of vitamins and deliciousness!"
|
||||
icon_state = "orangejuice"
|
||||
item_state = "carton"
|
||||
@@ -260,7 +260,7 @@
|
||||
list_reagents = list("orangejuice" = 100)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bottle/cream
|
||||
name = "Milk Cream"
|
||||
name = "milk cream"
|
||||
desc = "It's cream. Made from milk. What else did you think you'd find in there?"
|
||||
icon_state = "cream"
|
||||
item_state = "carton"
|
||||
@@ -268,7 +268,7 @@
|
||||
list_reagents = list("cream" = 100)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bottle/tomatojuice
|
||||
name = "Tomato Juice"
|
||||
name = "tomato juice"
|
||||
desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness."
|
||||
icon_state = "tomatojuice"
|
||||
item_state = "carton"
|
||||
@@ -276,7 +276,7 @@
|
||||
list_reagents = list("tomatojuice" = 100)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bottle/limejuice
|
||||
name = "Lime Juice"
|
||||
name = "lime juice"
|
||||
desc = "Sweet-sour goodness."
|
||||
icon_state = "limejuice"
|
||||
item_state = "carton"
|
||||
@@ -284,7 +284,7 @@
|
||||
list_reagents = list("limejuice" = 100)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bottle/milk
|
||||
name = "Milk"
|
||||
name = "milk"
|
||||
desc = "Soothing milk."
|
||||
icon_state = "milk"
|
||||
item_state = "carton"
|
||||
|
||||
@@ -59,34 +59,34 @@
|
||||
return ..(target, user, proximity)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/cans/cola
|
||||
name = "Space Cola"
|
||||
name = "space cola"
|
||||
desc = "Cola. in space."
|
||||
icon_state = "cola"
|
||||
list_reagents = list("cola" = 30)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/cans/beer
|
||||
name = "Space Beer"
|
||||
name = "space beer"
|
||||
desc = "Contains only water, malt and hops."
|
||||
icon_state = "beer"
|
||||
is_glass = 1
|
||||
list_reagents = list("beer" = 30)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/cans/adminbooze
|
||||
name = "Admin Booze"
|
||||
name = "admin booze"
|
||||
desc = "Bottled Griffon tears. Drink with caution."
|
||||
icon_state = "adminbooze"
|
||||
is_glass = 1
|
||||
list_reagents = list("adminordrazine" = 5, "capsaicin" = 5, "methamphetamine"= 20, "thirteenloko" = 20)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/cans/madminmalt
|
||||
name = "Madmin Malt"
|
||||
name = "madmin malt"
|
||||
desc = "Bottled essence of angry admins. Drink with <i>EXTREME</i> caution."
|
||||
icon_state = "madminmalt"
|
||||
is_glass = 1
|
||||
list_reagents = list("hell_water" = 20, "neurotoxin" = 15, "thirteenloko" = 15)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/cans/badminbrew
|
||||
name = "Badmin Brew"
|
||||
name = "badmin brew"
|
||||
desc = "Bottled trickery and terrible admin work. Probably shouldn't drink this one at all."
|
||||
icon_state = "badminbrew"
|
||||
is_glass = 1
|
||||
@@ -156,7 +156,7 @@
|
||||
list_reagents = list("tonic" = 50)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/cans/sodawater
|
||||
name = "Soda Water"
|
||||
name = "soda water"
|
||||
desc = "A can of soda water. Still water's more refreshing cousin."
|
||||
icon_state = "sodawater"
|
||||
list_reagents = list("sodawater" = 50)
|
||||
|
||||
@@ -18,14 +18,14 @@
|
||||
// ***********************************************************
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/chocolatebar
|
||||
name = "Chocolate Bar"
|
||||
name = "chocolate bar"
|
||||
desc = "Such sweet, fattening food."
|
||||
icon_state = "chocolatebar"
|
||||
filling_color = "#7D5F46"
|
||||
list_reagents = list("nutriment" = 2, "chocolate" = 4)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/candy/caramel
|
||||
name = "Caramel"
|
||||
name = "caramel"
|
||||
desc = "Chewy and dense, yet it practically melts in your mouth!"
|
||||
icon_state = "caramel"
|
||||
filling_color = "#DB944D"
|
||||
@@ -33,21 +33,21 @@
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/candy/toffee
|
||||
name = "Toffee"
|
||||
name = "toffee"
|
||||
desc = "A hard, brittle candy with a distinctive taste."
|
||||
icon_state = "toffee"
|
||||
filling_color = "#7D5F46"
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 3)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/candy/nougat
|
||||
name = "Nougat"
|
||||
name = "nougat"
|
||||
desc = "A soft, chewy candy commonly found in candybars."
|
||||
icon_state = "nougat"
|
||||
filling_color = "#7D5F46"
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 3)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/candy/taffy
|
||||
name = "Saltwater Taffy"
|
||||
name = "saltwater taffy"
|
||||
desc = "Old fashioned saltwater taffy. Chewy!"
|
||||
icon_state = "candy1"
|
||||
filling_color = "#7D5F46"
|
||||
@@ -58,7 +58,7 @@
|
||||
icon_state = pick("candy1", "candy2", "candy3", "candy4", "candy5")
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/candy/fudge
|
||||
name = "Fudge"
|
||||
name = "fudge"
|
||||
desc = "Chocolate fudge, a timeless classic treat."
|
||||
icon_state = "fudge"
|
||||
filling_color = "#7D5F46"
|
||||
@@ -66,26 +66,26 @@
|
||||
list_reagents = list("cream" = 3, "chocolate" = 6)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/candy/fudge/peanut
|
||||
name = "Peanut Fudge"
|
||||
name = "peanut fudge"
|
||||
desc = "Chocolate fudge, with bits of peanuts mixed in. People with nut allergies shouldn't eat this."
|
||||
icon_state = "fudge_peanut"
|
||||
filling_color = "#7D5F46"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/candy/fudge/cherry
|
||||
name = "Chocolate Cherry Fudge"
|
||||
name = "chocolate cherry fudge"
|
||||
desc = "Chocolate fudge surrounding sweet cherries. Good for tricking kids into eating some fruit."
|
||||
icon_state = "fudge_cherry"
|
||||
filling_color = "#7D5F46"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/candy/fudge/cookies_n_cream
|
||||
name = "Cookies 'n' Cream Fudge"
|
||||
name = "cookies 'n' cream fudge"
|
||||
desc = "An extra creamy fudge with bits of real chocolate cookie mixed in. Crunchy!"
|
||||
icon_state = "fudge_cookies_n_cream"
|
||||
filling_color = "#7D5F46"
|
||||
list_reagents = list("cream" = 6, "chocolate" = 6)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/candy/fudge/turtle
|
||||
name = "Turtle Fudge"
|
||||
name = "turtle fudge"
|
||||
desc = "Chocolate fudge with caramel and nuts. It doesn't contain real turtles, thankfully."
|
||||
icon_state = "fudge_turtle"
|
||||
filling_color = "#7D5F46"
|
||||
@@ -95,7 +95,7 @@
|
||||
// ***********************************************************
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/candy/donor
|
||||
name = "Donor Candy"
|
||||
name = "donor candy"
|
||||
desc = "A little treat for blood donors."
|
||||
trash = /obj/item/trash/candy
|
||||
bitesize = 5
|
||||
@@ -516,7 +516,7 @@
|
||||
filling_color = "#7D5F46"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/candy/confectionery/toffee
|
||||
name = "Yum-baton Bar"
|
||||
name = "Yum-Baton Bar"
|
||||
desc = "Chocolate and toffee in the shape of a baton. Security sure knows how to pound these down!"
|
||||
icon_state = "yumbaton"
|
||||
filling_color = "#7D5F46"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
list_reagents = list("nutriment" = 7, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/burrito
|
||||
name = "Burrito"
|
||||
name = "burrito"
|
||||
desc = "Meat, beans, cheese, and rice wrapped up as an easy-to-hold meal."
|
||||
icon_state = "burrito"
|
||||
trash = /obj/item/trash/plate
|
||||
@@ -19,7 +19,7 @@
|
||||
list_reagents = list("nutriment" = 4, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/chimichanga
|
||||
name = "Chimichanga"
|
||||
name = "chimichanga"
|
||||
desc = "Time to eat a chimi-f***ing-changa."
|
||||
icon_state = "chimichanga"
|
||||
trash = /obj/item/trash/plate
|
||||
@@ -27,8 +27,8 @@
|
||||
list_reagents = list("omnizine" = 4, "cheese" = 2) //Deadpool reference. Deal with it.
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/enchiladas
|
||||
name = "Enchiladas"
|
||||
desc = "Viva La Mexico!"
|
||||
name = "enchiladas"
|
||||
desc = "Viva la Mexico!"
|
||||
icon_state = "enchiladas"
|
||||
trash = /obj/item/trash/tray
|
||||
filling_color = "#A36A1F"
|
||||
@@ -57,7 +57,7 @@
|
||||
list_reagents = list("nutriment" = 1, "beans" = 3, "msg" = 4, "sugar" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/chinese/sweetsourchickenball
|
||||
name = "Sweet & Sour Chicken Balls"
|
||||
name = "sweet & sour chicken balls"
|
||||
desc = "Is this chicken cooked? The odds are better than wok paper scissors."
|
||||
icon_state = "chickenball"
|
||||
junkiness = 25
|
||||
@@ -113,13 +113,13 @@
|
||||
/obj/item/reagent_containers/food/snacks/human/kabob
|
||||
name = "-kabob"
|
||||
icon_state = "kabob"
|
||||
desc = "A human meat, on a stick."
|
||||
desc = "Human meat, on a stick."
|
||||
trash = /obj/item/stack/rods
|
||||
filling_color = "#A85340"
|
||||
list_reagents = list("nutriment" = 8)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/monkeykabob
|
||||
name = "Meat-kabob"
|
||||
name = "meat-kabob"
|
||||
icon_state = "kabob"
|
||||
desc = "Delicious meat, on a stick."
|
||||
trash = /obj/item/stack/rods
|
||||
@@ -127,7 +127,7 @@
|
||||
list_reagents = list("nutriment" = 8)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tofukabob
|
||||
name = "Tofu-kabob"
|
||||
name = "tofu-kabob"
|
||||
icon_state = "kabob"
|
||||
desc = "Vegan meat, on a stick."
|
||||
trash = /obj/item/stack/rods
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tofu
|
||||
name = "Tofu"
|
||||
name = "tofu"
|
||||
icon_state = "tofu"
|
||||
desc = "We all love tofu."
|
||||
filling_color = "#FFFEE0"
|
||||
@@ -12,7 +12,7 @@
|
||||
list_reagents = list("plantmatter" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/fried_tofu
|
||||
name = "Fried Tofu"
|
||||
name = "fried tofu"
|
||||
icon_state = "tofu"
|
||||
desc = "Proof that even vegetarians crave unhealthy foods."
|
||||
filling_color = "#FFFEE0"
|
||||
@@ -20,8 +20,8 @@
|
||||
list_reagents = list("plantmatter" = 3)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soydope
|
||||
name = "Soy Dope"
|
||||
desc = "Dope from a soy."
|
||||
name = "soy dope"
|
||||
desc = "Like regular dope, but for the health concious consumer."
|
||||
icon_state = "soydope"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#C4BF76"
|
||||
@@ -33,7 +33,7 @@
|
||||
//////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/cheesewheel
|
||||
name = "Cheese wheel"
|
||||
name = "cheese wheel"
|
||||
desc = "A big wheel of delicious Cheddar."
|
||||
icon_state = "cheesewheel"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cheesewedge
|
||||
@@ -42,14 +42,14 @@
|
||||
list_reagents = list("nutriment" = 15, "vitamin" = 5, "cheese" = 20)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cheesewedge
|
||||
name = "Cheese wedge"
|
||||
name = "cheese wedge"
|
||||
desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far."
|
||||
icon_state = "cheesewedge"
|
||||
filling_color = "#FFF700"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/weirdcheesewedge
|
||||
name = "Weird Cheese"
|
||||
desc = "Some kind of... gooey, messy, gloopy thing. Similar to cheese, but only in the looser sense of the word."
|
||||
name = "weird cheese"
|
||||
desc = "Some kind of... gooey, messy, gloopy thing. Similar to cheese, but only in the broad sense of the word."
|
||||
icon_state = "weirdcheesewedge"
|
||||
filling_color = "#00FF33"
|
||||
list_reagents = list("mercury" = 5, "lsd" = 5, "ethanol" = 5, "weird_cheese" = 5)
|
||||
@@ -76,13 +76,13 @@
|
||||
list_reagents = list("protein" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/watermelonslice
|
||||
name = "Watermelon Slice"
|
||||
name = "watermelon slice"
|
||||
desc = "A slice of watery goodness."
|
||||
icon_state = "watermelonslice"
|
||||
filling_color = "#FF3867"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pineappleslice
|
||||
name = "Pineapple Slices"
|
||||
name = "pineapple slices"
|
||||
desc = "Rings of pineapple."
|
||||
icon_state = "pineappleslice"
|
||||
filling_color = "#e5b437"
|
||||
@@ -134,14 +134,14 @@
|
||||
//////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/chocolatebar
|
||||
name = "Chocolate Bar"
|
||||
name = "chocolate bar"
|
||||
desc = "Such sweet, fattening food."
|
||||
icon_state = "chocolatebar"
|
||||
filling_color = "#7D5F46"
|
||||
list_reagents = list("nutriment" = 2, "sugar" = 2, "cocoa" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/choc_pile //for reagent chocolate being spilled on turfs
|
||||
name = "Pile of Chocolate"
|
||||
name = "pile of chocolate"
|
||||
desc = "A pile of pure chocolate pieces."
|
||||
icon_state = "cocoa"
|
||||
filling_color = "#7D5F46"
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
list_reagents = list("protein" = 1, "sugar" = 3)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pistachios
|
||||
name = "Pistachios"
|
||||
name = "pistachios"
|
||||
icon_state = "pistachios"
|
||||
desc = "A snack of deliciously salted pistachios. A perfectly valid choice..."
|
||||
desc = "Deliciously salted pistachios. A perfectly valid choice..."
|
||||
trash = /obj/item/trash/pistachios
|
||||
filling_color = "#BAD145"
|
||||
junkiness = 20
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tastybread
|
||||
name = "bread tube"
|
||||
desc = "Bread in a tube. Chewy...and surprisingly tasty."
|
||||
desc = "Bread in a tube. Chewy and surprisingly tasty."
|
||||
icon_state = "tastybread"
|
||||
trash = /obj/item/trash/tastybread
|
||||
filling_color = "#A66829"
|
||||
|
||||
@@ -33,22 +33,22 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab/meatproduct
|
||||
name = "meat product"
|
||||
desc = "A slab of station reclaimed and chemically processed meat product."
|
||||
desc = "A slab of reclaimed and chemically processed meat product."
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/monkey
|
||||
//same as plain meat
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/corgi
|
||||
name = "Corgi meat"
|
||||
desc = "Tastes like... well you know..."
|
||||
name = "corgi meat"
|
||||
desc = "Tastes like the Head of Personnel's hopes and dreams"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/pug
|
||||
name = "Pug meat"
|
||||
desc = "Tastes like... well you know..."
|
||||
name = "pug meat"
|
||||
desc = "Slightly less adorable in sliced form."
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/ham
|
||||
name = "Ham"
|
||||
desc = "Taste like bacon."
|
||||
name = "ham"
|
||||
desc = "For when you need to go ham."
|
||||
list_reagents = list("protein" = 3, "porktonium" = 10)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meat/meatwheat
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/rawcutlet
|
||||
name = "raw cutlet"
|
||||
desc = "A thin piece of raw meat."
|
||||
desc = "A thin strip of raw meat."
|
||||
icon = 'icons/obj/food/food_ingredients.dmi'
|
||||
icon_state = "rawcutlet"
|
||||
bitesize = 1
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/xenomeat
|
||||
name = "meat"
|
||||
desc = "A slab of meat."
|
||||
desc = "A slab of meat. It's green!"
|
||||
icon_state = "xenomeat"
|
||||
filling_color = "#43DE18"
|
||||
bitesize = 6
|
||||
@@ -94,14 +94,14 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/spidermeat
|
||||
name = "spider meat"
|
||||
desc = "A slab of spider meat."
|
||||
desc = "A slab of spider meat. Not very appetizing."
|
||||
icon_state = "spidermeat"
|
||||
bitesize = 3
|
||||
list_reagents = list("protein" = 3, "toxin" = 3, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/lizardmeat
|
||||
name = "mutant lizard meat"
|
||||
desc = "Seems to be a slab of meat from some mutant lizard thing?"
|
||||
desc = "A peculiar slab of meat. It looks scaly and radioactive."
|
||||
icon_state = "xenomeat"
|
||||
filling_color = "#43DE18"
|
||||
bitesize = 3
|
||||
@@ -109,19 +109,19 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/spiderleg
|
||||
name = "spider leg"
|
||||
desc = "A still twitching leg of a giant spider... you don't really want to eat this, do you?"
|
||||
desc = "A still twitching leg of a giant spider. You don't really want to eat this, do you?"
|
||||
icon_state = "spiderleg"
|
||||
list_reagents = list("protein" = 2, "toxin" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/raw_bacon
|
||||
name = "raw bacon"
|
||||
desc = "It's fleshy and pink!"
|
||||
desc = "God's gift to man in uncooked form."
|
||||
icon_state = "raw_bacon"
|
||||
list_reagents = list("nutriment" = 1, "porktonium" = 10)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/spidereggs
|
||||
name = "spider eggs"
|
||||
desc = "A cluster of juicy spider eggs. A great side dish for when you care not for your health."
|
||||
desc = "A cluster of juicy spider eggs. A great side dish for when you don't care about your health."
|
||||
icon_state = "spidereggs"
|
||||
list_reagents = list("protein" = 2, "toxin" = 2)
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
//////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meatsteak
|
||||
name = "Meat steak"
|
||||
name = "meat steak"
|
||||
desc = "A piece of hot spicy meat."
|
||||
icon_state = "meatstake"
|
||||
trash = /obj/item/trash/plate
|
||||
@@ -140,13 +140,13 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/bacon
|
||||
name = "bacon"
|
||||
desc = "It looks juicy and tastes amazing!"
|
||||
desc = "It looks crispy and tastes amazing! Mmm... Bacon."
|
||||
icon_state = "bacon2"
|
||||
list_reagents = list("nutriment" = 4, "porktonium" = 10, "msg" = 4)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/telebacon
|
||||
name = "Tele Bacon"
|
||||
desc = "It tastes a little odd but it is still delicious."
|
||||
name = "tele bacon"
|
||||
desc = "It tastes a little odd but it's still delicious."
|
||||
icon_state = "bacon"
|
||||
var/obj/item/radio/beacon/bacon/baconbeacon
|
||||
list_reagents = list("nutriment" = 4, "porktonium" = 10)
|
||||
@@ -161,15 +161,15 @@
|
||||
baconbeacon.digest_delay()
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meatball
|
||||
name = "Meatball"
|
||||
name = "meatball"
|
||||
desc = "A great meal all round."
|
||||
icon_state = "meatball"
|
||||
filling_color = "#DB0000"
|
||||
list_reagents = list("protein" = 4, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sausage
|
||||
name = "Sausage"
|
||||
desc = "A piece of mixed, long meat."
|
||||
name = "sausage"
|
||||
desc = "A piece of mixed and cased meat."
|
||||
icon_state = "sausage"
|
||||
filling_color = "#DB0000"
|
||||
list_reagents = list("protein" = 6, "vitamin" = 1, "porktonium" = 10)
|
||||
@@ -198,8 +198,8 @@
|
||||
list_reagents = list("nutriment" = 3, "capsaicin" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/wingfangchu
|
||||
name = "Wing Fang Chu"
|
||||
desc = "A savory dish of alien wing wang in soy."
|
||||
name = "wing fang chu"
|
||||
desc = "A savory dish of alien wing wang in soy. Wait, what?"
|
||||
icon_state = "wingfangchu"
|
||||
trash = /obj/item/trash/snack_bowl
|
||||
filling_color = "#43DE18"
|
||||
@@ -335,7 +335,7 @@
|
||||
color = reagent_color
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/friedegg
|
||||
name = "Fried egg"
|
||||
name = "fried egg"
|
||||
desc = "A fried egg, with a touch of salt and pepper."
|
||||
icon_state = "friedegg"
|
||||
filling_color = "#FFDF78"
|
||||
@@ -343,21 +343,21 @@
|
||||
list_reagents = list("nutriment" = 3, "egg" = 5)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/boiledegg
|
||||
name = "Boiled egg"
|
||||
name = "boiled egg"
|
||||
desc = "A hard boiled egg."
|
||||
icon_state = "egg"
|
||||
filling_color = "#FFFFFF"
|
||||
list_reagents = list("nutriment" = 2, "egg" = 5, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/chocolateegg
|
||||
name = "Chocolate Egg"
|
||||
name = "chocolate egg"
|
||||
desc = "Such sweet, fattening food."
|
||||
icon_state = "chocolateegg"
|
||||
filling_color = "#7D5F46"
|
||||
list_reagents = list("nutriment" = 4, "sugar" = 2, "cocoa" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/omelette
|
||||
name = "Omelette Du Fromage"
|
||||
name = "omelette du fromage"
|
||||
desc = "That's all you can say!"
|
||||
icon_state = "omelette"
|
||||
trash = /obj/item/trash/plate
|
||||
@@ -379,7 +379,7 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/hotdog
|
||||
name = "hotdog"
|
||||
desc = "Fresh footlong ready to go down on."
|
||||
desc = "Not made with actual dogs. Hopefully."
|
||||
icon_state = "hotdog"
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "ketchup" = 3, "vitamin" = 3)
|
||||
@@ -392,7 +392,7 @@
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/turkey
|
||||
name = "Turkey"
|
||||
name = "turkey"
|
||||
desc = "A traditional turkey served with stuffing."
|
||||
icon_state = "turkey"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/turkeyslice
|
||||
@@ -408,7 +408,7 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/organ
|
||||
name = "organ"
|
||||
desc = "It's good for you."
|
||||
desc = "Technically qualifies as organic."
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
icon_state = "appendix"
|
||||
filling_color = "#E00D34"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/eggplantparm
|
||||
name = "Eggplant Parmigiana"
|
||||
name = "eggplant parmigiana"
|
||||
desc = "The only good recipe for eggplant."
|
||||
icon_state = "eggplantparm"
|
||||
trash = /obj/item/trash/plate
|
||||
@@ -12,7 +12,7 @@
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soylentgreen
|
||||
name = "Soylent Green"
|
||||
name = "soylent green"
|
||||
desc = "Not made of people. Honest." //Totally people.
|
||||
icon_state = "soylent_green"
|
||||
trash = /obj/item/trash/waffles
|
||||
@@ -20,7 +20,7 @@
|
||||
list_reagents = list("nutriment" = 10, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soylentviridians
|
||||
name = "Soylent Virdians"
|
||||
name = "soylent virdians"
|
||||
desc = "Not made of people. Honest." //Actually honest for once.
|
||||
icon_state = "soylent_yellow"
|
||||
trash = /obj/item/trash/waffles
|
||||
@@ -28,7 +28,7 @@
|
||||
list_reagents = list("nutriment" = 10, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/monkeysdelight
|
||||
name = "monkey's Delight"
|
||||
name = "monkey's delight"
|
||||
desc = "Eeee Eee!"
|
||||
icon_state = "monkeysdelight"
|
||||
trash = /obj/item/trash/tray
|
||||
@@ -38,14 +38,14 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/dionaroast
|
||||
name = "roast diona"
|
||||
desc = "It's like an enormous, leathery carrot. With an eye."
|
||||
desc = "It's like an enormous leathery carrot... With an eye."
|
||||
icon_state = "dionaroast"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#75754B"
|
||||
list_reagents = list("plantmatter" = 4, "nutriment" = 2, "radium" = 2, "vitamin" = 4)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tofurkey
|
||||
name = "Tofurkey"
|
||||
name = "tofurkey"
|
||||
desc = "A fake turkey made from tofu."
|
||||
icon_state = "tofurkey"
|
||||
filling_color = "#FFFEE0"
|
||||
@@ -97,7 +97,7 @@
|
||||
list_reagents = list("nutriment" = 4)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/warmdonkpocket
|
||||
name = "Warm Donk-pocket"
|
||||
name = "warm Donk-pocket"
|
||||
desc = "The food of choice for the seasoned traitor."
|
||||
icon_state = "donkpocket"
|
||||
filling_color = "#DEDEAB"
|
||||
@@ -107,7 +107,7 @@
|
||||
M.reagents.add_reagent("omnizine", 15)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/warmdonkpocket_weak
|
||||
name = "Lightly Warm Donk-pocket"
|
||||
name = "lukewarm Donk-pocket"
|
||||
desc = "The food of choice for the seasoned traitor. This one is lukewarm."
|
||||
icon_state = "donkpocket"
|
||||
filling_color = "#DEDEAB"
|
||||
@@ -135,7 +135,7 @@
|
||||
//////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/boiledslimecore
|
||||
name = "Boiled Slime Core"
|
||||
name = "boiled slime core"
|
||||
desc = "A boiled red thing."
|
||||
icon_state = "boiledrorocore"
|
||||
bitesize = 3
|
||||
@@ -162,7 +162,7 @@
|
||||
..()
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/liquidfood
|
||||
name = "\improper LiquidFood Ration"
|
||||
name = "\improper LiquidFood ration"
|
||||
desc = "A prepackaged grey slurry of all the essential nutrients for a spacefarer on the go. Should this be crunchy?"
|
||||
icon_state = "liquidfood"
|
||||
trash = /obj/item/trash/liquidfood
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/spaghetti
|
||||
name = "Spaghetti"
|
||||
name = "spaghetti"
|
||||
desc = "A bundle of raw spaghetti."
|
||||
icon = 'icons/obj/food/pasta.dmi'
|
||||
icon_state = "spaghetti"
|
||||
@@ -12,7 +12,7 @@
|
||||
list_reagents = list("nutriment" = 1, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/macaroni
|
||||
name = "Macaroni twists"
|
||||
name = "macaroni twists"
|
||||
desc = "These are little twists of raw macaroni."
|
||||
icon = 'icons/obj/food/pasta.dmi'
|
||||
icon_state = "macaroni"
|
||||
@@ -25,8 +25,8 @@
|
||||
//////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/boiledspaghetti
|
||||
name = "Boiled Spaghetti"
|
||||
desc = "A plain dish of noodles, this sucks."
|
||||
name = "boiled spaghetti"
|
||||
desc = "A plain dish of noodles. This sucks."
|
||||
icon = 'icons/obj/food/pasta.dmi'
|
||||
icon_state = "spaghettiboiled"
|
||||
trash = /obj/item/trash/plate
|
||||
@@ -44,8 +44,8 @@
|
||||
list_reagents = list("nutriment" = 6, "tomatojuice" = 10, "vitamin" = 4)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meatballspaghetti
|
||||
name = "spaghetti & Meatballs"
|
||||
desc = "Now thats a nic'e meatball!"
|
||||
name = "spaghetti & meatballs"
|
||||
desc = "Now thats a nice'a meatball!"
|
||||
icon = 'icons/obj/food/pasta.dmi'
|
||||
icon_state = "meatballspaghetti"
|
||||
trash = /obj/item/trash/plate
|
||||
@@ -61,7 +61,7 @@
|
||||
list_reagents = list("nutriment" = 8, "synaptizine" = 10, "vitamin" = 6)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/macncheese
|
||||
name = "Macaroni cheese"
|
||||
name = "mac n cheese"
|
||||
desc = "One of the most comforting foods in the world. Apparently."
|
||||
trash = /obj/item/trash/snack_bowl
|
||||
icon = 'icons/obj/food/pasta.dmi'
|
||||
|
||||
@@ -9,14 +9,14 @@
|
||||
filling_color = "#BAA14C"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/pizza/margherita
|
||||
name = "Margherita"
|
||||
name = "margherita pizza"
|
||||
desc = "The golden standard of pizzas."
|
||||
icon_state = "pizzamargherita"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/margheritaslice
|
||||
list_reagents = list("nutriment" = 30, "tomatojuice" = 6, "vitamin" = 5)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/margheritaslice
|
||||
name = "Margherita slice"
|
||||
name = "margherita slice"
|
||||
desc = "A slice of the classic pizza."
|
||||
icon = 'icons/obj/food/pizza.dmi'
|
||||
icon_state = "pizzamargheritaslice"
|
||||
@@ -24,49 +24,49 @@
|
||||
list_reagents = list("nutriment" = 5)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/pizza/meatpizza
|
||||
name = "Meatpizza"
|
||||
name = "meat pizza"
|
||||
desc = "A pizza with meat topping."
|
||||
icon_state = "meatpizza"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/meatpizzaslice
|
||||
list_reagents = list("protein" = 30, "tomatojuice" = 6, "vitamin" = 8)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meatpizzaslice
|
||||
name = "Meatpizza slice"
|
||||
name = "meat pizza slice"
|
||||
desc = "A slice of a meaty pizza."
|
||||
icon = 'icons/obj/food/pizza.dmi'
|
||||
icon_state = "meatpizzaslice"
|
||||
filling_color = "#BAA14C"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/pizza/mushroompizza
|
||||
name = "Mushroompizza"
|
||||
name = "mushroom pizza"
|
||||
desc = "Very special pizza."
|
||||
icon_state = "mushroompizza"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/mushroompizzaslice
|
||||
list_reagents = list("plantmatter" = 30, "vitamin" = 5)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/mushroompizzaslice
|
||||
name = "Mushroompizza slice"
|
||||
name = "mushroom pizza slice"
|
||||
desc = "Maybe it is the last slice of pizza in your life."
|
||||
icon = 'icons/obj/food/pizza.dmi'
|
||||
icon_state = "mushroompizzaslice"
|
||||
filling_color = "#BAA14C"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza
|
||||
name = "Vegetable pizza"
|
||||
desc = "No one of Tomato Sapiens were harmed during making this pizza."
|
||||
name = "vegetable pizza"
|
||||
desc = "No Tomato Sapiens were harmed during the making of this pizza."
|
||||
icon_state = "vegetablepizza"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/vegetablepizzaslice
|
||||
list_reagents = list("plantmatter" = 25, "tomatojuice" = 6, "oculine" = 12, "vitamin" = 5)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/vegetablepizzaslice
|
||||
name = "Vegetable pizza slice"
|
||||
name = "vegetable pizza slice"
|
||||
desc = "A slice of the most green pizza of all pizzas not containing green ingredients."
|
||||
icon = 'icons/obj/food/pizza.dmi'
|
||||
icon_state = "vegetablepizzaslice"
|
||||
filling_color = "#BAA14C"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/pizza/hawaiianpizza
|
||||
name = "Hawaiian Pizza"
|
||||
name = "Hawaiian pizza"
|
||||
desc = "Love it or hate it, this pizza divides opinions. Complete with juicy pineapple."
|
||||
icon_state = "hawaiianpizza" //NEEDED
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/hawaiianpizzaslice
|
||||
@@ -80,7 +80,7 @@
|
||||
filling_color = "#e5b437"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/pizza/macpizza
|
||||
name = "Macaroni cheese pizza"
|
||||
name = "mac n cheese pizza"
|
||||
desc = "Gastronomists have yet to classify this dish as 'pizza'."
|
||||
icon_state = "macpizza"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/macpizzaslice
|
||||
@@ -88,7 +88,7 @@
|
||||
filling_color = "#ffe45d"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/macpizzaslice
|
||||
name = "Macaroni cheese pizza slice"
|
||||
name = "mac n cheese pizza slice"
|
||||
desc = "A delicious slice of pizza topped with macaroni cheese... wait, what the hell? Who would do this?!"
|
||||
icon = 'icons/obj/food/pizza.dmi'
|
||||
icon_state = "macpizzaslice"
|
||||
@@ -235,20 +235,20 @@
|
||||
|
||||
/obj/item/pizzabox/margherita/New()
|
||||
pizza = new /obj/item/reagent_containers/food/snacks/sliceable/pizza/margherita(src)
|
||||
boxtag = "Margherita Deluxe"
|
||||
boxtag = "margherita deluxe"
|
||||
|
||||
/obj/item/pizzabox/vegetable/New()
|
||||
pizza = new /obj/item/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza(src)
|
||||
boxtag = "Gourmet Vegatable"
|
||||
boxtag = "gourmet vegatable"
|
||||
|
||||
/obj/item/pizzabox/mushroom/New()
|
||||
pizza = new /obj/item/reagent_containers/food/snacks/sliceable/pizza/mushroompizza(src)
|
||||
boxtag = "Mushroom Special"
|
||||
boxtag = "mushroom special"
|
||||
|
||||
/obj/item/pizzabox/meat/New()
|
||||
pizza = new /obj/item/reagent_containers/food/snacks/sliceable/pizza/meatpizza(src)
|
||||
boxtag = "Meatlover's Supreme"
|
||||
boxtag = "meatlover's supreme"
|
||||
|
||||
/obj/item/pizzabox/hawaiian/New()
|
||||
pizza = new /obj/item/reagent_containers/food/snacks/sliceable/pizza/hawaiianpizza(src)
|
||||
boxtag = "Hawaiian Feast"
|
||||
boxtag = "Hawaiian feast"
|
||||
@@ -5,14 +5,14 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/brainburger
|
||||
name = "brainburger"
|
||||
desc = "A strange looking burger. It looks almost sentient."
|
||||
desc = "A strange looking burger. It appears almost sentient."
|
||||
icon_state = "brainburger"
|
||||
filling_color = "#F2B6EA"
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "prions" = 10, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/ghostburger
|
||||
name = "Ghost Burger"
|
||||
name = "ghost burger"
|
||||
desc = "Spooky! It doesn't look very filling."
|
||||
icon_state = "ghostburger"
|
||||
filling_color = "#FFF2FF"
|
||||
@@ -47,8 +47,8 @@
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tofuburger
|
||||
name = "Tofu Burger"
|
||||
desc = "What.. is that meat?"
|
||||
name = "tofu burger"
|
||||
desc = "Making this should probably be a criminal offense."
|
||||
icon_state = "tofuburger"
|
||||
filling_color = "#FFFEE0"
|
||||
bitesize = 3
|
||||
@@ -73,14 +73,14 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/xenoburger
|
||||
name = "xenoburger"
|
||||
desc = "Smells caustic. Tastes like heresy."
|
||||
desc = "Smells caustic and tastes like heresy."
|
||||
icon_state = "xburger"
|
||||
filling_color = "#43DE18"
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/clownburger
|
||||
name = "Clown Burger"
|
||||
name = "clown burger"
|
||||
desc = "This tastes funny..."
|
||||
icon_state = "clownburger"
|
||||
filling_color = "#FF00FF"
|
||||
@@ -88,7 +88,7 @@
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/mimeburger
|
||||
name = "Mime Burger"
|
||||
name = "mime burger"
|
||||
desc = "Its taste defies language."
|
||||
icon_state = "mimeburger"
|
||||
filling_color = "#FFFFFF"
|
||||
@@ -97,14 +97,14 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/baseballburger
|
||||
name = "home run baseball burger"
|
||||
desc = "It's still warm. The steam coming off of it looks like baseball."
|
||||
desc = "It's still warm. Batter up!"
|
||||
icon_state = "baseball"
|
||||
filling_color = "#CD853F"
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/spellburger
|
||||
name = "Spell Burger"
|
||||
name = "spell burger"
|
||||
desc = "This is absolutely Ei Nath."
|
||||
icon_state = "spellburger"
|
||||
filling_color = "#D505FF"
|
||||
@@ -112,15 +112,15 @@
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/bigbiteburger
|
||||
name = "Big Bite Burger"
|
||||
desc = "Forget the Big Mac. THIS is the future!"
|
||||
name = "BigBite burger"
|
||||
desc = "Forget the Big Mac, THIS is the future!"
|
||||
icon_state = "bigbiteburger"
|
||||
filling_color = "#E3D681"
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 10, "vitamin" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/superbiteburger
|
||||
name = "Super Bite Burger"
|
||||
name = "SuperBite burger"
|
||||
desc = "This is a mountain of a burger. FOOD!"
|
||||
icon_state = "superbiteburger"
|
||||
filling_color = "#CCA26A"
|
||||
@@ -128,8 +128,8 @@
|
||||
list_reagents = list("nutriment" = 40, "vitamin" = 5)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/jellyburger
|
||||
name = "Jelly Burger"
|
||||
desc = "Culinary delight..?"
|
||||
name = "jelly burger"
|
||||
desc = "Culinary delight...?"
|
||||
icon_state = "jellyburger"
|
||||
filling_color = "#B572AB"
|
||||
bitesize = 3
|
||||
@@ -146,7 +146,7 @@
|
||||
//////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sandwich
|
||||
name = "Sandwich"
|
||||
name = "sandwich"
|
||||
desc = "A grand creation of meat, cheese, bread, and several leaves of lettuce! Arthur Dent would be proud."
|
||||
icon_state = "sandwich"
|
||||
trash = /obj/item/trash/plate
|
||||
@@ -154,7 +154,7 @@
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/toastedsandwich
|
||||
name = "Toasted Sandwich"
|
||||
name = "toasted sandwich"
|
||||
desc = "Now if you only had a pepper bar."
|
||||
icon_state = "toastedsandwich"
|
||||
trash = /obj/item/trash/plate
|
||||
@@ -162,15 +162,15 @@
|
||||
list_reagents = list("nutriment" = 6, "carbon" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grilledcheese
|
||||
name = "Grilled Cheese Sandwich"
|
||||
desc = "Goes great with Tomato soup!"
|
||||
name = "grilled cheese sandwich"
|
||||
desc = "Goes great with tomato soup!"
|
||||
icon_state = "toastedsandwich"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#D9BE29"
|
||||
list_reagents = list("nutriment" = 7, "vitamin" = 1) //why make a regualr sandwhich when you can make grilled cheese, with this nutriment value?
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/jellysandwich
|
||||
name = "Jelly Sandwich"
|
||||
name = "jelly sandwich"
|
||||
desc = "You wish you had some peanut butter to go with this..."
|
||||
icon_state = "jellysandwich"
|
||||
trash = /obj/item/trash/plate
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
list_reagents = list("protein" = 3, "vitamin" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/salmonsteak
|
||||
name = "Salmon steak"
|
||||
desc = "A piece of freshly-grilled salmon meat."
|
||||
name = "salmon steak"
|
||||
desc = "A fillet of freshly-grilled salmon meat."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "salmonsteak"
|
||||
trash = /obj/item/trash/plate
|
||||
@@ -37,7 +37,7 @@
|
||||
list_reagents = list("protein" = 3, "vitamin" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/fishfingers
|
||||
name = "Fish Fingers"
|
||||
name = "fish fingers"
|
||||
desc = "A finger of fish."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "fishfingers"
|
||||
@@ -46,7 +46,7 @@
|
||||
list_reagents = list("nutriment" = 4)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/fishburger
|
||||
name = "Fillet -o- Carp Sandwich"
|
||||
name = "Fillet-O-Carp sandwich"
|
||||
desc = "Almost like a carp is yelling somewhere... Give me back that fillet -o- carp, give me that carp."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "fishburger"
|
||||
@@ -55,7 +55,7 @@
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cubancarp
|
||||
name = "Cuban Carp"
|
||||
name = "Cuban carp"
|
||||
desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!"
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "cubancarp"
|
||||
@@ -65,8 +65,8 @@
|
||||
list_reagents = list("nutriment" = 6, "capsaicin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/fishandchips
|
||||
name = "Fish and Chips"
|
||||
desc = "I do say so myself chap."
|
||||
name = "fish and chips"
|
||||
desc = "I do say so myself old chap. Indubitably!"
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "fishandchips"
|
||||
filling_color = "#E3D796"
|
||||
@@ -98,7 +98,7 @@
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/Ebi_maki
|
||||
name = "Ebi Makiroll"
|
||||
name = "ebi makiroll"
|
||||
desc = "A large unsliced roll of Ebi Sushi."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "Ebi_maki"
|
||||
@@ -108,7 +108,7 @@
|
||||
list_reagents = list("nutriment" = 8)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_Ebi
|
||||
name = "Ebi Sushi"
|
||||
name = "ebi sushi"
|
||||
desc = "A simple sushi consisting of cooked shrimp and rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Ebi"
|
||||
@@ -116,7 +116,7 @@
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/Ikura_maki
|
||||
name = "Ikura Makiroll"
|
||||
name = "ikura makiroll"
|
||||
desc = "A large unsliced roll of Ikura Sushi."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "Ikura_maki"
|
||||
@@ -126,7 +126,7 @@
|
||||
list_reagents = list("nutriment" = 8, "protein" = 4)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_Ikura
|
||||
name = "Ikura Sushi"
|
||||
name = "ikura sushi"
|
||||
desc = "A simple sushi consisting of salmon roe."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Ikura"
|
||||
@@ -134,7 +134,7 @@
|
||||
list_reagents = list("nutriment" = 2, "protein" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/Sake_maki
|
||||
name = "Sake Makiroll"
|
||||
name = "sake makiroll"
|
||||
desc = "A large unsliced roll of Ebi Sushi."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "Sake_maki"
|
||||
@@ -144,7 +144,7 @@
|
||||
list_reagents = list("nutriment" = 8)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_Sake
|
||||
name = "Sake Sushi"
|
||||
name = "sake sushi"
|
||||
desc = "A simple sushi consisting of raw salmon and rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Sake"
|
||||
@@ -152,7 +152,7 @@
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/SmokedSalmon_maki
|
||||
name = "Smoked Salmon Makiroll"
|
||||
name = "smoked salmon makiroll"
|
||||
desc = "A large unsliced roll of Smoked Salmon Sushi."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "SmokedSalmon_maki"
|
||||
@@ -162,7 +162,7 @@
|
||||
list_reagents = list("nutriment" = 8)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_SmokedSalmon
|
||||
name = "Smoked Salmon Sushi"
|
||||
name = "smoked salmon sushi"
|
||||
desc = "A simple sushi consisting of cooked salmon and rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_SmokedSalmon"
|
||||
@@ -170,7 +170,7 @@
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/Tamago_maki
|
||||
name = "Tamago Makiroll"
|
||||
name = "tamago makiroll"
|
||||
desc = "A large unsliced roll of Tamago Sushi."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "Tamago_maki"
|
||||
@@ -180,7 +180,7 @@
|
||||
list_reagents = list("nutriment" = 8)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_Tamago
|
||||
name = "Tamago Sushi"
|
||||
name = "tamago sushi"
|
||||
desc = "A simple sushi consisting of egg and rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Tamago"
|
||||
@@ -188,7 +188,7 @@
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/Inari_maki
|
||||
name = "Inari Makiroll"
|
||||
name = "inari makiroll"
|
||||
desc = "A large unsliced roll of Inari Sushi."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "Inari_maki"
|
||||
@@ -198,7 +198,7 @@
|
||||
list_reagents = list("nutriment" = 8)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_Inari
|
||||
name = "Inari Sushi"
|
||||
name = "inari sushi"
|
||||
desc = "A piece of fried tofu stuffed with rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Inari"
|
||||
@@ -206,7 +206,7 @@
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/Masago_maki
|
||||
name = "Masago Makiroll"
|
||||
name = "masago makiroll"
|
||||
desc = "A large unsliced roll of Masago Sushi."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "Masago_maki"
|
||||
@@ -216,7 +216,7 @@
|
||||
list_reagents = list("nutriment" = 8, "protein" = 4)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_Masago
|
||||
name = "Masago Sushi"
|
||||
name = "masago sushi"
|
||||
desc = "A simple sushi consisting of goldfish roe."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Masago"
|
||||
@@ -224,7 +224,7 @@
|
||||
list_reagents = list("nutriment" = 2, "protein" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/Tobiko_maki
|
||||
name = "Tobiko Makiroll"
|
||||
name = "tobiko makiroll"
|
||||
desc = "A large unsliced roll of Tobkio Sushi."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "Tobiko_maki"
|
||||
@@ -234,7 +234,7 @@
|
||||
list_reagents = list("nutriment" = 8, "protein" = 4)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_Tobiko
|
||||
name = "Tobiko Sushi"
|
||||
name = "tobiko sushi"
|
||||
desc = "A simple sushi consisting of shark roe."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Masago"
|
||||
@@ -242,7 +242,7 @@
|
||||
list_reagents = list("nutriment" = 2, "protein" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/TobikoEgg_maki
|
||||
name = "Tobiko and Egg Makiroll"
|
||||
name = "tobiko and egg makiroll"
|
||||
desc = "A large unsliced roll of Tobkio and Egg Sushi."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "TobikoEgg_maki"
|
||||
@@ -252,7 +252,7 @@
|
||||
list_reagents = list("nutriment" = 8, "protein" = 4)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_TobikoEgg
|
||||
name = "Tobiko and Egg Sushi"
|
||||
name = "tobiko and egg sushi"
|
||||
desc = "A sushi consisting of shark roe and an egg."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_TobikoEgg"
|
||||
@@ -260,7 +260,7 @@
|
||||
list_reagents = list("nutriment" = 2, "protein" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/Tai_maki
|
||||
name = "Tai Makiroll"
|
||||
name = "tai makiroll"
|
||||
desc = "A large unsliced roll of Tai Sushi."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "Tai_maki"
|
||||
@@ -270,7 +270,7 @@
|
||||
list_reagents = list("nutriment" = 8)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_Tai
|
||||
name = "Tai Sushi"
|
||||
name = "tai sushi"
|
||||
desc = "A simple sushi consisting of catfish and rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Tai"
|
||||
@@ -278,7 +278,7 @@
|
||||
list_reagents = list("nutriment" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sushi_Unagi
|
||||
name = "Unagi Sushi"
|
||||
name = "unagi sushi"
|
||||
desc = "A simple sushi consisting of eel and rice."
|
||||
icon = 'icons/obj/food/seafood.dmi'
|
||||
icon_state = "sushi_Hokki"
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
list_reagents = list("nutriment" = 5, "gravy" = 5, "mashedpotatoes" = 10, "vitamin" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/stuffing
|
||||
name = "Stuffing"
|
||||
name = "stuffing"
|
||||
desc = "Moist, peppery breadcrumbs for filling the body cavities of dead birds. Dig in!"
|
||||
icon_state = "stuffing"
|
||||
filling_color = "#C9AC83"
|
||||
@@ -88,7 +88,7 @@
|
||||
list_reagents = list("nutriment" = 6)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/boiledrice
|
||||
name = "Boiled Rice"
|
||||
name = "boiled rice"
|
||||
desc = "A boring dish of boring rice."
|
||||
icon_state = "boiledrice"
|
||||
trash = /obj/item/trash/snack_bowl
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/meatballsoup
|
||||
name = "Meatball soup"
|
||||
name = "meatball soup"
|
||||
desc = "You've got balls kid, BALLS!"
|
||||
icon_state = "meatballsoup"
|
||||
trash = /obj/item/trash/snack_bowl
|
||||
@@ -21,7 +21,7 @@
|
||||
list_reagents = list("nutriment" = 5, "slimejelly" = 5, "water" = 5, "vitamin" = 4)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/bloodsoup
|
||||
name = "Tomato soup"
|
||||
name = "tomato soup"
|
||||
desc = "Smells like copper."
|
||||
icon_state = "tomatosoup"
|
||||
filling_color = "#FF0000"
|
||||
@@ -29,7 +29,7 @@
|
||||
list_reagents = list("nutriment" = 2, "blood" = 10, "water" = 5, "vitamin" = 4)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/clownstears
|
||||
name = "Clown's Tears"
|
||||
name = "clown's tears"
|
||||
desc = "Not very funny."
|
||||
icon_state = "clownstears"
|
||||
filling_color = "#C4FBFF"
|
||||
@@ -37,7 +37,7 @@
|
||||
list_reagents = list("nutriment" = 4, "banana" = 5, "water" = 5, "vitamin" = 8)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/vegetablesoup
|
||||
name = "Vegetable soup"
|
||||
name = "vegetable soup"
|
||||
desc = "A true vegan meal." //TODO
|
||||
icon_state = "vegetablesoup"
|
||||
trash = /obj/item/trash/snack_bowl
|
||||
@@ -46,8 +46,8 @@
|
||||
list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 4)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/nettlesoup
|
||||
name = "Nettle soup"
|
||||
desc = "To think, the botanist would've beat you to death with one of these."
|
||||
name = "nettle soup"
|
||||
desc = "To think, the botanist would've beaten you to death with one of these."
|
||||
icon_state = "nettlesoup"
|
||||
trash = /obj/item/trash/snack_bowl
|
||||
filling_color = "#AFC4B5"
|
||||
@@ -84,7 +84,7 @@
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tomatosoup
|
||||
name = "Tomato Soup"
|
||||
name = "tomato soup"
|
||||
desc = "Drinking this feels like being a vampire! A tomato vampire..."
|
||||
icon_state = "tomatosoup"
|
||||
trash = /obj/item/trash/snack_bowl
|
||||
@@ -93,7 +93,7 @@
|
||||
list_reagents = list("nutriment" = 5, "tomatojuice" = 10, "vitamin" = 3)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/milosoup
|
||||
name = "Milosoup"
|
||||
name = "milosoup"
|
||||
desc = "The universe's best soup! Yum!!!"
|
||||
icon_state = "milosoup"
|
||||
trash = /obj/item/trash/snack_bowl
|
||||
@@ -128,7 +128,7 @@
|
||||
//////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/stew
|
||||
name = "Stew"
|
||||
name = "stew"
|
||||
desc = "A nice and warm stew. Healthy and strong."
|
||||
icon_state = "stew"
|
||||
filling_color = "#9E673A"
|
||||
@@ -136,7 +136,7 @@
|
||||
list_reagents = list("nutriment" = 10, "oculine" = 5, "tomatojuice" = 5, "vitamin" = 5)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/stewedsoymeat
|
||||
name = "Stewed Soy Meat"
|
||||
name = "stewed soy meat"
|
||||
desc = "Even non-vegetarians will LOVE this!"
|
||||
icon_state = "stewedsoymeat"
|
||||
trash = /obj/item/trash/plate
|
||||
@@ -148,7 +148,7 @@
|
||||
//////////////////////
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/hotchili
|
||||
name = "Hot Chili"
|
||||
name = "hot chili"
|
||||
desc = "A five alarm Texan Chili!"
|
||||
icon_state = "hotchili"
|
||||
trash = /obj/item/trash/snack_bowl
|
||||
@@ -157,7 +157,7 @@
|
||||
list_reagents = list("nutriment" = 5, "capsaicin" = 1, "tomatojuice" = 2, "vitamin" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/coldchili
|
||||
name = "Cold Chili"
|
||||
name = "cold chili"
|
||||
desc = "This slush is barely a liquid!"
|
||||
icon_state = "coldchili"
|
||||
filling_color = "#2B00FF"
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/badrecipe
|
||||
name = "Burned mess"
|
||||
name = "burned mess"
|
||||
desc = "Someone should be demoted from chef for this."
|
||||
icon_state = "badrecipe"
|
||||
filling_color = "#211F02"
|
||||
|
||||
@@ -50,6 +50,21 @@
|
||||
component_parts += new /obj/item/stock_parts/console_screen(null)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/mineral/ore_redemption/golem
|
||||
req_access = list(access_free_golems)
|
||||
req_access_reclaim = access_free_golems
|
||||
|
||||
/obj/machinery/mineral/ore_redemption/golem/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/circuitboard/ore_redemption/golem(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin(null)
|
||||
component_parts += new /obj/item/stock_parts/manipulator(null)
|
||||
component_parts += new /obj/item/stock_parts/micro_laser(null)
|
||||
component_parts += new /obj/item/assembly/igniter(null)
|
||||
component_parts += new /obj/item/stock_parts/console_screen(null)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/mineral/ore_redemption/Destroy()
|
||||
QDEL_NULL(files)
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
@@ -426,6 +441,32 @@
|
||||
new /datum/data/mining_equipment("Point Transfer Card", /obj/item/card/mining_point_card, 500),
|
||||
)
|
||||
|
||||
/obj/machinery/mineral/equipment_vendor/golem
|
||||
name = "golem ship equipment vendor"
|
||||
|
||||
/obj/machinery/mineral/equipment_vendor/golem/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/circuitboard/mining_equipment_vendor/golem(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin(null)
|
||||
component_parts += new /obj/item/stock_parts/console_screen(null)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/mineral/equipment_vendor/golem/Initialize()
|
||||
. = ..()
|
||||
desc += "\nIt seems a few selections have been added."
|
||||
prize_list += list(
|
||||
new /datum/data/mining_equipment("Extra Id", /obj/item/card/id/golem, 250),
|
||||
new /datum/data/mining_equipment("Science Backpack", /obj/item/storage/backpack/science, 250),
|
||||
new /datum/data/mining_equipment("Toolbelt", /obj/item/storage/belt/utility/full/multitool, 250),
|
||||
new /datum/data/mining_equipment("Monkey Cube", /obj/item/reagent_containers/food/snacks/monkeycube, 250),
|
||||
new /datum/data/mining_equipment("Royal Cape of the Liberator", /obj/item/bedsheet/rd/royal_cape, 500),
|
||||
new /datum/data/mining_equipment("Grey Slime Extract", /obj/item/slime_extract/grey, 1000),
|
||||
new /datum/data/mining_equipment("KA Trigger Modification Kit", /obj/item/borg/upgrade/modkit/trigger_guard, 1000),
|
||||
new /datum/data/mining_equipment("The Liberator's Legacy", /obj/item/storage/box/rndboards, 1500)
|
||||
)
|
||||
|
||||
/datum/data/mining_equipment/
|
||||
var/equipment_name = "generic"
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
outdoors = 1
|
||||
ambientsounds = list('sound/ambience/ambimine.ogg')
|
||||
|
||||
/area/mine/dangerous/explored/golem
|
||||
name = "Small Asteroid"
|
||||
|
||||
/area/mine/dangerous/unexplored
|
||||
name = "Mine"
|
||||
icon_state = "unexplored"
|
||||
|
||||
@@ -522,6 +522,17 @@ var/global/list/rockTurfEdgeCache = list(
|
||||
O.attackby(W,user)
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/stack/tile/plasteel) && isarea(loc))
|
||||
var/area/A = loc
|
||||
if(A.outdoors)
|
||||
to_chat(user, "<span class='warning'>You must define a room as part of the station using blueprints or an equivalent item first.</span>")
|
||||
return
|
||||
playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
|
||||
make_plating()
|
||||
icon_plating = "plating"
|
||||
icon_state = "plating"
|
||||
update_icon()
|
||||
|
||||
/turf/simulated/floor/plating/airless/asteroid/gets_drilled()
|
||||
if(!dug)
|
||||
gets_dug()
|
||||
|
||||
@@ -529,6 +529,13 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/language/abductor/golem
|
||||
name = "Golem Mindlink"
|
||||
desc = "Communicate with other alien alloy golems through a psychic link."
|
||||
|
||||
/datum/language/abductor/golem/check_special_condition(mob/living/carbon/human/other, mob/living/carbon/human/speaker)
|
||||
return TRUE
|
||||
|
||||
/datum/language/corticalborer
|
||||
name = "Cortical Link"
|
||||
desc = "Cortical borers possess a strange link between their tiny minds."
|
||||
|
||||
@@ -451,6 +451,8 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
continue
|
||||
if(istype(I, /obj/item/organ))
|
||||
continue
|
||||
if(I.flags & ABSTRACT)
|
||||
continue
|
||||
else
|
||||
failed++
|
||||
|
||||
|
||||
@@ -10,7 +10,8 @@ emp_act
|
||||
|
||||
|
||||
/mob/living/carbon/human/bullet_act(obj/item/projectile/P, def_zone)
|
||||
|
||||
if(!dna.species.bullet_act(P, src))
|
||||
return FALSE
|
||||
if(P.is_reflectable)
|
||||
if(check_reflect(def_zone)) // Checks if you've passed a reflection% check
|
||||
visible_message("<span class='danger'>The [P.name] gets reflected by [src]!</span>", \
|
||||
@@ -295,6 +296,8 @@ emp_act
|
||||
if(Iforce > 10 || Iforce >= 5 && prob(33))
|
||||
forcesay(GLOB.hit_appends) //forcesay checks stat already
|
||||
|
||||
dna.species.spec_attacked_by(I, user, affecting, user.a_intent, src)
|
||||
|
||||
//this proc handles being hit by a thrown atom
|
||||
/mob/living/carbon/human/hitby(atom/movable/AM, skipcatch = 0, hitpush = 1, blocked = 0)
|
||||
var/obj/item/I
|
||||
@@ -321,6 +324,8 @@ emp_act
|
||||
visible_message("<span class='danger'>[I] embeds itself in [src]'s [L.name]!</span>","<span class='userdanger'>[I] embeds itself in your [L.name]!</span>")
|
||||
hitpush = 0
|
||||
skipcatch = 1 //can't catch the now embedded item
|
||||
if(!blocked)
|
||||
dna.species.spec_hitby(AM, src)
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/human/proc/bloody_hands(var/mob/living/source, var/amount = 2)
|
||||
|
||||
@@ -360,6 +360,10 @@
|
||||
var/datum/unarmed_attack/attack = user.dna.species.unarmed
|
||||
|
||||
user.do_attack_animation(target, attack.animation_type)
|
||||
if(attack.harmless)
|
||||
playsound(target.loc, attack.attack_sound, 25, 1, -1)
|
||||
target.visible_message("<span class='danger'>[user] [pick(attack.attack_verb)]ed [target]!</span>")
|
||||
return FALSE
|
||||
add_attack_logs(user, target, "Melee attacked with fists", target.ckey ? null : ATKLOG_ALL)
|
||||
|
||||
if(!iscarbon(user))
|
||||
@@ -509,6 +513,7 @@
|
||||
var/miss_sound = 'sound/weapons/punchmiss.ogg'
|
||||
var/sharp = FALSE
|
||||
var/animation_type = ATTACK_EFFECT_PUNCH
|
||||
var/harmless = FALSE //if set to true, attacks won't be admin logged and punches will "hit" for no damage
|
||||
|
||||
/datum/unarmed_attack/diona
|
||||
attack_verb = list("lash", "bludgeon")
|
||||
@@ -719,6 +724,13 @@ It'll return null if the organ doesn't correspond, so include null checks when u
|
||||
if(abs(temperature - M.bodytemperature) > 10) //If our water and mob temperature varies by more than 10K, cool or/ heat them appropriately
|
||||
M.bodytemperature = (temperature + M.bodytemperature) * 0.5 //Approximation for gradual heating or cooling
|
||||
|
||||
/datum/species/proc/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H) //return TRUE if hit, FALSE if stopped/reflected/etc
|
||||
return TRUE
|
||||
|
||||
/datum/species/proc/spec_hitby(atom/movable/AM, mob/living/carbon/human/H)
|
||||
|
||||
/datum/species/proc/spec_attacked_by(obj/item/I, mob/living/user, obj/item/bodypart/affecting, intent, mob/living/carbon/human/H)
|
||||
|
||||
/proc/get_random_species(species_name = FALSE) // Returns a random non black-listed or hazardous species, either as a string or datum
|
||||
var/static/list/random_species = list()
|
||||
if(!random_species.len)
|
||||
|
||||
@@ -5,8 +5,10 @@
|
||||
icobase = 'icons/mob/human_races/r_golem.dmi'
|
||||
deform = 'icons/mob/human_races/r_golem.dmi'
|
||||
|
||||
species_traits = list(NO_BREATHE, NO_BLOOD, RADIMMUNE, VIRUSIMMUNE, NOGUNS)
|
||||
|
||||
species_traits = list(NO_BREATHE, NO_BLOOD, NO_PAIN, RADIMMUNE, VIRUSIMMUNE, NOGUNS)
|
||||
brute_mod = 0.45 //55% damage reduction
|
||||
burn_mod = 0.45
|
||||
tox_mod = 0.45
|
||||
oxy_mod = 0
|
||||
|
||||
dietflags = DIET_OMNI //golems can eat anything because they are magic or something
|
||||
@@ -31,35 +33,654 @@
|
||||
|
||||
blood_color = "#515573"
|
||||
flesh_color = "#137E8F"
|
||||
skinned_type = /obj/item/stack/sheet/metal
|
||||
slowdown = 3
|
||||
siemens_coeff = 0
|
||||
|
||||
blacklisted = TRUE // To prevent golem subtypes from overwhelming the odds when random species changes, only the Random Golem type can be chosen
|
||||
dangerous_existence = TRUE
|
||||
|
||||
has_organ = list(
|
||||
"brain" = /obj/item/organ/internal/brain/golem
|
||||
"brain" = /obj/item/organ/internal/brain/golem,
|
||||
"adamantine_resonator" = /obj/item/organ/internal/adamantine_resonator
|
||||
) //Has standard darksight of 2.
|
||||
|
||||
suicide_messages = list(
|
||||
"is crumbling into dust!",
|
||||
"is smashing their body apart!")
|
||||
|
||||
var/golem_colour = rgb(170, 170, 170)
|
||||
var/info_text = "As an <span class='danger'>Iron Golem</span>, you don't have any special traits."
|
||||
var/random_eligible = TRUE
|
||||
var/prefix = "Iron"
|
||||
var/list/special_names = list("Tarkus")
|
||||
var/human_surname_chance = 3
|
||||
var/special_name_chance = 5
|
||||
var/owner //dobby is a free golem
|
||||
|
||||
/datum/species/golem/get_random_name()
|
||||
var/golem_surname = pick(GLOB.golem_names)
|
||||
// 3% chance that our golem has a human surname, because cultural contamination
|
||||
if(prob(human_surname_chance))
|
||||
golem_surname = pick(GLOB.last_names)
|
||||
else if(special_names && special_names.len && prob(special_name_chance))
|
||||
golem_surname = pick(special_names)
|
||||
|
||||
var/golem_name = "[prefix] [golem_surname]"
|
||||
return golem_name
|
||||
|
||||
/datum/species/golem/on_species_gain(mob/living/carbon/human/H)
|
||||
..()
|
||||
if(H.mind)
|
||||
H.mind.assigned_role = "Golem"
|
||||
H.mind.special_role = SPECIAL_ROLE_GOLEM
|
||||
H.real_name = "adamantine golem ([rand(1, 1000)])"
|
||||
if(owner)
|
||||
H.mind.special_role = SPECIAL_ROLE_GOLEM
|
||||
else
|
||||
H.mind.special_role = SPECIAL_ROLE_FREE_GOLEM
|
||||
H.real_name = get_random_name()
|
||||
H.name = H.real_name
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/golem(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/golem(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/golem(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/golem(H), slot_wear_mask)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/golem(H), slot_gloves)
|
||||
H.regenerate_icons()
|
||||
to_chat(H, info_text)
|
||||
|
||||
//Random Golem
|
||||
|
||||
////////Adamantine Golem stuff I dunno where else to put it
|
||||
/datum/species/golem/random
|
||||
name = "Random Golem"
|
||||
blacklisted = FALSE
|
||||
dangerous_existence = FALSE
|
||||
var/static/list/random_golem_types
|
||||
|
||||
/datum/species/golem/random/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
..()
|
||||
if(!random_golem_types)
|
||||
random_golem_types = subtypesof(/datum/species/golem) - type
|
||||
for(var/V in random_golem_types)
|
||||
var/datum/species/golem/G = V
|
||||
if(!initial(G.random_eligible))
|
||||
random_golem_types -= G
|
||||
var/datum/species/golem/golem_type = pick(random_golem_types)
|
||||
var/mob/living/carbon/human/H = C
|
||||
H.set_species(golem_type)
|
||||
|
||||
//Golem subtypes
|
||||
|
||||
//Leader golems, can resonate to communicate with all other golems
|
||||
/datum/species/golem/adamantine
|
||||
name = "Adamantine Golem"
|
||||
skinned_type = /obj/item/stack/sheet/mineral/adamantine
|
||||
has_organ = list(
|
||||
"brain" = /obj/item/organ/internal/brain/golem,
|
||||
"adamantine_resonator" = /obj/item/organ/internal/adamantine_resonator,
|
||||
"vocal_cords" = /obj/item/organ/internal/vocal_cords/adamantine
|
||||
)
|
||||
golem_colour = rgb(68, 238, 221)
|
||||
info_text = "As an <span class='danger'>Adamantine Golem</span>, you possess special vocal cords allowing you to \"resonate\" messages to all golems."
|
||||
prefix = "Adamantine"
|
||||
special_names = null
|
||||
|
||||
//The suicide bombers of golemkind
|
||||
/datum/species/golem/plasma
|
||||
name = "Plasma Golem"
|
||||
skinned_type = /obj/item/stack/ore/plasma
|
||||
golem_colour = rgb(170, 51, 221)
|
||||
heat_level_1 = 360
|
||||
heat_level_2 = 400
|
||||
heat_level_3 = 460
|
||||
info_text = "As a <span class='danger'>Plasma Golem</span>, you burn easily. Be careful, if you get hot enough while burning, you'll blow up!"
|
||||
heatmod = 0 //fine until they blow up
|
||||
prefix = "Plasma"
|
||||
special_names = list("Flood", "Fire", "Bar", "Man")
|
||||
var/boom_warning = FALSE
|
||||
var/datum/action/innate/ignite/ignite
|
||||
|
||||
/datum/species/golem/plasma/handle_life(mob/living/carbon/human/H)
|
||||
if(H.bodytemperature > 750)
|
||||
if(!boom_warning && H.on_fire)
|
||||
to_chat(H, "<span class='userdanger'>You feel like you could blow up at any moment!</span>")
|
||||
boom_warning = TRUE
|
||||
else
|
||||
if(boom_warning)
|
||||
to_chat(H, "<span class='notice'>You feel more stable.</span>")
|
||||
boom_warning = FALSE
|
||||
|
||||
if(H.bodytemperature > 850 && H.on_fire && prob(25))
|
||||
explosion(get_turf(H), 1, 2, 4, flame_range = 5)
|
||||
if(H)
|
||||
H.gib()
|
||||
if(H.fire_stacks < 2) //flammable
|
||||
H.adjust_fire_stacks(1)
|
||||
..()
|
||||
|
||||
/datum/species/golem/plasma/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
..()
|
||||
if(ishuman(C))
|
||||
ignite = new
|
||||
ignite.Grant(C)
|
||||
|
||||
/datum/species/golem/plasma/on_species_loss(mob/living/carbon/C)
|
||||
if(ignite)
|
||||
ignite.Remove(C)
|
||||
..()
|
||||
|
||||
/datum/action/innate/ignite
|
||||
name = "Ignite"
|
||||
desc = "Set yourself aflame, bringing yourself closer to exploding!"
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
button_icon_state = "sacredflame"
|
||||
|
||||
/datum/action/innate/ignite/Activate()
|
||||
if(ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(H.fire_stacks)
|
||||
to_chat(owner, "<span class='notice'>You ignite yourself!</span>")
|
||||
else
|
||||
to_chat(owner, "<span class='warning'>You try to ignite yourself, but fail!</span>")
|
||||
H.IgniteMob() //firestacks are already there passively
|
||||
|
||||
//Harder to hurt
|
||||
/datum/species/golem/diamond
|
||||
name = "Diamond Golem"
|
||||
golem_colour = rgb(0, 255, 255)
|
||||
brute_mod = 0.3 //70% damage reduction up from 55%
|
||||
burn_mod = 0.3
|
||||
tox_mod = 0.3
|
||||
skinned_type = /obj/item/stack/ore/diamond
|
||||
info_text = "As a <span class='danger'>Diamond Golem</span>, you are more resistant than the average golem."
|
||||
prefix = "Diamond"
|
||||
special_names = list("Back")
|
||||
|
||||
//Faster but softer and less armoured
|
||||
/datum/species/golem/gold
|
||||
name = "Gold Golem"
|
||||
golem_colour = rgb(204, 204, 0)
|
||||
slowdown = 2
|
||||
brute_mod = 0.75 //25% damage reduction down from 55%
|
||||
burn_mod = 0.75
|
||||
tox_mod = 0.75
|
||||
skinned_type = /obj/item/stack/ore/gold
|
||||
info_text = "As a <span class='danger'>Gold Golem</span>, you are faster but less resistant than the average golem."
|
||||
prefix = "Golden"
|
||||
special_names = list("Boy")
|
||||
|
||||
//Heavier, thus higher chance of stunning when punching
|
||||
/datum/species/golem/silver
|
||||
name = "Silver Golem"
|
||||
golem_colour = rgb(221, 221, 221)
|
||||
punchstunthreshold = 9 //60% chance, from 40%
|
||||
skinned_type = /obj/item/stack/ore/silver
|
||||
info_text = "As a <span class='danger'>Silver Golem</span>, your attacks have a higher chance of stunning."
|
||||
prefix = "Silver"
|
||||
special_names = list("Surfer", "Chariot", "Lining")
|
||||
|
||||
//Harder to stun, deals more damage, but it's even slower
|
||||
/datum/species/golem/plasteel
|
||||
name = "Plasteel Golem"
|
||||
golem_colour = rgb(187, 187, 187)
|
||||
stun_mod = 0.4
|
||||
punchdamagelow = 12
|
||||
punchdamagehigh = 21
|
||||
punchstunthreshold = 18 //still 40% stun chance
|
||||
slowdown = 5 //diona speed
|
||||
skinned_type = /obj/item/stack/ore/iron
|
||||
info_text = "As a <span class='danger'>Plasteel Golem</span>, you are slower, but harder to stun, and hit very hard when punching."
|
||||
prefix = "Plasteel"
|
||||
special_names = null
|
||||
unarmed_type = /datum/unarmed_attack/golem/plasteel
|
||||
|
||||
/datum/unarmed_attack/golem/plasteel
|
||||
attack_verb = list("smash")
|
||||
attack_sound = 'sound/effects/meteorimpact.ogg'
|
||||
|
||||
//More resistant to burn damage
|
||||
//Add ashstorm resistance if we ever port lavaland
|
||||
/datum/species/golem/titanium
|
||||
name = "Titanium Golem"
|
||||
golem_colour = rgb(255, 255, 255)
|
||||
skinned_type = /obj/item/stack/ore/titanium
|
||||
info_text = "As a <span class='danger'>Titanium Golem</span>, you are resistant to burn damage."
|
||||
burn_mod = 0.3
|
||||
prefix = "Titanium"
|
||||
special_names = list("Dioxide")
|
||||
|
||||
//Even more resistant to burn damage
|
||||
//Add ashstorm and lava resistance if we ever port lavaland
|
||||
/datum/species/golem/plastitanium
|
||||
name = "Plastitanium Golem"
|
||||
golem_colour = rgb(136, 136, 136)
|
||||
skinned_type = /obj/item/stack/ore/titanium
|
||||
info_text = "As a <span class='danger'>Plastitanium Golem</span>, you are very resistant to burn damage."
|
||||
burn_mod = 0.15
|
||||
prefix = "Plastitanium"
|
||||
special_names = null
|
||||
|
||||
//Fast and regenerates... but can only speak like an abductor
|
||||
/datum/species/golem/alloy
|
||||
name = "Alien Alloy Golem"
|
||||
golem_colour = rgb(51, 51, 51)
|
||||
skinned_type = /obj/item/stack/sheet/mineral/abductor
|
||||
language = "Golem Mindlink"
|
||||
default_language = "Golem Mindlink"
|
||||
slowdown = 2 //faster
|
||||
info_text = "As an <span class='danger'>Alloy Golem</span>, you are made of advanced alien materials: you are faster and regenerate over time. You are, however, only able to speak telepathically to other alloy golems."
|
||||
prefix = "Alien"
|
||||
special_names = list("Outsider", "Technology", "Watcher", "Stranger") //ominous and unknown
|
||||
|
||||
//Regenerates because self-repairing super-advanced alien tech
|
||||
/datum/species/golem/alloy/handle_life(mob/living/carbon/human/H)
|
||||
if(H.stat == DEAD)
|
||||
return
|
||||
H.adjustBruteLoss(-2)
|
||||
H.adjustFireLoss(-2)
|
||||
H.adjustToxLoss(-2)
|
||||
H.adjustOxyLoss(-2)
|
||||
|
||||
/datum/species/golem/alloy/can_understand(mob/other) //Can understand everyone, but they can only speak over their mindlink
|
||||
return TRUE
|
||||
|
||||
/datum/species/golem/alloy/on_species_gain(mob/living/carbon/human/H)
|
||||
..()
|
||||
H.languages.Cut()
|
||||
H.add_language("Golem Mindlink")
|
||||
|
||||
//Regenerates like dionas, less resistant
|
||||
/datum/species/golem/wood
|
||||
name = "Wood Golem"
|
||||
golem_colour = rgb(158, 112, 75)
|
||||
skinned_type = /obj/item/stack/sheet/wood
|
||||
species_traits = list(NO_BREATHE, NO_BLOOD, NO_PAIN, RADIMMUNE, VIRUSIMMUNE, NOGUNS, IS_PLANT)
|
||||
//Can burn and take damage from heat
|
||||
brute_mod = 0.7 //30% damage reduction down from 55%
|
||||
burn_mod = 1
|
||||
heatmod = 1.5
|
||||
|
||||
heat_level_1 = 300
|
||||
heat_level_2 = 340
|
||||
heat_level_3 = 400
|
||||
|
||||
dietflags = 0 //Regenerate nutrition in light, no diet necessary
|
||||
taste_sensitivity = TASTE_SENSITIVITY_NO_TASTE
|
||||
|
||||
info_text = "As a <span class='danger'>Wooden Golem</span>, you have plant-like traits: you take damage from extreme temperatures, can be set on fire, and have lower armor than a normal golem. You regenerate when in the light and wither in the darkness."
|
||||
prefix = "Wooden"
|
||||
special_names = list("Bark", "Willow", "Catalpa", "Oak", "Sap", "Twig", "Branch", "Maple", "Birch", "Elm", "Basswood", "Cottonwood", "Larch", "Aspen", "Ash", "Beech", "Buckeye", "Cedar", "Chestnut", "Cypress", "Fir", "Hawthorn", "Hazel", "Hickory", "Ironwood", "Juniper", "Leaf", "Mangrove", "Palm", "Pawpaw", "Pine", "Poplar", "Redwood", "Redbud", "Sassafras", "Spruce", "Sumac", "Trunk", "Walnut", "Yew")
|
||||
human_surname_chance = 0
|
||||
special_name_chance = 100
|
||||
|
||||
/datum/species/golem/wood/handle_life(mob/living/carbon/human/H)
|
||||
var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing
|
||||
if(isturf(H.loc)) //else, there's considered to be no light
|
||||
var/turf/T = H.loc
|
||||
light_amount = min(T.get_lumcount() * 10, 5) //hardcapped so it's not abused by having a ton of flashlights
|
||||
H.nutrition = min(H.nutrition+light_amount, NUTRITION_LEVEL_WELL_FED+10)
|
||||
|
||||
if(light_amount > 0)
|
||||
H.clear_alert("nolight")
|
||||
else
|
||||
H.throw_alert("nolight", /obj/screen/alert/nolight)
|
||||
|
||||
if((light_amount >= 5) && !H.suiciding) //if there's enough light, heal
|
||||
|
||||
H.adjustBruteLoss(-(light_amount/2))
|
||||
H.adjustFireLoss(-(light_amount/4))
|
||||
if(H.nutrition < NUTRITION_LEVEL_STARVING+50)
|
||||
H.take_overall_damage(10,0)
|
||||
..()
|
||||
|
||||
//Radioactive
|
||||
/datum/species/golem/uranium
|
||||
name = "Uranium Golem"
|
||||
golem_colour = rgb(119, 255, 0)
|
||||
skinned_type = /obj/item/stack/ore/uranium
|
||||
info_text = "As an <span class='danger'>Uranium Golem</span>, you emit radiation. It won't harm fellow golems, but organic lifeforms will be affected."
|
||||
prefix = "Uranium"
|
||||
special_names = list("Oxide", "Rod", "Meltdown")
|
||||
|
||||
/datum/species/golem/uranium/handle_life(mob/living/carbon/human/H)
|
||||
for(var/mob/living/L in range(2, H))
|
||||
if(isgolem(H))
|
||||
continue
|
||||
to_chat(L, "<span class='danger'>You are enveloped by a soft green glow emanating from [H].</span>")
|
||||
L.apply_effect(10, IRRADIATE)
|
||||
..()
|
||||
|
||||
//Ventcrawler
|
||||
/datum/species/golem/plastic
|
||||
name = "Plastic Golem"
|
||||
prefix = "Plastic"
|
||||
special_names = null
|
||||
golem_colour = rgb(255, 255, 255)
|
||||
skinned_type = /obj/item/stack/sheet/plastic
|
||||
info_text = "As a <span class='danger'>Plastic Golem</span>, you are capable of ventcrawling if you're naked."
|
||||
|
||||
/datum/species/golem/plastic/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
. = ..()
|
||||
C.ventcrawler = 1
|
||||
|
||||
/datum/species/golem/plastic/on_species_loss(mob/living/carbon/C)
|
||||
. = ..()
|
||||
C.ventcrawler = initial(C.ventcrawler)
|
||||
|
||||
//Immune to physical bullets and resistant to brute, but very vulnerable to burn damage. Dusts on death.
|
||||
/datum/species/golem/sand
|
||||
name = "Sand Golem"
|
||||
golem_colour = rgb(255, 220, 143)
|
||||
skinned_type = /obj/item/stack/ore/glass //this is sand
|
||||
brute_mod = 0.25
|
||||
burn_mod = 3
|
||||
info_text = "As a <span class='danger'>Sand Golem</span>, you are immune to physical bullets and take very little brute damage, but are extremely vulnerable to burn damage and energy weapons. You will also turn to sand when dying, preventing any form of recovery."
|
||||
unarmed_type = /datum/unarmed_attack/golem/sand
|
||||
prefix = "Sand"
|
||||
special_names = list("Castle", "Bag", "Dune", "Worm", "Storm")
|
||||
|
||||
/datum/species/golem/sand/handle_death(mob/living/carbon/human/H)
|
||||
H.visible_message("<span class='danger'>[H] turns into a pile of sand!</span>")
|
||||
for(var/obj/item/W in H)
|
||||
H.unEquip(W)
|
||||
for(var/i=1, i <= rand(3, 5), i++)
|
||||
new /obj/item/stack/ore/glass(get_turf(H))
|
||||
qdel(H)
|
||||
|
||||
/datum/species/golem/sand/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
|
||||
if(!(P.original == H && P.firer == H))
|
||||
if(P.flag == "bullet" || P.flag == "bomb")
|
||||
playsound(H, 'sound/effects/shovel_dig.ogg', 70, 1)
|
||||
H.visible_message("<span class='danger'>The [P.name] sinks harmlessly in [H]'s sandy body!</span>", \
|
||||
"<span class='userdanger'>The [P.name] sinks harmlessly in [H]'s sandy body!</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/unarmed_attack/golem/sand
|
||||
attack_sound = 'sound/effects/shovel_dig.ogg'
|
||||
|
||||
//Reflects lasers and resistant to burn damage, but very vulnerable to brute damage. Shatters on death.
|
||||
/datum/species/golem/glass
|
||||
name = "Glass Golem"
|
||||
golem_colour = rgb(90, 150, 180)
|
||||
skinned_type = /obj/item/shard
|
||||
brute_mod = 3 //very fragile
|
||||
burn_mod = 0.25
|
||||
info_text = "As a <span class='danger'>Glass Golem</span>, you reflect lasers and energy weapons, and are very resistant to burn damage. However, you are extremely vulnerable to brute damage. On death, you'll shatter beyond any hope of recovery."
|
||||
unarmed_type = /datum/unarmed_attack/golem/glass
|
||||
prefix = "Glass"
|
||||
special_names = list("Lens", "Prism", "Fiber", "Bead")
|
||||
|
||||
/datum/species/golem/glass/handle_death(mob/living/carbon/human/H)
|
||||
playsound(H, "shatter", 70, 1)
|
||||
H.visible_message("<span class='danger'>[H] shatters!</span>")
|
||||
for(var/obj/item/W in H)
|
||||
H.unEquip(W)
|
||||
for(var/i=1, i <= rand(3, 5), i++)
|
||||
new /obj/item/shard(get_turf(H))
|
||||
qdel(H)
|
||||
|
||||
/datum/species/golem/glass/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
|
||||
if(!(P.original == H && P.firer == H)) //self-shots don't reflect
|
||||
if(P.is_reflectable)
|
||||
H.visible_message("<span class='danger'>The [P.name] gets reflected by [H]'s glass skin!</span>", \
|
||||
"<span class='userdanger'>The [P.name] gets reflected by [H]'s glass skin!</span>")
|
||||
if(P.starting)
|
||||
var/new_x = P.starting.x + pick(0, 0, 0, 0, 0, -1, 1, -2, 2)
|
||||
var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2)
|
||||
var/turf/curloc = get_turf(H)
|
||||
|
||||
// redirect the projectile
|
||||
P.firer = src
|
||||
P.original = locate(new_x, new_y, P.z)
|
||||
P.starting = curloc
|
||||
P.current = curloc
|
||||
P.yo = new_y - curloc.y
|
||||
P.xo = new_x - curloc.x
|
||||
P.Angle = null
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/unarmed_attack/golem/glass
|
||||
attack_sound = 'sound/effects/glassbr2.ogg'
|
||||
|
||||
//Teleports when hit or when it wants to
|
||||
/datum/species/golem/bluespace
|
||||
name = "Bluespace Golem"
|
||||
golem_colour = rgb(51, 51, 255)
|
||||
skinned_type = /obj/item/stack/ore/bluespace_crystal
|
||||
info_text = "As a <span class='danger'>Bluespace Golem</span>, you are spatially unstable: You will teleport when hit, and you can teleport manually at a long distance."
|
||||
prefix = "Bluespace"
|
||||
special_names = list("Crystal", "Polycrystal")
|
||||
unarmed_type = /datum/unarmed_attack/golem/bluespace
|
||||
|
||||
var/datum/action/innate/unstable_teleport/unstable_teleport
|
||||
var/teleport_cooldown = 100
|
||||
var/last_teleport = 0
|
||||
var/tele_range = 6
|
||||
|
||||
/datum/species/golem/bluespace/proc/reactive_teleport(mob/living/carbon/human/H)
|
||||
H.visible_message("<span class='warning'>[H] teleports!</span>", "<span class='danger'>You destabilize and teleport!</span>")
|
||||
var/list/turfs = new/list()
|
||||
for(var/turf/T in orange(tele_range, H))
|
||||
if(T.density)
|
||||
continue
|
||||
if(T.x>world.maxx-tele_range || T.x<tele_range)
|
||||
continue
|
||||
if(T.y>world.maxy-tele_range || T.y<tele_range)
|
||||
continue
|
||||
turfs += T
|
||||
if(!turfs.len)
|
||||
turfs += pick(/turf in orange(tele_range, H))
|
||||
var/turf/picked = pick(turfs)
|
||||
if(!isturf(picked))
|
||||
return
|
||||
if(H.buckled)
|
||||
H.buckled.unbuckle_mob()
|
||||
do_teleport(H, picked)
|
||||
return TRUE
|
||||
|
||||
/datum/species/golem/bluespace/spec_hitby(atom/movable/AM, mob/living/carbon/human/H)
|
||||
..()
|
||||
var/obj/item/I
|
||||
if(istype(AM, /obj/item))
|
||||
I = AM
|
||||
if(I.thrownby == H) //No throwing stuff at yourself to trigger the teleport
|
||||
return 0
|
||||
else
|
||||
reactive_teleport(H)
|
||||
|
||||
/datum/species/golem/bluespace/spec_attack_hand(mob/living/carbon/human/M, mob/living/carbon/human/H, datum/martial_art/attacker_style)
|
||||
..()
|
||||
if(world.time > last_teleport + teleport_cooldown && M != H && M.a_intent != INTENT_HELP)
|
||||
reactive_teleport(H)
|
||||
|
||||
/datum/species/golem/bluespace/spec_attacked_by(obj/item/I, mob/living/user, obj/item/bodypart/affecting, intent, mob/living/carbon/human/H)
|
||||
..()
|
||||
if(world.time > last_teleport + teleport_cooldown && user != H)
|
||||
reactive_teleport(H)
|
||||
|
||||
/datum/species/golem/bluespace/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
|
||||
if(world.time > last_teleport + teleport_cooldown)
|
||||
reactive_teleport(H)
|
||||
return TRUE
|
||||
|
||||
/datum/species/golem/bluespace/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
..()
|
||||
if(ishuman(C))
|
||||
unstable_teleport = new
|
||||
unstable_teleport.Grant(C)
|
||||
last_teleport = world.time
|
||||
|
||||
/datum/species/golem/bluespace/on_species_loss(mob/living/carbon/C)
|
||||
if(unstable_teleport)
|
||||
unstable_teleport.Remove(C)
|
||||
..()
|
||||
|
||||
/datum/action/innate/unstable_teleport
|
||||
name = "Unstable Teleport"
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
button_icon_state = "blink"
|
||||
icon_icon = 'icons/mob/actions/actions.dmi'
|
||||
var/cooldown = 150
|
||||
var/last_teleport = 0
|
||||
var/tele_range = 6
|
||||
|
||||
/datum/action/innate/unstable_teleport/IsAvailable()
|
||||
if(..())
|
||||
if(world.time > last_teleport + cooldown)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/datum/action/innate/unstable_teleport/Activate()
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.visible_message("<span class='warning'>[H] starts vibrating!</span>", "<span class='danger'>You start charging your bluespace core...</span>")
|
||||
playsound(get_turf(H), 'sound/weapons/flash.ogg', 25, 1)
|
||||
addtimer(CALLBACK(src, .proc/teleport, H), 15)
|
||||
|
||||
/datum/action/innate/unstable_teleport/proc/teleport(mob/living/carbon/human/H)
|
||||
H.visible_message("<span class='warning'>[H] teleports!</span>", "<span class='danger'>You teleport!</span>")
|
||||
var/list/turfs = new/list()
|
||||
for(var/turf/T in orange(tele_range, H))
|
||||
if(istype(T, /turf/space))
|
||||
continue
|
||||
if(T.density)
|
||||
continue
|
||||
if(T.x>world.maxx-tele_range || T.x<tele_range)
|
||||
continue
|
||||
if(T.y>world.maxy-tele_range || T.y<tele_range)
|
||||
continue
|
||||
turfs += T
|
||||
if(!turfs.len)
|
||||
turfs += pick(/turf in orange(tele_range, H))
|
||||
var/turf/picked = pick(turfs)
|
||||
if(!isturf(picked))
|
||||
return
|
||||
if(H.buckled)
|
||||
H.buckled.unbuckle_mob()
|
||||
do_teleport(H, picked)
|
||||
last_teleport = world.time
|
||||
UpdateButtonIcon() //action icon looks unavailable
|
||||
sleep(cooldown + 5)
|
||||
UpdateButtonIcon() //action icon looks available again
|
||||
|
||||
/datum/unarmed_attack/golem/bluespace
|
||||
attack_verb = "bluespace punch"
|
||||
attack_sound = 'sound/effects/phasein.ogg'
|
||||
|
||||
//honk
|
||||
/datum/species/golem/bananium
|
||||
name = "Bananium Golem"
|
||||
golem_colour = rgb(255, 255, 0)
|
||||
punchdamagelow = 0
|
||||
punchdamagehigh = 0
|
||||
punchstunthreshold = 1 //Harmless and can't stun
|
||||
skinned_type = /obj/item/stack/ore/bananium
|
||||
info_text = "As a <span class='danger'>Bananium Golem</span>, you are made for pranking. Your body emits natural honks, and you can barely even hurt people when punching them. Your skin also bleeds banana peels when damaged."
|
||||
prefix = "Bananium"
|
||||
special_names = null
|
||||
unarmed_type = /datum/unarmed_attack/golem/bananium
|
||||
|
||||
var/last_honk = 0
|
||||
var/honkooldown = 0
|
||||
var/last_banana = 0
|
||||
var/banana_cooldown = 100
|
||||
var/active = null
|
||||
|
||||
/datum/species/golem/bananium/on_species_gain(mob/living/carbon/human/H)
|
||||
..()
|
||||
last_banana = world.time
|
||||
last_honk = world.time
|
||||
H.job = "Clown"
|
||||
H.mutations.Add(COMIC)
|
||||
H.equip_to_slot_or_del(new /obj/item/reagent_containers/food/drinks/bottle/bottleofbanana(H), slot_r_store)
|
||||
H.equip_to_slot_or_del(new /obj/item/bikehorn(H), slot_l_store)
|
||||
|
||||
/datum/species/golem/bananium/get_random_name()
|
||||
var/clown_name = pick(GLOB.clown_names)
|
||||
var/golem_name = "[prefix] [clown_name]"
|
||||
return golem_name
|
||||
|
||||
/datum/species/golem/bananium/spec_attack_hand(mob/living/carbon/human/M, mob/living/carbon/human/H, datum/martial_art/attacker_style)
|
||||
..()
|
||||
if(world.time > last_banana + banana_cooldown && M != H && M.a_intent != INTENT_HELP)
|
||||
new/obj/item/grown/bananapeel/specialpeel(get_turf(H))
|
||||
last_banana = world.time
|
||||
|
||||
/datum/species/golem/bananium/spec_attacked_by(obj/item/I, mob/living/user, obj/item/bodypart/affecting, intent, mob/living/carbon/human/H)
|
||||
..()
|
||||
if(world.time > last_banana + banana_cooldown && user != H)
|
||||
new/obj/item/grown/bananapeel/specialpeel(get_turf(H))
|
||||
last_banana = world.time
|
||||
|
||||
/datum/species/golem/bananium/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
|
||||
if(world.time > last_banana + banana_cooldown)
|
||||
new/obj/item/grown/bananapeel/specialpeel(get_turf(H))
|
||||
last_banana = world.time
|
||||
return TRUE
|
||||
|
||||
/datum/species/golem/bananium/spec_hitby(atom/movable/AM, mob/living/carbon/human/H)
|
||||
..()
|
||||
var/obj/item/I
|
||||
if(istype(AM, /obj/item))
|
||||
I = AM
|
||||
if(I.thrownby == H) //No throwing stuff at yourself to make bananas
|
||||
return 0
|
||||
else
|
||||
new/obj/item/grown/bananapeel/specialpeel(get_turf(H))
|
||||
last_banana = world.time
|
||||
|
||||
/datum/species/golem/bananium/handle_life(mob/living/carbon/human/H)
|
||||
if(!active)
|
||||
if(world.time > last_honk + honkooldown)
|
||||
active = 1
|
||||
playsound(get_turf(H), 'sound/items/bikehorn.ogg', 50, 1)
|
||||
last_honk = world.time
|
||||
honkooldown = rand(20, 80)
|
||||
active = null
|
||||
..()
|
||||
|
||||
/datum/species/golem/bananium/handle_death(mob/living/carbon/human/H)
|
||||
playsound(get_turf(H), 'sound/misc/sadtrombone.ogg', 70, 0)
|
||||
|
||||
/datum/unarmed_attack/golem/bananium
|
||||
attack_verb = list("HONK")
|
||||
attack_sound = 'sound/items/airhorn2.ogg'
|
||||
animation_type = ATTACK_EFFECT_DISARM
|
||||
harmless = TRUE
|
||||
|
||||
//...
|
||||
/datum/species/golem/tranquillite
|
||||
name = "Tranquillite Golem"
|
||||
prefix = "Tranquillite"
|
||||
special_names = null
|
||||
golem_colour = rgb(255, 255, 255)
|
||||
skinned_type = /obj/item/stack/ore/tranquillite
|
||||
info_text = "As a <span class='danger'>Tranquillite Golem</span>, you are capable of creating invisible walls, and can regenerate by drinking your bottle of Nothing."
|
||||
unarmed_type = /datum/unarmed_attack/golem/tranquillite
|
||||
|
||||
/datum/species/golem/tranquillite/get_random_name()
|
||||
var/mime_name = pick(GLOB.mime_names)
|
||||
var/golem_name = "[prefix] [mime_name]"
|
||||
return golem_name
|
||||
|
||||
/datum/species/golem/tranquillite/on_species_gain(mob/living/carbon/human/H)
|
||||
..()
|
||||
H.job = "Mime"
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing(H), slot_r_store)
|
||||
H.equip_to_slot_or_del(new /obj/item/cane(H), slot_l_hand)
|
||||
if(H.mind)
|
||||
H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(null))
|
||||
H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak(null))
|
||||
H.mind.miming = TRUE
|
||||
|
||||
/datum/unarmed_attack/golem/tranquillite
|
||||
attack_sound = null
|
||||
miss_sound = null
|
||||
|
||||
//Golem abstract items
|
||||
|
||||
/obj/item/clothing/under/golem
|
||||
name = "adamantine skin"
|
||||
name = "golem skin"
|
||||
desc = "a golem's skin"
|
||||
icon_state = "golem"
|
||||
item_state = "golem"
|
||||
@@ -69,34 +690,39 @@
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/golem
|
||||
name = "adamantine shell"
|
||||
name = "golem shell"
|
||||
desc = "a golem's thick outter shell"
|
||||
icon_state = "golem"
|
||||
item_state = "golem"
|
||||
body_parts_covered = HEAD|UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES
|
||||
flags = ABSTRACT | NODROP | THICKMATERIAL
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.02
|
||||
body_parts_covered = HEAD | UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
flags_inv = HIDEGLOVES | HIDESHOES
|
||||
flags = STOPSPRESSUREDMAGE | ABSTRACT | NODROP | THICKMATERIAL
|
||||
flags_size = ONESIZEFITSALL
|
||||
armor = list(melee = 55, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
cold_protection = HEAD | UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0)
|
||||
|
||||
/obj/item/clothing/shoes/golem
|
||||
name = "golem's feet"
|
||||
desc = "sturdy adamantine feet"
|
||||
desc = "sturdy golem feet"
|
||||
icon_state = "golem"
|
||||
item_state = "golem"
|
||||
flags = ABSTRACT | NODROP
|
||||
|
||||
/obj/item/clothing/mask/gas/golem
|
||||
name = "golem's face"
|
||||
desc = "the imposing face of an adamantine golem"
|
||||
desc = "the imposing face of a golem"
|
||||
icon_state = "golem"
|
||||
item_state = "golem"
|
||||
unacidable = 1
|
||||
flags = ABSTRACT | NODROP
|
||||
flags_inv = HIDEEARS | HIDEEYES
|
||||
|
||||
/obj/item/clothing/gloves/golem
|
||||
name = "golem's hands"
|
||||
desc = "strong adamantine hands"
|
||||
desc = "strong golem hands"
|
||||
icon_state = "golem"
|
||||
item_state = null
|
||||
flags = ABSTRACT | NODROP
|
||||
|
||||
@@ -222,6 +222,10 @@ var/global/list/damage_icon_parts = list()
|
||||
base_icon.Blend(temp, ICON_OVERLAY)
|
||||
|
||||
if(!skeleton)
|
||||
if(isgolem(src))
|
||||
var/datum/species/golem/G = src.dna.species
|
||||
if(G.golem_colour)
|
||||
base_icon.ColorTone(G.golem_colour)
|
||||
if(husk)
|
||||
base_icon.ColorTone(husk_color_mod)
|
||||
else if(hulk)
|
||||
@@ -239,6 +243,7 @@ var/global/list/damage_icon_parts = list()
|
||||
var/mutable_appearance/new_base = mutable_appearance(base_icon, layer = -LIMBS_LAYER)
|
||||
human_icon_cache[icon_key] = new_base
|
||||
standing += new_base
|
||||
|
||||
//END CACHED ICON GENERATION.
|
||||
|
||||
overlays_standing[LIMBS_LAYER] = standing
|
||||
|
||||
@@ -67,6 +67,8 @@
|
||||
|
||||
med_hud_set_health()
|
||||
med_hud_set_status()
|
||||
if(!gibbed && !QDELETED(src))
|
||||
addtimer(CALLBACK(src, .proc/med_hud_set_status), (DEFIB_TIME_LIMIT * 10) + 1)
|
||||
callHook("death", list(src, gibbed))
|
||||
|
||||
for(var/s in ownedSoullinks)
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
|
||||
/mob/living/silicon/robot/drone/update_icons()
|
||||
overlays.Cut()
|
||||
if(stat == 0)
|
||||
if(stat == CONSCIOUS)
|
||||
overlays += "eyes-[icon_state]"
|
||||
else
|
||||
overlays -= "eyes"
|
||||
@@ -124,7 +124,7 @@
|
||||
|
||||
else if(istype(W, /obj/item/card/id)||istype(W, /obj/item/pda))
|
||||
|
||||
if(stat == 2)
|
||||
if(stat == DEAD)
|
||||
|
||||
if(!config.allow_drone_spawn || emagged || health < -35) //It's dead, Dave.
|
||||
to_chat(user, "<span class='warning'>The interface is fried, and a distressing burned smell wafts from the robot's interior. You're not rebooting this one.</span>")
|
||||
@@ -166,7 +166,7 @@
|
||||
..()
|
||||
|
||||
/mob/living/silicon/robot/drone/emag_act(user as mob)
|
||||
if(!client || stat == 2)
|
||||
if(!client || stat == DEAD)
|
||||
to_chat(user, "<span class='warning'>There's not much point subverting this heap of junk.</span>")
|
||||
return
|
||||
|
||||
@@ -223,12 +223,12 @@
|
||||
|
||||
/mob/living/silicon/robot/drone/death(gibbed)
|
||||
. = ..(gibbed)
|
||||
ghostize(can_reenter_corpse = 0)
|
||||
adjustBruteLoss(health)
|
||||
|
||||
|
||||
//CONSOLE PROCS
|
||||
/mob/living/silicon/robot/drone/proc/law_resync()
|
||||
if(stat != 2)
|
||||
if(stat != DEAD)
|
||||
if(emagged)
|
||||
to_chat(src, "<span class='warning'>You feel something attempting to modify your programming, but your hacked subroutines are unaffected.</span>")
|
||||
else
|
||||
@@ -237,7 +237,7 @@
|
||||
show_laws()
|
||||
|
||||
/mob/living/silicon/robot/drone/proc/shut_down(force=FALSE)
|
||||
if(stat == 2)
|
||||
if(stat == DEAD)
|
||||
return
|
||||
|
||||
if(emagged && !force)
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
var/dissipate_strength = 1 //How much energy do we lose?
|
||||
var/move_self = 1 //Do we move on our own?
|
||||
var/grav_pull = 4 //How many tiles out do we pull?
|
||||
move_resist = INFINITY //no, you don't get to push the singulo. Not even you OP wizard gateway statues
|
||||
var/consume_range = 0 //How many tiles out do we eat
|
||||
var/event_chance = 15 //Prob for event each tick
|
||||
var/target = null //its target. moves towards the target if it has one
|
||||
|
||||
@@ -531,9 +531,7 @@
|
||||
|
||||
/datum/chemical_reaction/slimegolem/on_reaction(datum/reagents/holder)
|
||||
feedback_add_details("slime_cores_used","[type]")
|
||||
var/obj/effect/golemrune/Z = new /obj/effect/golemrune
|
||||
Z.forceMove(get_turf(holder.my_atom))
|
||||
notify_ghosts("Golem rune created in [get_area(Z)].", source = Z)
|
||||
new /obj/item/stack/sheet/mineral/adamantine(get_turf(holder.my_atom))
|
||||
|
||||
//Bluespace
|
||||
/datum/chemical_reaction/slimefloor2
|
||||
|
||||
@@ -889,3 +889,13 @@
|
||||
materials = list(MAT_METAL = 1000)
|
||||
build_path = /obj/item/safe_internals
|
||||
category = list("initial", "Construction")
|
||||
|
||||
/datum/design/golem_shell
|
||||
name = "Golem Shell Construction"
|
||||
desc = "Allows for the construction of a Golem Shell."
|
||||
id = "golem"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 40000)
|
||||
build_path = /obj/item/golem_shell
|
||||
category = list("Imported")
|
||||
|
||||
|
||||
@@ -386,3 +386,13 @@ datum/tech/robotics
|
||||
name = default_name
|
||||
desc = default_desc
|
||||
blueprint = null
|
||||
|
||||
/obj/item/disk/design_disk/golem_shell
|
||||
name = "golem creation disk"
|
||||
desc = "A gift from the Liberator."
|
||||
icon_state = "datadisk1"
|
||||
|
||||
/obj/item/disk/design_disk/golem_shell/Initialize()
|
||||
. = ..()
|
||||
var/datum/design/golem_shell/G = new
|
||||
blueprint = G
|
||||
@@ -389,84 +389,6 @@
|
||||
if(!uses)
|
||||
qdel(src)
|
||||
|
||||
////////Adamantine Golem stuff I dunno where else to put it
|
||||
|
||||
/obj/effect/golemrune
|
||||
anchored = 1
|
||||
desc = "a strange rune used to create golems. It glows when spirits are nearby."
|
||||
name = "rune"
|
||||
icon = 'icons/obj/rune.dmi'
|
||||
icon_state = "golem"
|
||||
unacidable = 1
|
||||
layer = TURF_LAYER
|
||||
var/list/mob/dead/observer/ghosts[0]
|
||||
|
||||
/obj/effect/golemrune/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
/obj/effect/golemrune/process()
|
||||
if(ghosts.len>0)
|
||||
icon_state = "golem2"
|
||||
else
|
||||
icon_state = "golem"
|
||||
|
||||
/obj/effect/golemrune/attack_hand(mob/living/user)
|
||||
var/mob/dead/observer/ghost
|
||||
for(var/mob/dead/observer/O in loc)
|
||||
if(!check_observer(O))
|
||||
to_chat(O, "<span class='warning'>You are not eligible to become a golem.</span>")
|
||||
continue
|
||||
ghost = O
|
||||
break
|
||||
if(!ghost)
|
||||
to_chat(user, "The rune fizzles uselessly. There is no spirit nearby.")
|
||||
return
|
||||
var/mob/living/carbon/human/golem/G = new /mob/living/carbon/human/golem
|
||||
G.change_gender(pick(MALE,FEMALE))
|
||||
G.loc = src.loc
|
||||
G.key = ghost.key
|
||||
add_attack_logs(user, G, "Summoned as a golem")
|
||||
to_chat(G, "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve [user], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.")
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/golemrune/Topic(href,href_list)
|
||||
if("signup" in href_list)
|
||||
var/mob/dead/observer/O = locate(href_list["signup"])
|
||||
volunteer(O)
|
||||
|
||||
/obj/effect/golemrune/attack_ghost(var/mob/dead/observer/O)
|
||||
if(!O)
|
||||
return
|
||||
volunteer(O)
|
||||
|
||||
/obj/effect/golemrune/proc/check_observer(var/mob/dead/observer/O)
|
||||
if(!O)
|
||||
return FALSE
|
||||
if(!O.client)
|
||||
return FALSE
|
||||
if(O.mind && O.mind.current && O.mind.current.stat != DEAD)
|
||||
return FALSE
|
||||
if(!O.can_reenter_corpse)
|
||||
return FALSE
|
||||
if(cannotPossess(O))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/effect/golemrune/proc/volunteer(var/mob/dead/observer/O)
|
||||
if(O in ghosts)
|
||||
ghosts.Remove(O)
|
||||
to_chat(O, "<span class='warning'>You are no longer signed up to be a golem.</span>")
|
||||
else
|
||||
if(!check_observer(O))
|
||||
to_chat(O, "<span class='warning'>You are not eligible to become a golem.</span>")
|
||||
return
|
||||
ghosts.Add(O)
|
||||
to_chat(O, "<span class='notice'>You are signed up to be a golem.</span>")
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/effect/timestop
|
||||
anchored = 1
|
||||
name = "chronofield"
|
||||
|
||||
@@ -837,7 +837,10 @@
|
||||
req_access = list(access_cent_general)
|
||||
shuttleId = "specops"
|
||||
possible_destinations = "specops_home;specops_away"
|
||||
<<<<<<< HEAD
|
||||
resistance_flags = INDESTRUCTIBLE
|
||||
=======
|
||||
>>>>>>> refs/remotes/ParadiseSS13/master
|
||||
|
||||
/obj/machinery/computer/shuttle/white_ship
|
||||
name = "White Ship Console"
|
||||
|
||||
@@ -261,7 +261,7 @@
|
||||
|
||||
/obj/item/organ/internal/cyberimp/chest/reviver/on_life()
|
||||
if(reviving)
|
||||
if(owner.stat == UNCONSCIOUS)
|
||||
if(owner.stat == UNCONSCIOUS && (owner.sleeping == 0)) //!owner.sleeping didn't work for whatever dumb reason
|
||||
spawn(30)
|
||||
if(prob(90) && owner.getOxyLoss())
|
||||
owner.adjustOxyLoss(-3)
|
||||
|
||||
@@ -51,6 +51,35 @@ var/static/regex/multispin_words = regex("like a record baby")
|
||||
/obj/item/organ/internal/vocal_cords/proc/handle_speech(message) //change the message
|
||||
return message
|
||||
|
||||
/obj/item/organ/internal/adamantine_resonator
|
||||
name = "adamantine resonator"
|
||||
desc = "Fragments of adamantine exist in all golems, stemming from their origins as purely magical constructs. These are used to \"hear\" messages from their leaders."
|
||||
parent_organ = "head"
|
||||
slot = "adamantine_resonator"
|
||||
icon_state = "adamantine_resonator"
|
||||
|
||||
/obj/item/organ/internal/vocal_cords/adamantine
|
||||
name = "adamantine vocal cords"
|
||||
desc = "When adamantine resonates, it causes all nearby pieces of adamantine to resonate as well. Adamantine golems use this to broadcast messages to nearby golems."
|
||||
actions_types = list(/datum/action/item_action/organ_action/use/adamantine_vocal_cords)
|
||||
icon_state = "adamantine_cords"
|
||||
|
||||
/datum/action/item_action/organ_action/use/adamantine_vocal_cords/Trigger()
|
||||
if(!IsAvailable())
|
||||
return
|
||||
var/message = input(owner, "Resonate a message to all nearby golems.", "Resonate")
|
||||
if(QDELETED(src) || QDELETED(owner) || !message)
|
||||
return
|
||||
owner.say(".x[message]")
|
||||
|
||||
/obj/item/organ/internal/vocal_cords/adamantine/handle_speech(message)
|
||||
var/msg = "<span class='resonate'><span class='name'>[owner.real_name]</span> <span class='message'>resonates, \"[message]\"</span></span>"
|
||||
for(var/m in GLOB.player_list)
|
||||
if(iscarbon(m))
|
||||
var/mob/living/carbon/C = m
|
||||
if(C.get_organ_slot("adamantine_resonator"))
|
||||
to_chat(C, msg)
|
||||
|
||||
//Colossus drop, forces the listeners to obey certain commands
|
||||
/obj/item/organ/internal/vocal_cords/colossus
|
||||
name = "divine vocal cords"
|
||||
|
||||
Reference in New Issue
Block a user