Merge branch 'master' into shep-dev-looping-alarms
3
code/__defines/mobs_ch.dm
Normal file
@@ -0,0 +1,3 @@
|
||||
#define MARKING_NONDIGI_ONLY (1 << 0)
|
||||
#define MARKING_DIGITIGRADE_ONLY (1 << 1)
|
||||
#define MARKING_ALL_LEGS MARKING_NONDIGI_ONLY|MARKING_DIGITIGRADE_ONLY
|
||||
@@ -4,6 +4,10 @@
|
||||
var/directory_tag
|
||||
var/directory_erptag
|
||||
var/directory_ad
|
||||
//CHOMPEdit additions
|
||||
var/vantag_preference = VANTAG_NONE
|
||||
var/directory_gendertag
|
||||
var/directory_sexualitytag
|
||||
|
||||
/mob/living/mind_initialize()
|
||||
. = ..()
|
||||
@@ -12,3 +16,7 @@
|
||||
mind.directory_tag = client.prefs.directory_tag
|
||||
mind.directory_erptag = client.prefs.directory_erptag
|
||||
mind.directory_ad = client.prefs.directory_ad
|
||||
//CHOMPEdit additions
|
||||
mind.vantag_preference = client.prefs.vantag_preference
|
||||
mind.directory_gendertag = client.prefs.directory_gendertag
|
||||
mind.directory_sexualitytag = client.prefs.directory_sexualitytag
|
||||
|
||||
@@ -132,15 +132,15 @@
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spider/eggcluster/small
|
||||
spiders_min = 1
|
||||
spiders_max = 3
|
||||
spiders_min = 2 //CHOMP Edit
|
||||
spiders_max = 6 //CHOMP Edit
|
||||
|
||||
/obj/effect/spider/eggcluster/small/frost
|
||||
spider_type = /obj/effect/spider/spiderling/frost
|
||||
|
||||
/obj/effect/spider/eggcluster/royal
|
||||
spiders_min = 2
|
||||
spiders_max = 5
|
||||
spiders_max = 6 //CHOMP Edit
|
||||
spider_type = /obj/effect/spider/spiderling/varied
|
||||
|
||||
/obj/effect/spider/spiderling
|
||||
|
||||
@@ -88,8 +88,18 @@
|
||||
|
||||
/obj/item/device/taperecorder/hear_talk(mob/M, list/message_pieces, verb)
|
||||
var/msg = multilingual_to_message(message_pieces, requires_machine_understands = TRUE, with_capitalization = TRUE)
|
||||
//START OF CHOMPEDIT
|
||||
var/voice = "Unknown"
|
||||
if (M.type == /mob/living/carbon/human)
|
||||
{
|
||||
var/mob/living/carbon/human/H = M
|
||||
voice = H.voice
|
||||
}
|
||||
else
|
||||
voice = M.name
|
||||
//END OF CHOMPEDIT
|
||||
if(mytape && recording)
|
||||
mytape.record_speech("[M.name] [verb], \"[msg]\"")
|
||||
mytape.record_speech("[voice] [verb], \"[msg]\"") //CHOMP Edit
|
||||
|
||||
|
||||
/obj/item/device/taperecorder/see_emote(mob/M as mob, text, var/emote_type)
|
||||
|
||||
@@ -18,3 +18,4 @@
|
||||
|
||||
/obj/effect/floor_decal/snow/floor/pointy
|
||||
icon_state = "snowfloorpointy"
|
||||
|
||||
|
||||
@@ -34,9 +34,9 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
||||
data["personalVisibility"] = user.mind.show_in_directory
|
||||
data["personalTag"] = user.mind.directory_tag || "Unset"
|
||||
data["personalErpTag"] = user.mind.directory_erptag || "Unset"
|
||||
data["personalEventTag"] = vantag_choices_list[user.client.prefs.vantag_preference] //CHOMPEdit
|
||||
data["personalGenderTag"] = user.client.prefs.directory_gendertag || "Unset" // CHOMPStation Edit: Character Directory Update
|
||||
data["personalSexualityTag"] = user.client.prefs.directory_sexualitytag || "Unset" // CHOMPStation Edit: Character Directory Update
|
||||
data["personalEventTag"] = vantag_choices_list[user.mind.vantag_preference] //CHOMPEdit
|
||||
data["personalGenderTag"] = user.mind.directory_gendertag || "Unset" // CHOMPStation Edit: Character Directory Update
|
||||
data["personalSexualityTag"] = user.mind.directory_sexualitytag || "Unset" // CHOMPStation Edit: Character Directory Update
|
||||
else if (user?.client?.prefs)
|
||||
data["personalVisibility"] = user.client.prefs.show_in_directory
|
||||
data["personalTag"] = user.client.prefs.directory_tag || "Unset"
|
||||
@@ -62,9 +62,9 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
||||
var/species = null
|
||||
var/ooc_notes = null
|
||||
var/flavor_text = null
|
||||
var/gendertag = C.prefs.directory_gendertag || "Unset" // CHOMPStation Edit: Character Directory Update
|
||||
var/sexualitytag = C.prefs.directory_sexualitytag || "Unset" // CHOMPStation Edit: Character Directory Update
|
||||
var/eventtag = vantag_choices_list[C.prefs.vantag_preference] //CHOMPEdit
|
||||
var/gendertag = null // CHOMPStation Edit: Character Directory Update
|
||||
var/sexualitytag = null // CHOMPStation Edit: Character Directory Update
|
||||
var/eventtag = vantag_choices_list[VANTAG_NONE] //CHOMPEdit
|
||||
var/tag
|
||||
var/erptag
|
||||
var/character_ad
|
||||
@@ -72,10 +72,16 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
||||
tag = C.mob.mind.directory_tag || "Unset"
|
||||
erptag = C.mob.mind.directory_erptag || "Unset"
|
||||
character_ad = C.mob.mind.directory_ad
|
||||
gendertag = C.mob.mind.directory_gendertag || "Unset"
|
||||
sexualitytag = C.mob.mind.directory_sexualitytag || "Unset"
|
||||
eventtag = vantag_choices_list[C.mob.mind.vantag_preference]
|
||||
else
|
||||
tag = C.prefs.directory_tag || "Unset"
|
||||
erptag = C.prefs.directory_erptag || "Unset"
|
||||
character_ad = C.prefs.directory_ad
|
||||
gendertag = C.prefs.directory_gendertag || "Unset"
|
||||
sexualitytag = C.prefs.directory_sexualitytag || "Unset"
|
||||
eventtag = vantag_choices_list[C.prefs.vantag_preference]
|
||||
|
||||
//CHOMPEdit Start
|
||||
if(ishuman(C.mob))
|
||||
@@ -176,19 +182,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
||||
if(!new_tag)
|
||||
return
|
||||
return set_for_mind_or_prefs(user, action, new_tag, can_set_prefs, can_set_mind)
|
||||
// CHOMPStation Edit Start: Directory Update
|
||||
if("setGenderTag")
|
||||
var/list/new_gendertag = tgui_input_list(usr, "Pick a new Gender tag for the character directory. This is YOUR gender, not what you prefer.", "Character Gender Tag", GLOB.char_directory_gendertags)
|
||||
if(!new_gendertag)
|
||||
return
|
||||
usr?.client?.prefs?.directory_gendertag = new_gendertag
|
||||
return TRUE
|
||||
if("setSexualityTag")
|
||||
var/list/new_sexualitytag = tgui_input_list(usr, "Pick a new Sexuality/Orientation tag for the character directory", "Character Sexuality/Orientation Tag", GLOB.char_directory_sexualitytags)
|
||||
if(!new_sexualitytag)
|
||||
return
|
||||
usr?.client?.prefs?.directory_sexualitytag = new_sexualitytag
|
||||
return TRUE
|
||||
// CHOMPStation Edit End: Directory Update
|
||||
if("setErpTag")
|
||||
var/list/new_erptag = tgui_input_list(usr, "Pick a new ERP tag for the character directory", "Character ERP Tag", GLOB.char_directory_erptags)
|
||||
@@ -209,8 +202,17 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
||||
if(isnull(new_ad))
|
||||
return
|
||||
return set_for_mind_or_prefs(user, action, new_ad, can_set_prefs, can_set_mind)
|
||||
//CHOMPEdit start
|
||||
//CHOMPEdit begin
|
||||
// CHOMPStation Edit Start: Directory Update
|
||||
if("setGenderTag")
|
||||
var/list/new_gendertag = tgui_input_list(usr, "Pick a new Gender tag for the character directory. This is YOUR gender, not what you prefer.", "Character Gender Tag", GLOB.char_directory_gendertags)
|
||||
if(!new_gendertag)
|
||||
return
|
||||
return set_for_mind_or_prefs(user, action, new_gendertag, can_set_prefs, can_set_mind)
|
||||
if("setSexualityTag")
|
||||
var/list/new_sexualitytag = tgui_input_list(usr, "Pick a new Sexuality/Orientation tag for the character directory", "Character Sexuality/Orientation Tag", GLOB.char_directory_sexualitytags)
|
||||
if(!new_sexualitytag)
|
||||
return
|
||||
return set_for_mind_or_prefs(user, action, new_sexualitytag, can_set_prefs, can_set_mind)
|
||||
if("setEventTag")
|
||||
var/list/names_list = list()
|
||||
for(var/C in vantag_choices_list)
|
||||
@@ -218,9 +220,8 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
||||
var/list/new_eventtag = input(usr, "Pick your preference for event involvement", "Event Preference Tag", usr?.client?.prefs?.vantag_preference) as null|anything in names_list
|
||||
if(!new_eventtag)
|
||||
return
|
||||
usr?.client?.prefs?.vantag_preference = names_list[new_eventtag]
|
||||
return TRUE
|
||||
//CHOMPEdit end
|
||||
return set_for_mind_or_prefs(user, action, names_list[new_eventtag], can_set_prefs, can_set_mind)
|
||||
//CHOMPEdit end
|
||||
|
||||
/datum/character_directory/proc/set_for_mind_or_prefs(mob/user, action, new_value, can_set_prefs, can_set_mind)
|
||||
can_set_prefs &&= !!user.client.prefs
|
||||
@@ -253,3 +254,18 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
||||
if (can_set_mind)
|
||||
user.mind.directory_ad = new_value
|
||||
return TRUE
|
||||
if ("setEventTag")
|
||||
if (can_set_prefs)
|
||||
user.client.prefs.vantag_preference = new_value
|
||||
if (can_set_mind)
|
||||
user.mind.vantag_preference = new_value
|
||||
if ("setGenderTag")
|
||||
if (can_set_prefs)
|
||||
user.client.prefs.directory_gendertag = new_value
|
||||
if (can_set_mind)
|
||||
user.mind.directory_gendertag = new_value
|
||||
if ("setSexualityTag")
|
||||
if (can_set_prefs)
|
||||
user.client.prefs.directory_sexualitytag = new_value
|
||||
if (can_set_mind)
|
||||
user.mind.directory_sexualitytag = new_value
|
||||
@@ -46,6 +46,7 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lore News", /datum/event/lore_news, 400),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1, min_jobs = list(ASSIGNMENT_CARGO = 1)),
|
||||
// Spawns mice, lizards, or dud spiderlings
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 100, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_JANITOR = 100), 1),
|
||||
// Rot only weakens walls, not destroy them
|
||||
@@ -94,6 +95,7 @@
|
||||
// Radiation, but only in space.
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Solar Storm", /datum/event/solar_storm, 20, list(ASSIGNMENT_ENGINEER = 40, ASSIGNMENT_SECURITY = 20), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, -20, list(ASSIGNMENT_SECURITY = 30, ASSIGNMENT_HOS = 20, ASSIGNMENT_WARDEN = 20), 0, min_jobs = list(ASSIGNMENT_SECURITY = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 100), 1, min_jobs = list(ASSIGNMENT_MEDICAL = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Xenobiology Breach", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENCE = 100), 1, min_jobs = list(ASSIGNMENT_SCIENTIST = 1), min_jobs = list(ASSIGNMENT_SCIENTIST = 1, ASSIGNMENT_SECURITY =1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1),
|
||||
@@ -116,12 +118,14 @@
|
||||
available_events = list(
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 900),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 5, list(ASSIGNMENT_ENGINEER = 35), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, -100, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10, ASSIGNMENT_ENGINEER = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, -100, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10, ASSIGNMENT_ENGINEER = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, -110, list(ASSIGNMENT_SECURITY = 50, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, -110, list(ASSIGNMENT_ENGINEER = 50), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Metroid Infestation", /datum/event/metroid_infestation, -105, list(ASSIGNMENT_SECURITY = 30, ASSIGNMENT_SCIENCE = 20, ASSIGNMENT_HOS = 15, ASSIGNMENT_WARDEN = 15), 1 , min_jobs = list(ASSIGNMENT_SECURITY = 3, ASSIGNMENT_SCIENCE = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, -90, list(ASSIGNMENT_ENGINEER = 50, ASSIGNMENT_MEDICAL = 10, ASSIGNMENT_ANY = 1), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Metroid Infestation", /datum/event/metroid_infestation, -100, list(ASSIGNMENT_SECURITY = 30, ASSIGNMENT_SCIENCE = 20, ASSIGNMENT_HOS = 15, ASSIGNMENT_WARDEN = 15, ASSIGNMENT_ANY = 2), 1 , min_jobs = list(ASSIGNMENT_SECURITY = 2, ASSIGNMENT_SCIENCE = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 20, list(ASSIGNMENT_ENGINEER = 15), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spider Infestation", /datum/event/spider_infestation, -60, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10, ASSIGNMENT_ANY = 3), 0),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1, min_jobs = list(ASSIGNMENT_CARGO = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, -50, list(ASSIGNMENT_MEDICAL = 25), 1, min_jobs = list(ASSIGNMENT_MEDICAL = 2)),
|
||||
)
|
||||
add_disabled_events(list(
|
||||
@@ -129,7 +133,6 @@
|
||||
//Needs Xenobio containment breach fixed
|
||||
//new /datum/event_meta(EVENT_LEVEL_MAJOR, "Xenobiology Breach", /datum/event/prison_break/xenobiology, -10, list(ASSIGNMENT_SCIENCE = 30, ASSIGNMENT_ENGINEER = 20), 1),
|
||||
//new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1, min_jobs = list(ASSIGNMENT_CARGO = 1)),
|
||||
))
|
||||
|
||||
#undef ASSIGNMENT_ANY
|
||||
|
||||
@@ -6,9 +6,12 @@
|
||||
var/give_positions = 0
|
||||
|
||||
/datum/event/metroid_infestation/setup()
|
||||
if(prob(50)) //50% chance of the event to even occur if procced
|
||||
kill()
|
||||
return
|
||||
announceWhen = rand(announceWhen, announceWhen + 60)
|
||||
|
||||
spawncount = rand(1 * severity, 2 * severity)
|
||||
spawncount = rand(2 * severity, 4 * severity)
|
||||
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines)
|
||||
//CHOMPEdit: Added a couple areas to the exclusion. Also made this actually work.
|
||||
@@ -25,7 +28,15 @@
|
||||
/datum/event/metroid_infestation/start()
|
||||
while((spawncount >= 1) && vents.len)
|
||||
var/obj/vent = pick(vents)
|
||||
new /mob/living/simple_mob/metroid/juvenile/baby(get_turf(vent))
|
||||
var/spawn_metroids = pickweight(list(
|
||||
/mob/living/simple_mob/metroid/juvenile/baby = 60,
|
||||
/mob/living/simple_mob/metroid/juvenile/super = 30,
|
||||
/mob/living/simple_mob/metroid/juvenile/alpha = 10,
|
||||
/mob/living/simple_mob/metroid/juvenile/gamma = 3,
|
||||
/mob/living/simple_mob/metroid/juvenile/zeta = 2,
|
||||
/mob/living/simple_mob/metroid/juvenile/omega = 1,
|
||||
))
|
||||
new spawn_metroids(get_turf(vent))
|
||||
vents -= vent
|
||||
spawncount--
|
||||
vents.Cut()
|
||||
|
||||
@@ -6,8 +6,11 @@
|
||||
|
||||
|
||||
/datum/event/spider_infestation/setup()
|
||||
if(prob(75) && severity == 3) //CHOMP Add 75% chance of the event to even occur if chosen and is major severity
|
||||
kill()
|
||||
return
|
||||
announceWhen = rand(announceWhen, announceWhen + 60)
|
||||
spawncount = rand(6 * severity, 12 * severity) //spiderlings only have a 50% chance to grow big and strong //CHOMP Edit: Tripled amount spawned
|
||||
spawncount = rand(6 * severity, 14 * severity) //spiderlings only have a 50% chance to grow big and strong //CHOMP Edit: old: 2/4 new: 6/14
|
||||
sent_spiders_to_station = 0
|
||||
|
||||
/datum/event/spider_infestation/announce()
|
||||
@@ -29,6 +32,6 @@
|
||||
|
||||
while((spawncount >= 1) && vents.len)
|
||||
var/obj/vent = pick(vents)
|
||||
new /obj/effect/spider/spiderling/virgo(vent.loc) //VOREStation Edit - No nurses
|
||||
new /obj/effect/spider/spiderling(vent.loc) //VOREStation Edit - No nurses //Oh my JESUS CHRIST, this slipped past me. Literally no nurses. Well guess what, nurses are back.
|
||||
vents -= vent
|
||||
spawncount--
|
||||
|
||||
@@ -391,20 +391,23 @@
|
||||
/datum/trait/negative/reduced_biocompat_minor
|
||||
name = "Reduced Biocompatibility, Minor"
|
||||
desc = "For whatever reason, you're one of the unlucky few who don't get as much benefit from modern-day chemicals. Remember to note this down in your medical records! Chems are only 80% as effective on you!"
|
||||
cost = -1
|
||||
cost = -2
|
||||
var_changes = list("chem_strength_heal" = 0.8)
|
||||
can_take = ORGANICS
|
||||
|
||||
/datum/trait/negative/reduced_biocompat
|
||||
name = "Reduced Biocompatibility"
|
||||
desc = "For whatever reason, you're one of the unlucky few who don't get as much benefit from modern-day chemicals. Remember to note this down in your medical records! Chems are only 60% as effective on you!"
|
||||
cost = -4
|
||||
var_changes = list("chem_strength_heal" = 0.6)
|
||||
can_take = ORGANICS
|
||||
|
||||
/datum/trait/negative/reduced_biocompat_extreme
|
||||
name = "Reduced Biocompatibility, Major"
|
||||
desc = "For whatever reason, you're one of the unlucky few who don't get as much benefit from modern-day chemicals. Remember to note this down in your medical records! Chems are only 30% as effective on you!"
|
||||
cost = -8
|
||||
var_changes = list("chem_strength_heal" = 0.3)
|
||||
can_take = ORGANICS
|
||||
|
||||
// Rykkanote: Relocated these here as we're no longer a YW downstream.
|
||||
/datum/trait/negative/light_sensitivity
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
//Lets make this shit more sane-shark
|
||||
/hook/startup/proc/robot_modules_ch()
|
||||
//define OUR modules
|
||||
robot_modules["ExploreHound"] = /obj/item/weapon/robot_module/robot/exploration //Array define
|
||||
robot_module_types += "ExploreHound" //Add to global
|
||||
robot_modules["Honk-Hound"] = /obj/item/weapon/robot_module/robot/clerical/honkborg
|
||||
robot_modules["UnityHound"] = /obj/item/weapon/robot_module/robot/chound
|
||||
|
||||
|
||||
|
||||
//TFF 5/1/20 - Add Ore Scanner for mining drones
|
||||
/obj/item/weapon/robot_module/drone/mining/New()
|
||||
..()
|
||||
@@ -94,3 +104,70 @@
|
||||
R.verbs |= /mob/living/proc/shred_limb
|
||||
R.verbs |= /mob/living/silicon/robot/proc/rest_style
|
||||
..()
|
||||
|
||||
//Explo doggos
|
||||
/obj/item/weapon/robot_module/robot/exploration
|
||||
name = "ExploreHound"
|
||||
channels = list("Exploration" = 1)
|
||||
languages = list(
|
||||
LANGUAGE_SOL_COMMON = 1,
|
||||
LANGUAGE_UNATHI = 1,
|
||||
LANGUAGE_SIIK = 1,
|
||||
LANGUAGE_AKHANI = 1,
|
||||
LANGUAGE_SKRELLIAN = 1,
|
||||
LANGUAGE_SKRELLIANFAR = 0,
|
||||
LANGUAGE_ROOTLOCAL = 0,
|
||||
LANGUAGE_TRADEBAND = 1,
|
||||
LANGUAGE_GUTTER = 0,
|
||||
LANGUAGE_SCHECHI = 1,
|
||||
LANGUAGE_EAL = 1,
|
||||
LANGUAGE_TERMINUS = 1,
|
||||
LANGUAGE_SIGN = 0
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/exploration
|
||||
sprites = list(
|
||||
"ExploreHound" = "exploration",
|
||||
)
|
||||
can_be_pushed = 0
|
||||
/obj/item/weapon/robot_module/robot/exploration/New(var/mob/living/silicon/robot/R)
|
||||
src.modules += new /obj/item/weapon/dogborg/jaws/small(src)
|
||||
src.modules += new /obj/item/device/dogborg/boop_module(src)
|
||||
src.modules += new /obj/item/device/dogborg/sleeper/K9/exploration(src)
|
||||
src.modules += new /obj/item/weapon/gun/energy/locked/phasegun/unlocked/mounted/cyborg(src)
|
||||
src.modules += new /obj/item/device/cataloguer(src)
|
||||
src.modules += new /obj/item/roller_holder(src)
|
||||
src.modules += new /obj/item/weapon/gun/energy/taser/mounted/cyborg/flare(src)
|
||||
|
||||
src.emag = new /obj/item/weapon/dogborg/pounce(src)
|
||||
|
||||
R.can_buckle = 1
|
||||
R.icon = 'modular_chomp/icons/mob/widerobot_exp_ch.dmi'
|
||||
R.wideborg_dept = R.icon
|
||||
R.hands.icon = 'icons/mob/screen1_robot_vr.dmi'
|
||||
R.ui_style_vr = TRUE
|
||||
R.pixel_x = -16
|
||||
R.old_x = -16
|
||||
R.default_pixel_x = -16
|
||||
R.dogborg = TRUE
|
||||
R.vore_capacity = 1
|
||||
R.vore_capacity_ex = list("stomach" = 1)
|
||||
R.wideborg = TRUE
|
||||
..()
|
||||
|
||||
|
||||
|
||||
/obj/item/device/dogborg/sleeper/K9/exploration //The K9 portabrig
|
||||
name = "Store-Belly"
|
||||
desc = "Equipment for a ExploreHound unit. A mounted portable-storage device that holds supplies/person."
|
||||
icon_state = "sleeperb"
|
||||
injection_chems = null
|
||||
medsensor = FALSE
|
||||
recycles = TRUE
|
||||
max_item_count = 4
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/mounted/cyborg/flare
|
||||
name = "flare gun"
|
||||
desc = "A flare-gun"
|
||||
projectile_type = /obj/item/projectile/energy/flash/flare
|
||||
fire_sound = 'sound/weapons/tablehit1.ogg'
|
||||
@@ -72,8 +72,6 @@
|
||||
robot_modules["Service-Hound"] = /obj/item/weapon/robot_module/robot/clerical/butler/brodog
|
||||
robot_modules["BoozeHound"] = /obj/item/weapon/robot_module/robot/clerical/butler/booze
|
||||
robot_modules["KMine"] = /obj/item/weapon/robot_module/robot/miner/kmine
|
||||
robot_modules["UnityHound"] = /obj/item/weapon/robot_module/robot/chound //CHOMP Addition Unity
|
||||
robot_modules["Honk-Hound"] = /obj/item/weapon/robot_module/robot/clerical/honkborg //CHOMP Addition Honk
|
||||
robot_modules["Stray"] = /obj/item/weapon/robot_module/robot/stray
|
||||
robot_modules["TraumaHound"] = /obj/item/weapon/robot_module/robot/medical/traumahound
|
||||
return 1
|
||||
|
||||
@@ -14,6 +14,24 @@
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/protogen
|
||||
name = "Protogen"
|
||||
desc = ""
|
||||
icon = 'icons/mob/vore/ears_ch.dmi'
|
||||
icon_state = "protogen"
|
||||
extra_overlay = "protogen_fluff"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/miqote
|
||||
name = "Miqo'te"
|
||||
desc = ""
|
||||
icon = 'icons/mob/vore/ears_ch.dmi'
|
||||
icon_state = "miqote"
|
||||
extra_overlay = "miqote_inner"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/vale
|
||||
name = "VALE Model Ear Coloring"
|
||||
desc = ""
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
/datum/sprite_accessory/marking
|
||||
var/digitigrade_acceptance = MARKING_NONDIGI_ONLY
|
||||
var/digitigrade_icon = 'icons/mob/human_races/markings_digi_ch.dmi'
|
||||
|
||||
/datum/sprite_accessory/marking/ch
|
||||
icon = 'icons/mob/human_races/markings_ch.dmi'
|
||||
|
||||
@@ -149,65 +153,196 @@
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/protogen_snout
|
||||
name = "Protogen Snout"
|
||||
icon_state = "protogen_snout"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/hshark_snout
|
||||
name = "HShark Snout"
|
||||
icon_state = "hshark_snout"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/hshark_head
|
||||
name = "HShark Head"
|
||||
icon_state = "hshark"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/ram_horns
|
||||
name = "Ram Horns"
|
||||
icon_state = "ram_horns"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/neckfluff
|
||||
name = "Neck Fluff"
|
||||
icon_state = "neckfluff"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/husky_chest
|
||||
name = "Husky Chest"
|
||||
icon_state = "husky"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO, BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/fox_head
|
||||
name = "Fox Head"
|
||||
icon_state = "fox"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/fox_chest
|
||||
name = "Fox Chest"
|
||||
icon_state = "fox"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO, BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/fox_hsocks
|
||||
name = "Fox Hand Socks"
|
||||
icon_state = "fox"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_ARM, BP_R_HAND, BP_L_ARM, BP_L_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/fox_lsocks
|
||||
name = "Fox Leg Socks"
|
||||
icon_state = "fox"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG,BP_R_FOOT,BP_L_LEG,BP_L_FOOT)
|
||||
digitigrade_acceptance = MARKING_ALL_LEGS
|
||||
|
||||
/datum/sprite_accessory/marking/ch/tiger_head
|
||||
name = "Tiger Head"
|
||||
icon_state = "tiger"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/tiger_chest
|
||||
name = "Tiger Chest"
|
||||
icon_state = "tiger"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO, BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/tiger_arms
|
||||
name = "Tiger Arms"
|
||||
icon_state = "tiger"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_ARM, BP_R_HAND, BP_L_ARM, BP_L_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/tiger_legs
|
||||
name = "Tiger Legs"
|
||||
icon_state = "tiger"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG,BP_R_FOOT,BP_L_LEG,BP_L_FOOT)
|
||||
digitigrade_acceptance = MARKING_ALL_LEGS
|
||||
|
||||
/datum/sprite_accessory/marking/ch/gradient_arms
|
||||
name = "Gradient Arms"
|
||||
icon_state = "gradient"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_ARM, BP_R_HAND, BP_L_ARM, BP_L_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/gradient_legs
|
||||
name = "Gradient Legs"
|
||||
icon_state = "gradient"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG,BP_R_FOOT,BP_L_LEG,BP_L_FOOT)
|
||||
digitigrade_acceptance = MARKING_ALL_LEGS
|
||||
|
||||
/datum/sprite_accessory/marking/ch/hawk_talons
|
||||
name = "Hawk Talons (Legs)"
|
||||
icon_state = "hawktalon"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG,BP_R_FOOT,BP_L_LEG,BP_L_FOOT)
|
||||
digitigrade_acceptance = MARKING_ALL_LEGS
|
||||
|
||||
/datum/sprite_accessory/marking/ch/deer_hooves
|
||||
name = "Deer Hooves"
|
||||
icon_state = "deerhoof"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_FOOT, BP_L_FOOT)
|
||||
digitigrade_acceptance = MARKING_ALL_LEGS
|
||||
|
||||
/datum/sprite_accessory/marking/ch/frills_simple
|
||||
name = "Frills (Simple)"
|
||||
icon_state = "frills_simple"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/frills_short
|
||||
name = "Frills (Short)"
|
||||
icon_state = "frills_short"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/frills_aquatic
|
||||
name = "Frills (Aquatic)"
|
||||
icon_state = "frills_aqua"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/guilmonhead
|
||||
name = "Guilmon head"
|
||||
icon_state = "guilmon_head"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
name = "Guilmon head"
|
||||
icon_state = "guilmon_head"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/guilmonchest
|
||||
name = "Guilmon Chest"
|
||||
icon_state = "guilmon_chest"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO)
|
||||
name = "Guilmon Chest"
|
||||
icon_state = "guilmon_chest"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/guilmonchestmarking
|
||||
name = "Guilmon Chest Markings"
|
||||
icon_state = "guilmon_marking"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO)
|
||||
name = "Guilmon Chest Markings"
|
||||
icon_state = "guilmon_marking"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/guilmonarms
|
||||
name = "Guilmon arms"
|
||||
icon_state = "guilmon"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_ARM,BP_L_ARM,BP_R_HAND,BP_L_HAND)
|
||||
name = "Guilmon arms"
|
||||
icon_state = "guilmon"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_ARM,BP_L_ARM,BP_R_HAND,BP_L_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/guilmonRLeg
|
||||
name = "Guilmon Right leg"
|
||||
icon_state = "guilmon"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG)
|
||||
name = "Guilmon Right leg"
|
||||
icon_state = "guilmon"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/guilmonLleg
|
||||
name = "Guilmon Left leg"
|
||||
icon_state = "guilmon"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG)
|
||||
name = "Guilmon Left leg"
|
||||
icon_state = "guilmon"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/guilmondigiRleg1
|
||||
name = "Guilmon digigrade right leg 1"
|
||||
icon_state = "guilmon_digitigrade_1"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG)
|
||||
name = "Guilmon digigrade right leg 1"
|
||||
icon_state = "guilmon_digitigrade_1"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/guilmondigiLleg1
|
||||
name = "Guilmon digigrade left leg 1"
|
||||
icon_state = "guilmon_digitigrade_1"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG)
|
||||
name = "Guilmon digigrade left leg 1"
|
||||
icon_state = "guilmon_digitigrade_1"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/guilmondigiRleg2
|
||||
name = "Guilmon digigrade right leg 2"
|
||||
icon_state = "guilmon_digitigrade_2"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG)
|
||||
name = "Guilmon digigrade right leg 2"
|
||||
icon_state = "guilmon_digitigrade_2"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/guilmondigiLleg2
|
||||
name = "Guilmon digigrade left leg 2"
|
||||
icon_state = "guilmon_digitigrade_2"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG)
|
||||
name = "Guilmon digigrade left leg 2"
|
||||
icon_state = "guilmon_digitigrade_2"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG)
|
||||
|
||||
/datum/sprite_accessory/tail/special/orca_tail
|
||||
name = "Orca Tail"
|
||||
@@ -332,6 +467,7 @@
|
||||
//Digitigrade markings
|
||||
/datum/sprite_accessory/marking/digi
|
||||
icon = 'icons/mob/human_races/markings_digi_ch.dmi'
|
||||
digitigrade_acceptance = MARKING_DIGITIGRADE_ONLY
|
||||
|
||||
/datum/sprite_accessory/marking/digi/fullleft
|
||||
name = "Digitigrade Full Left Leg(Only works with digitigrade legs)"
|
||||
|
||||
@@ -22,6 +22,17 @@
|
||||
icon = 'icons/mob/vore/tails_ch.dmi'
|
||||
icon_state = "zorgoia"
|
||||
extra_overlay = "zorgoia_fluff"
|
||||
extra_overlay2 = "zorgoia_fluff_top"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/leopard
|
||||
name = "Leopard tail, dual-color (vwag)"
|
||||
icon = 'icons/mob/vore/tails_ch.dmi'
|
||||
icon_state = "leopard"
|
||||
ani_state = "leopard_w"
|
||||
extra_overlay = "leopard_spots"
|
||||
extra_overlay_w = "leopard_spots_w"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
@@ -144,17 +155,17 @@
|
||||
extra_overlay = "bigringtail_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/longtail/desert_nightstalker
|
||||
name = "Desert Nightstalker Tail (vwag)"
|
||||
icon = 'icons/mob/vore/taurs_ch.dmi'
|
||||
icon_state = "nightstalker_desert"
|
||||
ani_state = "nightstalker_desert_w"
|
||||
do_colouration = 0 // We're not coloring this, these are pre-colored
|
||||
color_blend_mode = ICON_ADD
|
||||
name = "Desert Nightstalker Tail (vwag)"
|
||||
icon = 'icons/mob/vore/taurs_ch.dmi'
|
||||
icon_state = "nightstalker_desert"
|
||||
ani_state = "nightstalker_desert_w"
|
||||
do_colouration = 0 // We're not coloring this, these are pre-colored
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/longtail/diamondback_nightstalker
|
||||
name = "Diamondback Nightstalker Tail (dual-color, vwag)"
|
||||
icon = 'icons/mob/vore/taurs_ch.dmi'
|
||||
icon_state = "nightstalker_diamondback"
|
||||
ani_state = "nightstalker_diamondback_w"
|
||||
extra_overlay = "nightstalker_diamondback_markings"
|
||||
extra_overlay_w = "nightstalker_diamondback_markings_w"
|
||||
name = "Diamondback Nightstalker Tail (dual-color, vwag)"
|
||||
icon = 'icons/mob/vore/taurs_ch.dmi'
|
||||
icon_state = "nightstalker_diamondback"
|
||||
ani_state = "nightstalker_diamondback_w"
|
||||
extra_overlay = "nightstalker_diamondback_markings"
|
||||
extra_overlay_w = "nightstalker_diamondback_markings_w"
|
||||
|
||||
@@ -30,6 +30,7 @@ Controlled by the player_tips subsystem under code/controllers/subsystems/player
|
||||
to_chat(M, SPAN_NOTICE("[tip]"))
|
||||
|
||||
last_tip = tip
|
||||
last_tip_time = world.time
|
||||
tip_delay = rand(min_tip_delay, max_tip_delay)
|
||||
|
||||
|
||||
|
||||
@@ -261,6 +261,9 @@
|
||||
var/alert_msg = " Integrity at [integrity]%"
|
||||
var/message_sound = 'sound/ambience/matteralarm.ogg'
|
||||
|
||||
if(!(src.z in using_map.station_levels)) // CHOMPEdit: SM Global Warn Fix; Is our location the same as the station? If no, then we're not going to warn.
|
||||
return // CHOMPEdit: SM Global Warn Fix; No need to announce if we're outside the station's Z, at a POI, etc.
|
||||
|
||||
if(final_countdown) // Chompers additon
|
||||
return
|
||||
if(damage > emergency_point)
|
||||
@@ -450,6 +453,10 @@
|
||||
candidate_alarm.causality.start()
|
||||
causalitywarn = 1
|
||||
|
||||
if(!(src.z in using_map.station_levels)) // CHOMPEdit: SM Global Warn Fix; Is our location the same as the station? If no, then we're not going to use a stabilization field.
|
||||
explode() // CHOMPEdit: SM Global Warn Fix; Just exploding, because we're not on the station's Z. No safety countdown.
|
||||
return // CHOMPEdit: SM Global Warn Fix; Stops the code here.
|
||||
|
||||
if(final_countdown) // We're already doing it go away
|
||||
return
|
||||
final_countdown = TRUE
|
||||
|
||||
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 8.0 KiB |
@@ -0,0 +1,299 @@
|
||||
// Props
|
||||
/obj/structure/prop/desert_rock
|
||||
icon = 'modular_chomp/icons/obj/desert_planet/desert_rocks.dmi'
|
||||
desc = "Sandy and smooth from erosion."
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/prop/desert_rock/rock
|
||||
name = "desert rock"
|
||||
|
||||
/obj/structure/prop/desert_rock/rock/attack_hand(mob/living/user)
|
||||
if(user.is_incorporeal())
|
||||
return
|
||||
to_chat(user, "You push on the [src].")
|
||||
var/movedir = user.dir
|
||||
if(do_after(user, 3 SECONDS, src))
|
||||
step(src, movedir)
|
||||
|
||||
/obj/structure/prop/desert_rock/rock/New()
|
||||
..()
|
||||
icon_state = "desert_rock[rand(0,6)]"
|
||||
|
||||
/obj/structure/prop/desert_rock/pebble
|
||||
name = "sandy pebble"
|
||||
density = FALSE
|
||||
|
||||
/obj/structure/prop/desert_rock/pebble/Crossed(atom/movable/AM as mob|obj)
|
||||
if(AM.is_incorporeal())
|
||||
return
|
||||
if(istype(AM, /mob/living))
|
||||
var/mob/living/M = AM
|
||||
if(M.m_intent == "run" && prob(5))
|
||||
M.Weaken(2)
|
||||
to_chat(M, "You trip over the [src]!")
|
||||
|
||||
/obj/structure/prop/desert_rock/pebble/New()
|
||||
..()
|
||||
icon_state = "desert_pebble[rand(0,6)]"
|
||||
|
||||
/obj/structure/prop/desert_rock/anthill
|
||||
name = "ant hill"
|
||||
desc = "See how many ants you can spot."
|
||||
icon = 'modular_chomp/icons/obj/desert_planet/desert_plants.dmi'
|
||||
icon_state = "anthill0"
|
||||
|
||||
/obj/structure/prop/desert_rock/anthill/New()
|
||||
..()
|
||||
icon_state = "anthill[rand(0,2)]"
|
||||
|
||||
/obj/structure/prop/desert_planet64x64
|
||||
name = "large rock"
|
||||
desc = "Sandy and smooth from erosion."
|
||||
icon = 'modular_chomp/icons/obj/desert_planet/desert_props_64x64.dmi'
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
can_buckle = FALSE
|
||||
|
||||
/obj/structure/prop/desert_planet64x64/lrock
|
||||
icon_state = "lrock"
|
||||
|
||||
/obj/structure/prop/desert_planet64x64/lrock1
|
||||
icon_state = "lrock1"
|
||||
|
||||
/obj/structure/prop/desert_planet64x64/lrock2
|
||||
icon_state = "lrock2"
|
||||
|
||||
/obj/structure/prop/desert_planet64x64/lrock3
|
||||
icon_state = "lrock3"
|
||||
|
||||
/obj/structure/prop/desert_planet64x64/lrock4
|
||||
icon_state = "lrock4"
|
||||
|
||||
/obj/structure/prop/desert_planet64x64/lribs
|
||||
name = "ribs"
|
||||
desc = "Bleached white by baking sunlight."
|
||||
icon_state = "lribs"
|
||||
|
||||
/obj/structure/prop/desert_planet64x64/lribs1
|
||||
name = "ribs"
|
||||
desc = "Bleached white by baking sunlight."
|
||||
icon_state = "lribs1"
|
||||
|
||||
/obj/structure/prop/desert_planet64x64/lskull
|
||||
name = "skull"
|
||||
desc = "Bleached white by baking sunlight."
|
||||
icon_state = "lskull"
|
||||
|
||||
/obj/structure/prop/desert_planet64x64/lbone
|
||||
name = "bone"
|
||||
desc = "Bleached white by baking sunlight."
|
||||
icon_state = "lbone"
|
||||
|
||||
/obj/structure/prop/desert_planet64x64/palmuria
|
||||
name = "palm"
|
||||
desc = "Stout and bushy."
|
||||
icon_state = "palmuria"
|
||||
|
||||
/obj/structure/prop/desert_planet64x64/palmuria1
|
||||
name = "palm"
|
||||
desc = "Stout and bushy."
|
||||
icon_state = "palmuria1"
|
||||
|
||||
/obj/structure/prop/desert_planet160x160
|
||||
name = "desert large boulder"
|
||||
desc = "Sandy and smooth from erosion."
|
||||
icon = 'modular_chomp/icons/obj/desert_planet/desert_planet_160x160.dmi'
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
can_buckle = FALSE
|
||||
|
||||
/obj/structure/prop/desert_planet160x160/largeboulder
|
||||
icon_state = "large_boulder"
|
||||
|
||||
/obj/structure/prop/desert_planet160x160/tallboulder
|
||||
icon_state = "tall_boulder"
|
||||
|
||||
/obj/structure/prop/desert_planet160x160/boulder
|
||||
icon_state = "boulder"
|
||||
|
||||
/obj/structure/prop/desert_planet160x160/lcactus
|
||||
name = "cactus"
|
||||
desc = "Large and prickly."
|
||||
icon_state = "lcactus"
|
||||
|
||||
/obj/structure/prop/desert_planet160x160/lcactus1
|
||||
name = "cactus"
|
||||
desc = "Large and prickly."
|
||||
icon_state = "lcactus1"
|
||||
|
||||
/obj/structure/prop/desert_planet160x160/lcactus2
|
||||
name = "cactus"
|
||||
desc = "Large and prickly."
|
||||
icon_state = "lcactus2"
|
||||
|
||||
/obj/structure/prop/desert_planet160x160/lcactus3
|
||||
name = "cactus"
|
||||
desc = "Large and prickly."
|
||||
icon_state = "lcactus3"
|
||||
|
||||
// Flora
|
||||
/obj/structure/flora/desert_planet
|
||||
name = "desert plant"
|
||||
desc = "Probably a succulent."
|
||||
icon = 'modular_chomp/icons/obj/desert_planet/desert_plants.dmi'
|
||||
|
||||
/obj/structure/flora/desert_planet/potted_plant
|
||||
name = "potted plant"
|
||||
desc = "Colloquially known as a pot plant."
|
||||
icon_state = "potplant0"
|
||||
|
||||
/obj/structure/flora/desert_planet/potted_plant/New()
|
||||
..()
|
||||
icon_state = "potplant[rand(0,2)]"
|
||||
|
||||
/obj/structure/flora/desert_planet/thicket
|
||||
name = "thicket"
|
||||
desc = "Weedy growths."
|
||||
icon_state = "thicket0"
|
||||
|
||||
/obj/structure/flora/desert_planet/thicket/New()
|
||||
..()
|
||||
icon_state = "thicket[rand(0,6)]"
|
||||
|
||||
/obj/structure/flora/desert_planet/shrub
|
||||
name = "shrub"
|
||||
desc = "Dense and weedy."
|
||||
icon_state = "shrub0"
|
||||
|
||||
/obj/structure/flora/desert_planet/shrub/New()
|
||||
..()
|
||||
icon_state = "shrub[rand(0,5)]"
|
||||
|
||||
/obj/structure/flora/desert_planet/bush
|
||||
name = "bush"
|
||||
desc = "Denser and weedier."
|
||||
icon_state = "bush0"
|
||||
|
||||
/obj/structure/flora/desert_planet/bush/New()
|
||||
..()
|
||||
icon_state = "bush[rand(0,5)]"
|
||||
|
||||
/obj/structure/flora/desert_planet/barrelcacti
|
||||
name = "barrel cacti"
|
||||
desc = "Small, adorable, and begging for a hug."
|
||||
icon_state = "barrelcacti0"
|
||||
|
||||
/obj/structure/flora/desert_planet/barrelcacti/New()
|
||||
..()
|
||||
icon_state = "barrelcacti[rand(0,3)]"
|
||||
|
||||
/obj/structure/flora/desert_planet/palmy
|
||||
name = "yucca bush"
|
||||
desc = "Probably not actually a yucca."
|
||||
icon_state = "palmy0"
|
||||
|
||||
/obj/structure/flora/desert_planet/palmy/New()
|
||||
..()
|
||||
icon_state = "palmy[rand(0,2)]"
|
||||
|
||||
/obj/structure/flora/desert_planet/shrubber
|
||||
name = "thorny bush"
|
||||
desc = "Makes for great fur accessories."
|
||||
icon_state = "shrubber0"
|
||||
|
||||
/obj/structure/flora/desert_planet/shrubber/New()
|
||||
..()
|
||||
icon_state = "shrubber[rand(0,2)]"
|
||||
|
||||
/obj/structure/flora/desert_planet/lbarrelcacti
|
||||
name = "barrel cactus"
|
||||
desc = "Absolutely begging for pets."
|
||||
icon_state = "lbarrelcacti0"
|
||||
|
||||
/obj/structure/flora/desert_planet/lbarrelcacti/New()
|
||||
..()
|
||||
icon_state = "lbarrelcacti[rand(0,2)]"
|
||||
|
||||
// Trees
|
||||
/obj/structure/flora/tree/desert_planet
|
||||
name = "palm tree"
|
||||
desc = "Tall palm tree, makes for a good shade."
|
||||
icon = 'modular_chomp/icons/obj/desert_planet/desert_planet_160x160.dmi'
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
can_buckle = FALSE
|
||||
product = /obj/item/stack/material/log
|
||||
product_amount = 50
|
||||
health = 2000
|
||||
max_health = 2000
|
||||
//var/fruit
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/palmtreeb
|
||||
icon_state = "palmtreeb"
|
||||
base_state = "palmr" // Necessary for stumps to work.
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/palmtreeb1
|
||||
icon_state = "palmtreeb1"
|
||||
base_state = "palml"
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/palmtree
|
||||
icon_state = "palmtree"
|
||||
base_state = "palmr"
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/palmtree1
|
||||
icon_state = "palmtree1"
|
||||
base_state = "palml"
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/mpalmtreeb
|
||||
icon_state = "mpalmtreeb"
|
||||
base_state = "palmr"
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/mpalmtreeb1
|
||||
icon_state = "mpalmtreeb1"
|
||||
base_state = "palml"
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/mpalmtree
|
||||
icon_state = "mpalmtree"
|
||||
base_state = "palml"
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/mpalmtree1
|
||||
icon_state = "mpalmtree1"
|
||||
base_state = "palmr"
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/spalmtree
|
||||
icon_state = "spalmtree"
|
||||
base_state = "palmls"
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/spalmtree1
|
||||
icon_state = "spalmtree1"
|
||||
base_state = "palmrs"
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/spalmtree3
|
||||
icon_state = "spalmtree3"
|
||||
base_state = "palmls"
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/spalmtree4
|
||||
icon_state = "spalmtree4"
|
||||
base_state = "palmrs"
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/desert_tree
|
||||
name = "barren tree"
|
||||
desc = "Completely barren."
|
||||
icon_state = "desert_tree"
|
||||
base_state = "desert"
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/desert_tree1
|
||||
name = "gnarled tree"
|
||||
desc = "Twisted but living."
|
||||
icon_state = "desert_tree1"
|
||||
base_state = "desert"
|
||||
|
||||
/obj/structure/flora/tree/desert_planet/desert_tree3
|
||||
name = "hardy tree"
|
||||
desc = "Thriving despite the conditions."
|
||||
icon_state = "desert_tree3"
|
||||
base_state = "desert"
|
||||
product_amount = 100
|
||||
health = 4000
|
||||
max_health = 4000
|
||||
@@ -1,136 +1,257 @@
|
||||
/* Testing
|
||||
// Parent turf.
|
||||
/turf/simulated/floor/outdoors/desert_planet
|
||||
name = "sand"
|
||||
desc = "Salty and gritty."
|
||||
icon = 'modular_chomp/icons/turf/desert_tiles.dmi'
|
||||
icon_edge = 'modular_chomp/icons/turf/outdoors_edge.dmi'
|
||||
can_dig = FALSE
|
||||
|
||||
/turf/simulated/floor/outdoors/desert_planet/sand
|
||||
name = "sand"
|
||||
desc = "Sandy, taste salty and gritty."
|
||||
icon = 'modular_chomp/icons/turf/desert_planet.dmi'
|
||||
desc = "Salty and gritty."
|
||||
icon_state = "sand0"
|
||||
edge_blending_priority = 2
|
||||
turf_layers = list(/turf/simulated/floor/outdoors/rocks)
|
||||
initial_flooring = /decl/flooring/sand
|
||||
can_dig = false
|
||||
*/
|
||||
initial_flooring = /decl/flooring/desert_planet/sand
|
||||
|
||||
/turf/simulated/floor/outdoors/desert_planet/sand
|
||||
name = "sand"
|
||||
desc = "Salty and gritty."
|
||||
icon = 'modular_chomp/icons/turf/desert_planet.dmi'
|
||||
icon_state = "sand"
|
||||
edge_blending_priority = 3
|
||||
turf_layers = list(/turf/simulated/floor/outdoors/desert_planet/sand)
|
||||
// Necessary to get the edges to generate correctly since we use a random-ish icon_state. Inelegant to hard code, but this is a one-off case.
|
||||
/turf/simulated/floor/outdoors/desert_planet/sand/get_edge_icon_state()
|
||||
return "sand"
|
||||
|
||||
/* Testing
|
||||
/decl/flooring/outdoors/sand
|
||||
name = "sand"
|
||||
desc = "Salty and gritty."
|
||||
icon = 'modular_chomp/icons/turf/desert_planet.dmi'
|
||||
icon_base = "sand"
|
||||
footstep_sounds = list("human" = list(
|
||||
'sound/effects/footstep/asteroid1.ogg',
|
||||
'sound/effects/footstep/asteroid2.ogg',
|
||||
'sound/effects/footstep/asteroid3.ogg',
|
||||
'sound/effects/footstep/asteroid4.ogg',
|
||||
'sound/effects/footstep/asteroid5.ogg',
|
||||
'sound/effects/footstep/MedDirt1.ogg',
|
||||
'sound/effects/footstep/MedDirt2.ogg',
|
||||
'sound/effects/footstep/MedDirt3.ogg',
|
||||
'sound/effects/footstep/MedDirt4.ogg'))
|
||||
/turf/simulated/floor/outdoors/desert_planet/sand/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_state = "sand[rand(0,2)]"
|
||||
|
||||
/turf/simulated/floor/outdoors/sand/Initialize(mapload)
|
||||
var/possiblesands = list(
|
||||
"ironsand1" = 50,
|
||||
"ironsand2" = 1,
|
||||
"ironsand3" = 1,
|
||||
"ironsand4" = 1,
|
||||
"ironsand5" = 1,
|
||||
"ironsand6" = 1,
|
||||
"ironsand7" = 1,
|
||||
"ironsand8" = 1,
|
||||
"ironsand9" = 1,
|
||||
"ironsand10" = 1,
|
||||
"ironsand11" = 1,
|
||||
"ironsand12" = 1,
|
||||
"ironsand13" = 1,
|
||||
"ironsand14" = 1,
|
||||
"ironsand15" = 1
|
||||
|
||||
)
|
||||
flooring_override = pickweight(possiblesands)
|
||||
return ..()
|
||||
|
||||
/turf/simulated/floor/water/hotspring
|
||||
name = "Hotsprings"
|
||||
desc = "A natural hotspring connecting to an aquifer. It seems the facility was built ontop of it."
|
||||
edge_blending_priority = -2
|
||||
movement_cost = 8
|
||||
depth = 2
|
||||
water_state = "water_shallow"
|
||||
outdoors = FALSE
|
||||
|
||||
/turf/simulated/floor/water/hotspring/Entered(atom/movable/AM, atom/oldloc)
|
||||
if(istype(AM, /mob/living))
|
||||
var/mob/living/L = AM
|
||||
L.update_water()
|
||||
if(L.check_submerged() <= 0)
|
||||
return
|
||||
if(!istype(oldloc, /turf/simulated/floor/water/hotspring))
|
||||
to_chat(L, "<span class='warning'>You feel an overwhelming wave of warmth from entering \the [src]!</span>")
|
||||
AM.water_act(5)
|
||||
..()
|
||||
|
||||
|
||||
*/
|
||||
/turf/simulated/floor/outdoors/desert_planet/sand/attackby(var/obj/item/W, var/mob/user)
|
||||
if(istype(W, /obj/item/weapon/shovel))
|
||||
to_chat(user, "<span class='notice'>You begin to remove \the [src] with your [W].</span>")
|
||||
if(do_after(user, 4 SECONDS * W.toolspeed))
|
||||
to_chat(user, "<span class='notice'>\The [src] has been dug up, and now lies in a pile nearby.</span>")
|
||||
icon_state = "sand_dug"
|
||||
new /obj/item/weapon/ore/glass (src)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You decide to not finish removing \the [src].</span>")
|
||||
else
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/outdoors/desert_planet/deep_sand
|
||||
name = "sand"
|
||||
desc = "Salty and gritty."
|
||||
icon = 'modular_chomp/icons/turf/desert_planet.dmi'
|
||||
icon_state = "deep_sand"
|
||||
edge_blending_priority = 2
|
||||
turf_layers = list(/turf/simulated/floor/outdoors/desert_planet/sand)
|
||||
desc = "Really gets everywhere."
|
||||
icon_state = "deep_sand0"
|
||||
edge_blending_priority = 1
|
||||
movement_cost = 3
|
||||
initial_flooring = /decl/flooring/desert_planet/deep_sand
|
||||
|
||||
/turf/simulated/floor/outdoors/desert_planet/deep_sand/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_state = "deep_sand[rand(0,2)]"
|
||||
|
||||
/turf/simulated/floor/outdoors/desert_planet/grass
|
||||
name = "grass"
|
||||
desc = "Lively green grass, soft to walk on."
|
||||
icon = 'modular_chomp/icons/turf/desert_planet.dmi'
|
||||
icon_state = "grass"
|
||||
edge_blending_priority = 6
|
||||
turf_layers = list(/turf/simulated/floor/outdoors/desert_planet/sand)
|
||||
edge_blending_priority = 5
|
||||
initial_flooring = /decl/flooring/desert_planet/grass
|
||||
|
||||
/turf/simulated/floor/outdoors/desert_planet/deep_grass
|
||||
name = "dense grass"
|
||||
desc = "Dense patch of grass, seems like a soft spot to lay on."
|
||||
icon = 'modular_chomp/icons/turf/desert_planet.dmi'
|
||||
icon_state = "deep_grass"
|
||||
edge_blending_priority = 7
|
||||
turf_layers = list(/turf/simulated/floor/outdoors/desert_planet/sand)
|
||||
edge_blending_priority = 6
|
||||
initial_flooring = /decl/flooring/desert_planet/deep_grass
|
||||
|
||||
/turf/simulated/floor/outdoors/desert_planet/gravel
|
||||
name = "gravel"
|
||||
desc = "Mix of dirt and sand, it crumbles in your hand."
|
||||
icon = 'modular_chomp/icons/turf/desert_planet.dmi'
|
||||
icon_state = "gravel"
|
||||
edge_blending_priority = 5
|
||||
turf_layers = list(/turf/simulated/floor/outdoors/desert_planet/sand)
|
||||
edge_blending_priority = 3
|
||||
initial_flooring = /decl/flooring/desert_planet/gravel
|
||||
|
||||
/turf/simulated/floor/outdoors/desert_planet/mud
|
||||
name = "mud"
|
||||
desc = "Squishy damp dirt, smells muddy."
|
||||
icon = 'modular_chomp/icons/turf/desert_planet.dmi'
|
||||
icon_state = "mud"
|
||||
edge_blending_priority = 4
|
||||
turf_layers = list(/turf/simulated/floor/outdoors/desert_planet/sand)
|
||||
initial_flooring = /decl/flooring/desert_planet/mud
|
||||
|
||||
// At last we've come full circle, a floor which is actually a wall.
|
||||
/turf/simulated/floor/outdoors/desert_planet/stonewall
|
||||
name = "sandstone"
|
||||
desc = "Rough sandstone."
|
||||
icon_state = "stonewall"
|
||||
density = TRUE
|
||||
opacity = TRUE
|
||||
edge_blending_priority = 7
|
||||
initial_flooring = /decl/flooring/desert_planet/stonewall
|
||||
turf_layers = list(/turf/simulated/floor/outdoors/rocks)
|
||||
var/last_act = 0
|
||||
|
||||
// Stolen from mineral turf code.
|
||||
/turf/simulated/floor/outdoors/desert_planet/stonewall/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/weapon/pickaxe))
|
||||
if(!istype(user.loc, /turf))
|
||||
return
|
||||
|
||||
var/obj/item/weapon/pickaxe/P = W
|
||||
if(last_act + P.digspeed > world.time)//prevents message spam
|
||||
return
|
||||
last_act = world.time
|
||||
|
||||
playsound(user, P.drill_sound, 20, 1)
|
||||
to_chat(user, "<span class='notice'>You start [P.drill_verb].</span>")
|
||||
|
||||
if(do_after(user,P.digspeed))
|
||||
|
||||
to_chat(user, "<span class='notice'>You finish [P.drill_verb] \the [src].</span>")
|
||||
new /obj/item/stack/material/sandstone(src)
|
||||
density = FALSE
|
||||
opacity = FALSE
|
||||
demote() // Converts the turf to the next layer in turf_layers.
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/outdoors/desert_planet/sandrock
|
||||
name = "sandstone tiles"
|
||||
desc = "Tightly joined in a mesmerizing lattice."
|
||||
icon_state = "sandrock"
|
||||
density = TRUE
|
||||
opacity = TRUE
|
||||
initial_flooring = /decl/flooring/desert_planet/sandrock
|
||||
|
||||
// Declarations (for initial_flooring)
|
||||
/decl/flooring/desert_planet // Yeah don't use this one, it's a parent just for setting icon.
|
||||
name = "desert stuff"
|
||||
desc = "If you see this, this turf is using the wrong decl."
|
||||
icon = 'modular_chomp/icons/turf/desert_tiles.dmi'
|
||||
icon_base = null
|
||||
|
||||
/decl/flooring/desert_planet/sand
|
||||
name = "sand"
|
||||
desc = "Salty and gritty."
|
||||
icon_base = "sand"
|
||||
has_base_range = 2
|
||||
|
||||
/decl/flooring/desert_planet/deep_sand
|
||||
name = "sand"
|
||||
desc = "Really gets everywhere."
|
||||
icon_base = "deep_sand"
|
||||
has_base_range = 2
|
||||
|
||||
/decl/flooring/desert_planet/grass
|
||||
name = "grass"
|
||||
desc = "Lively green grass, soft to walk on."
|
||||
icon_base = "grass"
|
||||
|
||||
/decl/flooring/desert_planet/deep_grass
|
||||
name = "dense grass"
|
||||
desc = "Dense patch of grass, seems like a soft spot to lay on."
|
||||
icon_base = "deep_grass"
|
||||
|
||||
/decl/flooring/desert_planet/gravel
|
||||
name = "gravel"
|
||||
desc = "Mix of dirt and sand, it crumbles in your hand."
|
||||
icon_base = "gravel"
|
||||
|
||||
/decl/flooring/desert_planet/mud
|
||||
name = "mud"
|
||||
desc = "Squishy damp dirt, smells muddy."
|
||||
icon_base = "mud"
|
||||
|
||||
/decl/flooring/desert_planet/stonewall
|
||||
name = "sandstone"
|
||||
desc = "Rough sandstone."
|
||||
icon_base = "stonewall"
|
||||
|
||||
/decl/flooring/desert_planet/sandrock
|
||||
name = "sandstone tiles"
|
||||
desc = "Tightly joined in a mesmerizing lattice."
|
||||
icon_base = "sandrock"
|
||||
flags = TURF_HAS_EDGES | TURF_HAS_CORNERS
|
||||
|
||||
/*
|
||||
/obj/effect/floor_decal/desert_planet/floor/sand0_edge
|
||||
name = "sand0_edge"
|
||||
icon = 'icons/turf/desert_planet.dmi'
|
||||
icon_state = "sand0_edge"
|
||||
|
||||
/obj/effect/floor_decal/desert_planet/floor/gravel_edge
|
||||
name = "gravel_edge"
|
||||
icon = 'icons/turf/desert_planet.dmi'
|
||||
icon_state = "gravel_edge"
|
||||
|
||||
/obj/effect/floor_decal/desert_planet/floor/mud_edge
|
||||
name = "mud_edge"
|
||||
icon = 'icons/turf/desert_planet.dmi'
|
||||
icon_state = "mud_edge"
|
||||
|
||||
/obj/effect/floor_decal/desert_planet/floor/grass_edge
|
||||
name = "grass_edge"
|
||||
icon = 'icons/turf/desert_planet.dmi'
|
||||
icon_state = "grass_edge"
|
||||
|
||||
/obj/effect/floor_decal/desert_planet/floor/deep_grass_edge
|
||||
name = "deep_grass_edge"
|
||||
icon = 'icons/turf/desert_planet.dmi'
|
||||
icon_state = "deep_grass_edge"
|
||||
*/
|
||||
|
||||
/* #No idea how water tiles work
|
||||
/turf/simulated/floor/outdoors/desert_planet/water
|
||||
name = "water"
|
||||
desc = "Clear cool water, looks potable."
|
||||
icon = 'modular_chomp/icons/turf/desert_planet.dmi'
|
||||
icon = 'icons/turf/desert_planet.dmi'
|
||||
icon_state = "water"
|
||||
edge_blending_priority = 8
|
||||
var/water_state = "water_shallow"
|
||||
var/under_state = "sand"
|
||||
can_be_plated = FALSE
|
||||
outdoors = OUTDOORS_YES
|
||||
flags = TURF_ACID_IMMUNE
|
||||
layer = WATER_FLOOR_LAYER
|
||||
can_dirty = FALSE // It's water
|
||||
var/depth = 1 // Higher numbers indicates deeper water.
|
||||
var/reagent_type = "water"
|
||||
edge_blending_priority = 2
|
||||
turf_layers = list(/turf/simulated/floor/outdoors/desert_planet/sand)
|
||||
|
||||
/turf/simulated/floor/outdoors/desert_planet/deep_water
|
||||
name = "deep water"
|
||||
desc = "deep enough you can't see the bottom of it."
|
||||
icon = 'modular_chomp/icons/turf/desert_planet.dmi'
|
||||
icon = 'icons/turf/desert_planet.dmi'
|
||||
icon_state = "deep_water"
|
||||
edge_blending_priority = 9
|
||||
var/water_state = "water_shallow"
|
||||
var/under_state = "sand"
|
||||
can_be_plated = FALSE
|
||||
outdoors = OUTDOORS_YES
|
||||
flags = TURF_ACID_IMMUNE
|
||||
layer = WATER_FLOOR_LAYER
|
||||
can_dirty = FALSE // It's water
|
||||
var/depth = 2 // Higher numbers indicates deeper water.
|
||||
var/reagent_type = "water"
|
||||
edge_blending_priority = 4
|
||||
turf_layers = list(/turf/simulated/floor/outdoors/desert_planet/sand)
|
||||
|
||||
//I want this for the water tiles
|
||||
/turf/simulated/floor/water
|
||||
name = "shallow water"
|
||||
desc = "A body of water. It seems shallow enough to walk through, if needed."
|
||||
icon = 'icons/turf/outdoors.dmi'
|
||||
icon_state = "seashallow" // So it shows up in the map editor as water.
|
||||
var/water_state = "water_shallow"
|
||||
var/under_state = "rock"
|
||||
edge_blending_priority = -1
|
||||
movement_cost = 4
|
||||
can_be_plated = FALSE
|
||||
outdoors = OUTDOORS_YES
|
||||
flags = TURF_ACID_IMMUNE
|
||||
|
||||
layer = WATER_FLOOR_LAYER
|
||||
|
||||
can_dirty = FALSE // It's water
|
||||
|
||||
var/depth = 1 // Higher numbers indicates deeper water.
|
||||
|
||||
var/reagent_type = "water"
|
||||
// var/datum/looping_sound/water/soundloop CHOMPEdit: Removing soundloop for now.
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/mob/living/simple_mob/animal/passive/dog/stray
|
||||
name = "dog"
|
||||
desc = "The most standard dog you have ever seen, it even smells like one."
|
||||
tt_desc = "Canis lupus familiaris"
|
||||
//faction = "mexico" //They are from Mexico. //Amusing but this prompts aggression from crew-aligned mobs.
|
||||
|
||||
icon = 'modular_chomp/icons/turf/desert_tiles.dmi'
|
||||
icon_state = "dog"
|
||||
item_state = "dog"
|
||||
icon_living = "dog"
|
||||
icon_rest = "dog"
|
||||
icon_dead = "dog"
|
||||
|
||||
health = 50
|
||||
maxHealth = 50
|
||||
|
||||
mob_size = MOB_SMALL
|
||||
pass_flags = PASSTABLE
|
||||
can_pull_size = ITEMSIZE_TINY
|
||||
can_pull_mobs = MOB_PULL_NONE
|
||||
layer = MOB_LAYER
|
||||
density = 1
|
||||
movement_cooldown = 0.75 //roughly a bit faster than a person
|
||||
|
||||
response_help = "pets"
|
||||
response_disarm = "rolls aside"
|
||||
response_harm = "stomps"
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 7
|
||||
attacktext = list("nips", "bumps", "scratches")
|
||||
|
||||
vore_taste = "wet dog"
|
||||
|
||||
min_oxy = 16 //Require atleast 16kPA oxygen
|
||||
minbodytemp = 223 //Below -50 Degrees Celcius
|
||||
maxbodytemp = 523 //Above 80 Degrees Celcius
|
||||
heat_damage_per_tick = 3
|
||||
cold_damage_per_tick = 3
|
||||
|
||||
meat_amount = 7
|
||||
holder_type = /obj/item/weapon/holder/armadillo
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/armadillo
|
||||
|
||||
speak_emote = list("rumbles", "chirr?", "churr")
|
||||
|
||||
say_list_type = /datum/say_list/armadillo
|
||||
@@ -4,10 +4,11 @@
|
||||
// preferentially take digitigrade value from owner if available, THEN DNA.
|
||||
// this allows limbs to be set properly when being printed in the bioprinter without an owner
|
||||
// this also allows the preview mannequin to update properly because customisation topic calls don't call a DNA check
|
||||
var/check_digi = istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot)
|
||||
if(owner)
|
||||
digitigrade = owner.digitigrade && (istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot))
|
||||
digitigrade = check_digi && owner.digitigrade
|
||||
else if(dna)
|
||||
digitigrade = dna.digitigrade && (istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot))
|
||||
digitigrade = check_digi && dna.digitigrade
|
||||
|
||||
var/robotic_digi = prosthetic_digi && digitigrade //could make it so the prosthetic digi var is more of a "does this limb have a custom digitigrade sprite for its robospriting" but this is fine for now
|
||||
|
||||
@@ -57,13 +58,15 @@
|
||||
if((!istype(src,/obj/item/organ/external/head) && !(force_icon && !robotic_digi)) || (model && owner && owner.synth_markings))
|
||||
for(var/M in markings)
|
||||
var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"]
|
||||
var/isdigitype = istype(mark_style,/datum/sprite_accessory/marking/digi)
|
||||
if(!(digitigrade ^ isdigitype)) //Equivalent to XNOR; this code will only run if either both digitigrade and isdigitype are true, or if both are false.
|
||||
var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]")
|
||||
mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) // VOREStation edit
|
||||
add_overlay(mark_s) //So when it's not on your body, it has icons
|
||||
mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons
|
||||
icon_cache_key += "[M][markings[M]["color"]]"
|
||||
var/isdigitype = mark_style.digitigrade_acceptance
|
||||
if(check_digi)
|
||||
if (!(isdigitype & (digitigrade ? MARKING_DIGITIGRADE_ONLY : MARKING_NONDIGI_ONLY))) //checks flags based on which digitigrade type the limb is
|
||||
continue
|
||||
var/icon/mark_s = new/icon("icon" = digitigrade ? mark_style.digitigrade_icon : mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]")
|
||||
mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) // VOREStation edit
|
||||
add_overlay(mark_s) //So when it's not on your body, it has icons
|
||||
mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons
|
||||
icon_cache_key += "[M][markings[M]["color"]]"
|
||||
if(body_hair && islist(h_col) && h_col.len >= 3)
|
||||
var/cache_key = "[body_hair]-[icon_name]-[h_col[1]][h_col[2]][h_col[3]]"
|
||||
if(!limb_icon_cache[cache_key])
|
||||
|
||||
@@ -21,7 +21,7 @@ When editing the list, please try and keep similar probabilities near each other
|
||||
|
||||
switch(choice)
|
||||
if("general")
|
||||
var/info = "The following is a general tip to playing on CHOMPStation! \n"
|
||||
var/info = "The following is a general tip to playing on CHOMPStation! You can disable them using the periodic tips toggle in the Global tab of character setup! \n"
|
||||
return pick(
|
||||
prob(60); "[info] Got a question about gameplay, roleplay or the setting? Press F1 to Mentorhelp!",
|
||||
prob(60); "[info] We have a wiki that is actively updated! Please check it out at https://wiki.chompstation13.net/index.php/Chomp_Station_Wiki for help!",
|
||||
@@ -36,7 +36,7 @@ When editing the list, please try and keep similar probabilities near each other
|
||||
|
||||
|
||||
if("gameplay")
|
||||
var/info = "The following is a gameplay-focused tip to playing on CHOMPStation \n"
|
||||
var/info = "The following is a gameplay-focused tip to playing on CHOMPStation! You can disable them using the periodic tips toggle in the Global tab of character setup! \n"
|
||||
return pick(
|
||||
prob(50); "[info] To talk to your fellow coworkers, use ';'! You may append it by an exclamation mark, like ';!' to perform an audiable emote. ",
|
||||
prob(50); "[info] Lost on the map? You can find In-Character help by speaking on the Common Radio. You can do this by pressing F3 and typing ' ; ' before your message. Your fellow co-workers will likely help. If OOC help is preferred, press F1 for mentorhelp. ",
|
||||
@@ -51,7 +51,7 @@ When editing the list, please try and keep similar probabilities near each other
|
||||
)
|
||||
|
||||
if("roleplay")
|
||||
var/info = "The following is a roleplay-focused tip to playing on CHOMPStation \n"
|
||||
var/info = "The following is a roleplay-focused tip to playing on CHOMPStation! You can disable them using the periodic tips toggle in the Global tab of character setup! \n"
|
||||
return pick(
|
||||
prob(50); "[info] Having difficulty finding scenes? The number one tip that people should take for finding scenes is to be active! Generally speaking, people are more likely to interact with you if you are moving about and doing things. Don't be afraid to talk to people, you're less likely to be approached if you're sat alone at a table silently. People that are looking for scenes generally like to see how you type and RP before they'll start working towards a scene with you.",
|
||||
prob(50); "[info] Please avoid a character that knows everything. Having only a small set of jobs you are capable of doing can help flesh out your character! It's OK for things to break and fail if nobody is around to fix it - you do not need to do others' jobs.",
|
||||
@@ -64,7 +64,7 @@ When editing the list, please try and keep similar probabilities near each other
|
||||
)
|
||||
|
||||
if("lore")
|
||||
var/info = "The following is tip for understanding the lore of CHOMPStation \n"
|
||||
var/info = "The following is tip for understanding the lore of CHOMPStation! You can disable them using the periodic tips toggle in the Global tab of character setup! \n"
|
||||
return pick(
|
||||
prob(25); "[info] Our lore is somewhat in line with other servers. But not Virgo's. They wrote themselves out of the timeline, lol. The year is 2564 (current year+541).",
|
||||
prob(75); "[info] You can find a short summary of our setting that everyone should know at https://wiki.chompstation13.net/index.php/Lore",
|
||||
|
||||
BIN
modular_chomp/icons/mob/widerobot_exp_ch.dmi
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
modular_chomp/icons/obj/desert_planet/desert_planet_160x160.dmi
Normal file
|
After Width: | Height: | Size: 123 KiB |
BIN
modular_chomp/icons/obj/desert_planet/desert_plants.dmi
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
modular_chomp/icons/obj/desert_planet/desert_props_64x64.dmi
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
modular_chomp/icons/obj/desert_planet/desert_rocks.dmi
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 29 KiB |
BIN
modular_chomp/icons/turf/desert_tiles.dmi
Normal file
|
After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 18 KiB |
@@ -38,7 +38,7 @@ export const CharacterDirectory = (props, context) => {
|
||||
{(overlay && <ViewCharacter />) || (
|
||||
<Fragment>
|
||||
<Section
|
||||
title="Controls"
|
||||
title="Settings and Preferences"
|
||||
buttons={
|
||||
<Fragment>
|
||||
<Box color="label" inline>
|
||||
@@ -52,7 +52,6 @@ export const CharacterDirectory = (props, context) => {
|
||||
/>
|
||||
</Fragment>
|
||||
}>
|
||||
<Section title="Settings and Preferences">
|
||||
<LabeledList>
|
||||
<LabeledList.Item label="Visibility">
|
||||
<Button
|
||||
@@ -69,10 +68,18 @@ export const CharacterDirectory = (props, context) => {
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Gender">
|
||||
<Button fluid content={personalGenderTag} onClick={() => act('setGenderTag')} />
|
||||
<Button
|
||||
fluid
|
||||
content={personalGenderTag}
|
||||
onClick={() => act('setTag', { overwrite_prefs: overwritePrefs })}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Sexuality">
|
||||
<Button fluid content={personalSexualityTag} onClick={() => act('setSexualityTag')} />
|
||||
<Button
|
||||
fluid
|
||||
content={personalSexualityTag}
|
||||
onClick={() => act('setTag', { overwrite_prefs: overwritePrefs })}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="ERP Tag">
|
||||
<Button
|
||||
@@ -82,7 +89,11 @@ export const CharacterDirectory = (props, context) => {
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Event Pref">
|
||||
<Button fluid content={personalEventTag} onClick={() => act('setEventTag')} />
|
||||
<Button
|
||||
fluid
|
||||
content={personalEventTag}
|
||||
onClick={() => act('setTag', { overwrite_prefs: overwritePrefs })}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Advertisement">
|
||||
<Button fluid content="Edit Ad" onClick={() => act('editAd', { overwrite_prefs: overwritePrefs })} />
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
#include "code\__defines\misc_ch.dm"
|
||||
#include "code\__defines\misc_vr.dm"
|
||||
#include "code\__defines\mobs.dm"
|
||||
#include "code\__defines\mobs_ch.dm"
|
||||
#include "code\__defines\mobs_vr.dm"
|
||||
#include "code\__defines\mobs_yw.dm"
|
||||
#include "code\__defines\nifsoft.dm"
|
||||
@@ -4526,6 +4527,7 @@
|
||||
#include "modular_chomp\code\game\machinery\airconditioner_ch.dm"
|
||||
#include "modular_chomp\code\game\machinery\autolathe_armory.dm"
|
||||
#include "modular_chomp\code\game\objects\items\clockwork\ratvarian_spear.dm"
|
||||
#include "modular_chomp\code\game\objects\structures\desert_planet_structures.dm"
|
||||
#include "modular_chomp\code\game\objects\structures\loot_pile.dm"
|
||||
#include "modular_chomp\code\game\objects\structures\watercloset_ch.dm"
|
||||
#include "modular_chomp\code\game\objects\structures\crate_lockers\largecrate.dm"
|
||||
@@ -4591,6 +4593,7 @@
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\gygax.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\occult\constructs\juggernaut.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\bigdragon.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\desert_planet_mobs.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\greatwolf.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\swoopie.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\vore.dm"
|
||||
|
||||