mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-22 05:25:15 +01:00
What you wear and on what chair you sit on can now influence fishing difficulty (#86646)
## About The Pull Request A foreword, I had to refactor a few bits of shitcode my past self added first. For context, the "gone fishing" and "actively fishing" traits only had one source, which is the fishing challenge itself, ad there was no way to access the challenge from outside its code, except for a few weakrefs which were being used as sources for the aforementioned traits (the shitcode in a nutshell). There were also a few signals that I didn't like because they were being sent to the harder-to-access challenge datum rather than the user. So I scrapped the traits for a couple signals to send to the user, then added a global list as a mean to easily access the challenge datum, and lastly changed the code to accomodate the titled feature (and allow the challenge to recalculate its difficulty DURING the minigame phase) Moving on to the actual feature: I've added a component that can be added to objects on which mobs can be buckled to or items. When equipped in the right slots or buckled to, the object will adjust the difficulty of current and future fishing challenges by a certain amount (more often than not positive, but there're many exceptions) as long as the object isn't equipped or the user is unbuckled. I've been having some fun adding component to a ton of clothes in the game as well as chairs. Way too many objects to enumerate, so I'll give you the general idea: - each carp-themed article provides a slight positive modifier (easier) - some (not all) doctor-related garbs provide a marginal positive modifier each (fish doctor jokes) - floortile camo clothes have positive modifiers - Tuxedo, laceups, gowns provide negative modifier (more difficult) - utility garbs such as bio/bomb/rad hoods and suits are quite bad. Riot armor too. - boxing gloves are very, very bad. Insulated gloves and haul gauntlets are also very bad, to a lesser degree. - **tackle** gloves are good. (pun intended) - wizard garbs are good, because wizards are good at casting. (also a pun) - magboots slightly bad. Space suits bad. - Blindfolds and welding protection are also bad. Gas masks marginally bad. - Pirate attire is nice to have. (I just vibed a little on this one) - plastic chairs are quite versatile because they can be carried around, but the mime chair is the best, followed by ratvarian chairs. - Fishing toolboxes, analyzers and the fish catalog are a plus, because they can be held. - And the fishing hat, obviously (not as great as you'd think) Some of these may be subject to change depending on what people say. ## Why It's Good For The Game A hundred lines of fishing challenge code made ever-so-slightly less awful, and a way to modify fishing diffculty beside skills and bait. ## Changelog 🆑 add: Your current clothes and what chair you sit on can now influence the difficulty of fishing minigames. Having a bare minimum of fishing skill will let you distinguish which objects can help and which won't, so keep an eye out. Holding fishing toolboxes, fish analyzers or fish catalogs can also help. /🆑
This commit is contained in:
@@ -36,14 +36,20 @@
|
||||
///From /obj/item/fish/interact_with_atom_secondary, sent to the target: (fish)
|
||||
#define COMSIG_FISH_RELEASED_INTO "fish_released_into"
|
||||
|
||||
///From /datum/fishing_challenge/New: (datum/fishing_challenge/challenge)
|
||||
#define COMSIG_MOB_BEGIN_FISHING "mob_begin_fishing"
|
||||
///From /datum/fishing_challenge/start_minigame_phase: (datum/fishing_challenge/challenge)
|
||||
#define COMSIG_MOB_BEGIN_FISHING_MINIGAME "mob_begin_fishing_minigame"
|
||||
///From /datum/fishing_challenge/completed: (datum/fishing_challenge/challenge, win)
|
||||
#define COMSIG_MOB_COMPLETE_FISHING "mob_complete_fishing"
|
||||
|
||||
/// Rolling a reward path for a fishing challenge
|
||||
#define COMSIG_FISHING_CHALLENGE_ROLL_REWARD "fishing_roll_reward"
|
||||
/// Adjusting the difficulty of a rishing challenge, often based on the reward path
|
||||
#define COMSIG_FISHING_CHALLENGE_GET_DIFFICULTY "fishing_get_difficulty"
|
||||
/// Fishing challenge completed
|
||||
#define COMSIG_FISHING_CHALLENGE_COMPLETED "fishing_completed"
|
||||
/// Sent to the fisherman when the reward is dispensed: (reward)
|
||||
#define COMSIG_FISH_SOURCE_REWARD_DISPENSED "mob_fish_source_reward_dispensed"
|
||||
#define COMSIG_FISH_SOURCE_REWARD_DISPENSED "fish_source_reward_dispensed"
|
||||
|
||||
/// Called when you try to use fishing rod on anything
|
||||
#define COMSIG_PRE_FISHING "pre_fishing"
|
||||
|
||||
@@ -1134,11 +1134,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
|
||||
/// this object has been frozen
|
||||
#define TRAIT_FROZEN "frozen"
|
||||
|
||||
/// Currently fishing
|
||||
#define TRAIT_GONE_FISHING "fishing"
|
||||
/// Currently fishing, and it's the active minigame phase
|
||||
#define TRAIT_ACTIVELY_FISHING "actively_fishing"
|
||||
|
||||
/// Makes a character be better/worse at tackling depending on their wing's status
|
||||
#define TRAIT_TACKLING_WINGED_ATTACKER "tacking_winged_attacker"
|
||||
|
||||
|
||||
@@ -124,7 +124,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
|
||||
"TRAIT_ABDUCTOR_TRAINING" = TRAIT_ABDUCTOR_TRAINING,
|
||||
"TRAIT_ACT_AS_CULTIST" = TRAIT_ACT_AS_CULTIST,
|
||||
"TRAIT_ACT_AS_HERETIC" = TRAIT_ACT_AS_HERETIC,
|
||||
"TRAIT_ACTIVELY_FISHING" = TRAIT_ACTIVELY_FISHING,
|
||||
"TRAIT_ADAMANTINE_EXTRACT_ARMOR" = TRAIT_ADAMANTINE_EXTRACT_ARMOR,
|
||||
"TRAIT_ADVANCEDTOOLUSER" = TRAIT_ADVANCEDTOOLUSER,
|
||||
"TRAIT_AGENDER" = TRAIT_AGENDER,
|
||||
@@ -260,7 +259,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
|
||||
"TRAIT_GENELESS" = TRAIT_GENELESS,
|
||||
"TRAIT_GIANT" = TRAIT_GIANT,
|
||||
"TRAIT_GODMODE" = TRAIT_GODMODE,
|
||||
"TRAIT_GONE_FISHING" = TRAIT_GONE_FISHING,
|
||||
"TRAIT_GOOD_HEARING" = TRAIT_GOOD_HEARING,
|
||||
"TRAIT_GRABWEAKNESS" = TRAIT_GRABWEAKNESS,
|
||||
"TRAIT_GREENTEXT_CURSED" = TRAIT_GREENTEXT_CURSED,
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
///Influences the difficulty of the minigame when worn or if buckled to.
|
||||
/datum/component/adjust_fishing_difficulty
|
||||
///The additive numerical modifier to the difficulty of the minigame
|
||||
var/modifier
|
||||
///For items, in which slot it has to be worn to influence the difficulty of the minigame
|
||||
var/slots
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/Initialize(modifier, slots = NONE)
|
||||
if(!ismovable(parent) || !modifier)
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
if(!isitem(parent))
|
||||
var/atom/movable/movable_parent = parent
|
||||
if(!movable_parent.can_buckle)
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
src.modifier = modifier
|
||||
src.slots = slots
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/RegisterWithParent()
|
||||
if(isitem(parent))
|
||||
RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equipped))
|
||||
RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_dropped))
|
||||
RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_item_examine))
|
||||
else
|
||||
RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, PROC_REF(on_buckle))
|
||||
RegisterSignal(parent, COMSIG_MOVABLE_UNBUCKLE, PROC_REF(on_unbuckle))
|
||||
RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_buckle_examine))
|
||||
|
||||
update_check()
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/UnregisterFromParent()
|
||||
UnregisterSignal(parent, list(
|
||||
COMSIG_ATOM_EXAMINE,
|
||||
COMSIG_MOVABLE_BUCKLE,
|
||||
COMSIG_MOVABLE_UNBUCKLE,
|
||||
COMSIG_ITEM_EQUIPPED,
|
||||
COMSIG_ITEM_DROPPED,
|
||||
))
|
||||
|
||||
update_check(TRUE)
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/proc/update_check(removing = FALSE)
|
||||
var/atom/movable/movable_parent = parent
|
||||
for(var/mob/living/buckled_mob as anything in movable_parent.buckled_mobs)
|
||||
update_user(buckled_mob, removing)
|
||||
if(!isitem(movable_parent) || !isliving(movable_parent.loc))
|
||||
return
|
||||
var/mob/living/holder = movable_parent.loc
|
||||
var/obj/item/item = parent
|
||||
if(holder.get_slot_by_item(movable_parent) & (slots || item.slot_flags))
|
||||
update_user(holder, removing)
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/proc/on_item_examine(obj/item/item, mob/user, list/examine_text)
|
||||
SIGNAL_HANDLER
|
||||
if(!HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISH))
|
||||
return
|
||||
var/method = "[(slots || item.slot_flags) & ITEM_SLOT_HANDS ? "Holding" : "Wearing"] [item.p_them()]"
|
||||
add_examine_line(user, examine_text, method)
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/proc/on_buckle_examine(atom/movable/source, mob/user, list/examine_text)
|
||||
SIGNAL_HANDLER
|
||||
if(!HAS_MIND_TRAIT(user, TRAIT_EXAMINE_FISH))
|
||||
return
|
||||
var/percent = HAS_MIND_TRAIT(user, TRAIT_EXAMINE_DEEPER_FISH) ? "[modifier]% " : ""
|
||||
add_examine_line(user, examine_text, "Buckling to [source.p_them()]")
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/proc/add_examine_line(mob/user, list/examine_text, method)
|
||||
var/percent = HAS_MIND_TRAIT(user, TRAIT_EXAMINE_DEEPER_FISH) ? "[modifier]% " : ""
|
||||
var/text = "[method] will make fishing [percent][modifier > 0 ? "easier" : "harder"]."
|
||||
if(modifier > 0)
|
||||
examine_text += span_nicegreen(text)
|
||||
else
|
||||
examine_text += span_danger(text)
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/proc/on_buckle(atom/movable/source, mob/living/buckled_mob, forced)
|
||||
SIGNAL_HANDLER
|
||||
update_user(buckled_mob)
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/proc/on_unbuckle(atom/movable/source, mob/living/buckled_mob, forced)
|
||||
SIGNAL_HANDLER
|
||||
update_user(buckled_mob, TRUE)
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/proc/on_equipped(obj/item/source, mob/living/wearer, slot)
|
||||
SIGNAL_HANDLER
|
||||
if(slot & (slots || source.slot_flags))
|
||||
update_user(wearer)
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/proc/on_dropped(obj/item/source, mob/living/dropper)
|
||||
SIGNAL_HANDLER
|
||||
update_user(dropper, TRUE)
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/proc/update_user(mob/living/user, removing = FALSE)
|
||||
var/datum/fishing_challenge/challenge = GLOB.fishing_challenges_by_user[user]
|
||||
if(removing)
|
||||
UnregisterSignal(user, COMSIG_MOB_BEGIN_FISHING)
|
||||
if(challenge)
|
||||
UnregisterSignal(challenge, COMSIG_FISHING_CHALLENGE_GET_DIFFICULTY)
|
||||
else
|
||||
RegisterSignal(user, COMSIG_MOB_BEGIN_FISHING, PROC_REF(on_minigame_started))
|
||||
if(challenge)
|
||||
RegisterSignal(challenge, COMSIG_FISHING_CHALLENGE_GET_DIFFICULTY, PROC_REF(adjust_difficulty))
|
||||
challenge?.update_difficulty()
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/proc/on_minigame_started(mob/living/source, datum/fishing_challenge/challenge)
|
||||
SIGNAL_HANDLER
|
||||
RegisterSignal(challenge, COMSIG_FISHING_CHALLENGE_GET_DIFFICULTY, PROC_REF(adjust_difficulty), TRUE)
|
||||
|
||||
/datum/component/adjust_fishing_difficulty/proc/adjust_difficulty(datum/fishing_challenge/challenge, reward_path, obj/item/fishing_rod/rod, mob/living/user, list/holder)
|
||||
SIGNAL_HANDLER
|
||||
holder[1] += modifier
|
||||
@@ -63,7 +63,7 @@
|
||||
var/obj/item/fishing_rod/rod = possibly_rod
|
||||
if(!istype(rod))
|
||||
return
|
||||
if(HAS_TRAIT(user,TRAIT_GONE_FISHING) || rod.fishing_line)
|
||||
if(GLOB.fishing_challenges_by_user[user] || rod.fishing_line)
|
||||
user.balloon_alert(user, "already fishing")
|
||||
return COMPONENT_NO_AFTERATTACK
|
||||
var/denial_reason = fish_source.reason_we_cant_fish(rod, user, parent)
|
||||
|
||||
@@ -84,26 +84,26 @@
|
||||
return COMPONENT_HOSTILE_NO_ATTACK
|
||||
|
||||
/datum/component/profound_fisher/proc/should_fish_on(mob/living/user, atom/target)
|
||||
if(!HAS_TRAIT(target, TRAIT_FISHING_SPOT) || HAS_TRAIT(user, TRAIT_GONE_FISHING))
|
||||
if(!HAS_TRAIT(target, TRAIT_FISHING_SPOT) || GLOB.fishing_challenges_by_user[user])
|
||||
return FALSE
|
||||
if(user.combat_mode || !user.CanReach(target))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/component/profound_fisher/proc/begin_fishing(mob/living/user, atom/target)
|
||||
RegisterSignal(user, SIGNAL_ADDTRAIT(TRAIT_GONE_FISHING), PROC_REF(actually_fishing_with_internal_rod))
|
||||
RegisterSignal(user, COMSIG_MOB_BEGIN_FISHING, PROC_REF(actually_fishing_with_internal_rod))
|
||||
our_rod.melee_attack_chain(user, target)
|
||||
UnregisterSignal(user, SIGNAL_ADDTRAIT(TRAIT_GONE_FISHING))
|
||||
UnregisterSignal(user, COMSIG_MOB_BEGIN_FISHING)
|
||||
|
||||
/datum/component/profound_fisher/proc/actually_fishing_with_internal_rod(datum/source)
|
||||
SIGNAL_HANDLER
|
||||
ADD_TRAIT(source, TRAIT_PROFOUND_FISHER, REF(parent))
|
||||
RegisterSignal(source, SIGNAL_REMOVETRAIT(TRAIT_GONE_FISHING), PROC_REF(remove_profound_fisher))
|
||||
RegisterSignal(source, COMSIG_MOB_COMPLETE_FISHING, PROC_REF(remove_profound_fisher))
|
||||
|
||||
/datum/component/profound_fisher/proc/remove_profound_fisher(datum/source)
|
||||
SIGNAL_HANDLER
|
||||
REMOVE_TRAIT(source, TRAIT_PROFOUND_FISHER, TRAIT_GENERIC)
|
||||
UnregisterSignal(source, SIGNAL_REMOVETRAIT(TRAIT_GONE_FISHING))
|
||||
UnregisterSignal(source, COMSIG_MOB_COMPLETE_FISHING)
|
||||
|
||||
/datum/component/profound_fisher/proc/pretend_fish(mob/living/source, atom/target)
|
||||
if(DOING_INTERACTION_WITH_TARGET(source, target))
|
||||
|
||||
@@ -515,6 +515,7 @@
|
||||
. = ..()
|
||||
atom_storage.max_slots = 1
|
||||
atom_storage.set_holdable(/obj/item/clothing/mask/luchador)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2)
|
||||
|
||||
/obj/item/storage/belt/military
|
||||
name = "chest rig"
|
||||
|
||||
@@ -16,7 +16,17 @@
|
||||
var/buildstacktype = /obj/item/stack/sheet/iron
|
||||
var/buildstackamount = 1
|
||||
var/item_chair = /obj/item/chair // if null it can't be picked up
|
||||
///How much sitting on this chair influences fishing difficulty
|
||||
var/fishing_modifier = -3
|
||||
|
||||
/obj/structure/chair/Initialize(mapload)
|
||||
. = ..()
|
||||
if(prob(0.2))
|
||||
name = "tactical [name]"
|
||||
fishing_modifier -= 4
|
||||
MakeRotate()
|
||||
if(can_buckle && fishing_modifier)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier)
|
||||
|
||||
/obj/structure/chair/examine(mob/user)
|
||||
. = ..()
|
||||
@@ -24,12 +34,6 @@
|
||||
if(!has_buckled_mobs() && can_buckle)
|
||||
. += span_notice("While standing on [src], drag and drop your sprite onto [src] to buckle to it.")
|
||||
|
||||
/obj/structure/chair/Initialize(mapload)
|
||||
. = ..()
|
||||
if(prob(0.2))
|
||||
name = "tactical [name]"
|
||||
MakeRotate()
|
||||
|
||||
///This proc adds the rotate component, overwrite this if you for some reason want to change some specific args.
|
||||
/obj/structure/chair/proc/MakeRotate()
|
||||
AddComponent(/datum/component/simple_rotation, ROTATION_IGNORE_ANCHORED|ROTATION_GHOSTS_ALLOWED)
|
||||
@@ -134,6 +138,7 @@
|
||||
buildstacktype = /obj/item/stack/sheet/mineral/wood
|
||||
buildstackamount = 3
|
||||
item_chair = /obj/item/chair/wood
|
||||
fishing_modifier = -4
|
||||
|
||||
/obj/structure/chair/wood/narsie_act()
|
||||
return
|
||||
@@ -151,6 +156,7 @@
|
||||
max_integrity = 70
|
||||
buildstackamount = 2
|
||||
item_chair = null
|
||||
fishing_modifier = -5
|
||||
// The mutable appearance used for the overlay over buckled mobs.
|
||||
var/mutable_appearance/armrest
|
||||
|
||||
@@ -226,11 +232,13 @@
|
||||
desc = "A luxurious chair, the many purple scales reflect the light in a most pleasing manner."
|
||||
icon_state = "carp_chair"
|
||||
buildstacktype = /obj/item/stack/sheet/animalhide/carp
|
||||
fishing_modifier = -10
|
||||
|
||||
/obj/structure/chair/office
|
||||
anchored = FALSE
|
||||
buildstackamount = 5
|
||||
item_chair = null
|
||||
fishing_modifier = -4
|
||||
icon_state = "officechair_dark"
|
||||
|
||||
/obj/structure/chair/office/Initialize(mapload)
|
||||
@@ -245,6 +253,10 @@
|
||||
/obj/structure/chair/office/tactical
|
||||
name = "tactical swivel chair"
|
||||
|
||||
/obj/structure/chair/office/tactical/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -10)
|
||||
|
||||
/obj/structure/chair/office/light
|
||||
icon_state = "officechair_white"
|
||||
|
||||
@@ -436,6 +448,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0)
|
||||
desc = "You sit in this. Either by will or force. Looks REALLY uncomfortable."
|
||||
icon_state = "chairold"
|
||||
item_chair = null
|
||||
fishing_modifier = 4
|
||||
|
||||
/obj/structure/chair/bronze
|
||||
name = "brass chair"
|
||||
@@ -445,6 +458,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0)
|
||||
buildstacktype = /obj/item/stack/sheet/bronze
|
||||
buildstackamount = 1
|
||||
item_chair = null
|
||||
fishing_modifier = -12 //the pinnacle of Ratvarian technology.
|
||||
/// Total rotations made
|
||||
var/turns = 0
|
||||
|
||||
@@ -484,6 +498,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0)
|
||||
item_chair = null
|
||||
obj_flags = parent_type::obj_flags | NO_DEBRIS_AFTER_DECONSTRUCTION
|
||||
alpha = 0
|
||||
fishing_modifier = -20 //it only lives for 25 seconds, so we make them worth it.
|
||||
|
||||
/obj/structure/chair/mime/wrench_act_secondary(mob/living/user, obj/item/weapon)
|
||||
return NONE
|
||||
@@ -505,6 +520,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0)
|
||||
buildstacktype = /obj/item/stack/sheet/plastic
|
||||
buildstackamount = 2
|
||||
item_chair = /obj/item/chair/plastic
|
||||
fishing_modifier = -8
|
||||
|
||||
/obj/structure/chair/plastic/post_buckle_mob(mob/living/Mob)
|
||||
Mob.pixel_y += 2
|
||||
|
||||
@@ -19,6 +19,7 @@ path/corner/color_name {\
|
||||
icon = 'icons/obj/chairs_wide.dmi'
|
||||
buildstackamount = 1
|
||||
item_chair = null
|
||||
fishing_modifier = -4
|
||||
var/mutable_appearance/armrest
|
||||
|
||||
/obj/structure/chair/sofa/Initialize(mapload)
|
||||
|
||||
@@ -26,3 +26,4 @@
|
||||
. = ..()
|
||||
AddElement(/datum/element/earhealing)
|
||||
AddComponent(/datum/component/wearertargeting/earprotection, list(ITEM_SLOT_EARS))
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -1)
|
||||
|
||||
@@ -344,6 +344,7 @@
|
||||
/obj/item/clothing/glasses/sunglasses/Initialize(mapload)
|
||||
. = ..()
|
||||
add_glasses_slapcraft_component()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -1)
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/proc/add_glasses_slapcraft_component()
|
||||
var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/hudsunsec, /datum/crafting_recipe/hudsunmed, /datum/crafting_recipe/hudsundiag, /datum/crafting_recipe/scienceglasses)
|
||||
@@ -444,9 +445,21 @@
|
||||
visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT
|
||||
glass_colour_type = /datum/client_colour/glass_colour/gray
|
||||
|
||||
/obj/item/clothing/glasses/welding/attack_self(mob/user)
|
||||
/obj/item/clothing/glasses/welding/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!up)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 8)
|
||||
|
||||
/obj/item/clothing/glasses/welding/attack_self(mob/living/user)
|
||||
adjust_visor(user)
|
||||
|
||||
/obj/item/clothing/glasses/welding/adjust_visor(mob/user)
|
||||
. = ..()
|
||||
if(up)
|
||||
qdel(GetComponent(/datum/component/adjust_fishing_difficulty))
|
||||
else
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 8)
|
||||
|
||||
/obj/item/clothing/glasses/welding/update_icon_state()
|
||||
. = ..()
|
||||
icon_state = "[initial(icon_state)][up ? "up" : ""]"
|
||||
@@ -465,6 +478,10 @@
|
||||
tint = INFINITY // You WILL Be blind, no matter what
|
||||
dog_fashion = /datum/dog_fashion/head
|
||||
|
||||
/obj/item/clothing/glasses/blindfold/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 8)
|
||||
|
||||
/obj/item/clothing/glasses/trickblindfold
|
||||
name = "blindfold"
|
||||
desc = "A see-through blindfold perfect for cheating at games like pin the stun baton on the clown."
|
||||
@@ -502,6 +519,10 @@
|
||||
flags_cover = GLASSESCOVERSEYES
|
||||
glass_colour_type = /datum/client_colour/glass_colour/red
|
||||
|
||||
/obj/item/clothing/glasses/thermal/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -4)
|
||||
|
||||
/obj/item/clothing/glasses/thermal/emp_act(severity)
|
||||
. = ..()
|
||||
if(. & EMP_PROTECT_SELF)
|
||||
@@ -614,6 +635,10 @@
|
||||
var/list/hudlist = list(DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC, DATA_HUD_SECURITY_ADVANCED, DATA_HUD_BOT_PATH)
|
||||
var/xray = FALSE
|
||||
|
||||
/obj/item/clothing/glasses/debug/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -15)
|
||||
|
||||
/obj/item/clothing/glasses/debug/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
if(!(slot & ITEM_SLOT_EYES))
|
||||
@@ -700,6 +725,10 @@
|
||||
/// Hallucination datum currently being used for seeing mares
|
||||
var/datum/hallucination/stored_hallucination
|
||||
|
||||
/obj/item/clothing/glasses/nightmare_vision/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 13)
|
||||
|
||||
/obj/item/clothing/glasses/nightmare_vision/Destroy()
|
||||
QDEL_NULL(stored_hallucination)
|
||||
return ..()
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
resistance_flags = NONE
|
||||
armor_type = /datum/armor/gloves_bracer
|
||||
|
||||
/obj/item/clothing/gloves/bracer/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 2)
|
||||
|
||||
/datum/armor/gloves_bracer
|
||||
melee = 15
|
||||
bullet = 25
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
clothing_traits = list(TRAIT_PLANT_SAFE)
|
||||
armor_type = /datum/armor/gloves_botanic_leather
|
||||
|
||||
/obj/item/clothing/gloves/botanic_leather/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2)
|
||||
|
||||
/datum/armor/gloves_botanic_leather
|
||||
bio = 50
|
||||
fire = 70
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
)
|
||||
|
||||
AddComponent(/datum/component/martial_art_giver, style_to_give)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 19)
|
||||
|
||||
/obj/item/clothing/gloves/boxing/evil
|
||||
name = "evil boxing gloves"
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
/obj/item/clothing/gloves/color/fingerless/Initialize(mapload)
|
||||
. = ..()
|
||||
var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/gripperoffbrand)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2)
|
||||
|
||||
AddElement(
|
||||
/datum/element/slapcrafting,\
|
||||
|
||||
@@ -25,8 +25,16 @@
|
||||
greyscale_colors = null
|
||||
inhand_icon_state = null
|
||||
|
||||
/obj/item/clothing/gloves/combat/wizard/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3) //something something wizard casting
|
||||
|
||||
/obj/item/clothing/gloves/combat/floortile
|
||||
name = "floortile camouflage gloves"
|
||||
desc = "Is it just me or is there a pair of gloves on the floor?"
|
||||
icon_state = "ftc_gloves"
|
||||
inhand_icon_state = "greyscale_gloves"
|
||||
|
||||
/obj/item/clothing/gloves/combat/floortiletile/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3) //tacticool
|
||||
|
||||
@@ -15,13 +15,19 @@
|
||||
cut_type = /obj/item/clothing/gloves/cut
|
||||
clothing_traits = list(TRAIT_CHUNKYFINGERS)
|
||||
|
||||
/obj/item/clothing/gloves/color/yellow/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 10)
|
||||
|
||||
/obj/item/clothing/gloves/color/yellow/apply_fantasy_bonuses(bonus)
|
||||
. = ..()
|
||||
if(bonus >= 10)
|
||||
detach_clothing_traits(TRAIT_CHUNKYFINGERS)
|
||||
qdel(GetComponent(/datum/component/adjust_fishing_difficulty))
|
||||
|
||||
/obj/item/clothing/gloves/color/yellow/remove_fantasy_bonuses(bonus)
|
||||
attach_clothing_traits(TRAIT_CHUNKYFINGERS)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 10)
|
||||
return ..()
|
||||
|
||||
/datum/armor/color_yellow
|
||||
@@ -116,6 +122,10 @@
|
||||
greyscale_colors = null
|
||||
clothing_traits = list(TRAIT_FINGERPRINT_PASSTHROUGH)
|
||||
|
||||
/obj/item/clothing/gloves/cut/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3)
|
||||
|
||||
/obj/item/clothing/gloves/cut/heirloom
|
||||
desc = "The old gloves your great grandfather stole from Engineering, many moons ago. They've seen some tough times recently."
|
||||
|
||||
@@ -131,3 +141,7 @@
|
||||
heat_protection = HANDS
|
||||
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
|
||||
resistance_flags = NONE
|
||||
|
||||
/obj/item/clothing/gloves/chief_engineer/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -4)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
/obj/item/clothing/gloves/fingerless/punch_mitts/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -4)
|
||||
AddComponent(/datum/component/martial_art_giver, /datum/martial_art/boxing/hunter)
|
||||
|
||||
/datum/armor/gloves_mitts
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_ITEM_EQUIPPED, PROC_REF(on_glove_equip))
|
||||
RegisterSignal(src, COMSIG_ITEM_POST_UNEQUIP, PROC_REF(on_glove_unequip))
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 19)
|
||||
|
||||
/// Called when the glove is equipped. Adds a component to the equipper and stores a weak reference to it.
|
||||
/obj/item/clothing/gloves/cargo_gauntlet/proc/on_glove_equip(datum/source, mob/equipper, slot)
|
||||
@@ -59,6 +60,7 @@
|
||||
/obj/item/clothing/gloves/rapid/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/wearertargeting/punchcooldown)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -7)
|
||||
|
||||
/obj/item/clothing/gloves/radio
|
||||
name = "translation gloves"
|
||||
@@ -74,6 +76,10 @@
|
||||
icon_state = "black"
|
||||
greyscale_colors = "#2f2e31"
|
||||
|
||||
/obj/item/clothing/gloves/race/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -7)
|
||||
|
||||
/obj/item/clothing/gloves/captain
|
||||
desc = "Regal blue gloves, with a nice gold trim, a diamond anti-shock coating, and an integrated thermal barrier. Swanky."
|
||||
name = "captain's gloves"
|
||||
@@ -90,6 +96,10 @@
|
||||
resistance_flags = NONE
|
||||
clothing_traits = list(TRAIT_FAST_CUFFING)
|
||||
|
||||
/obj/item/clothing/gloves/captain/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -4)
|
||||
|
||||
/datum/armor/captain_gloves
|
||||
bio = 90
|
||||
fire = 70
|
||||
@@ -117,6 +127,10 @@
|
||||
greyscale_colors = "#99eeff"
|
||||
clothing_traits = list(TRAIT_QUICKER_CARRY, TRAIT_FASTMED)
|
||||
|
||||
/obj/item/clothing/gloves/latex/nitrile/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -4)
|
||||
|
||||
/obj/item/clothing/gloves/latex/coroner
|
||||
name = "coroner's gloves"
|
||||
desc = "Black gloves made from latex with a superhydrophobic coating. Useful for picking bodies up instead of dragging blood behind."
|
||||
@@ -156,42 +170,50 @@
|
||||
clothing_traits = list(TRAIT_QUICKER_CARRY, TRAIT_CHUNKYFINGERS)
|
||||
clothing_flags = THICKMATERIAL
|
||||
|
||||
/obj/item/clothing/gloves/atmos/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 6)
|
||||
|
||||
///A pair of gloves that both allow the user to fish without the need of a held fishing rod and provides athletics experience.
|
||||
/obj/item/clothing/gloves/fishing
|
||||
name = "athletic fishing gloves"
|
||||
desc = "A pair of gloves to fish without a fishing rod but your raw <b>athletics</b> strength. It doubles as a good workout device. <i><b>WARNING</b>: May cause injuries when catching bigger fish.</i>"
|
||||
icon_state = "fishing_gloves"
|
||||
///The current fishing minigame datum the wearer is engaged in.
|
||||
var/datum/fishing_challenge/challenge
|
||||
|
||||
/obj/item/clothing/gloves/fishing/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/profound_fisher, new /obj/item/fishing_rod/mob_fisher/athletic(src))
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3) //on top of the extra that you get from the athletics skill.
|
||||
|
||||
/obj/item/clothing/gloves/fishing/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
if(slot == ITEM_SLOT_GLOVES)
|
||||
RegisterSignal(user, SIGNAL_ADDTRAIT(TRAIT_ACTIVELY_FISHING), PROC_REF(begin_workout))
|
||||
RegisterSignal(user, COMSIG_MOB_BEGIN_FISHING_MINIGAME, PROC_REF(begin_workout))
|
||||
|
||||
/obj/item/clothing/gloves/fishing/dropped(mob/user)
|
||||
UnregisterSignal(user, list(SIGNAL_ADDTRAIT(TRAIT_ACTIVELY_FISHING), SIGNAL_REMOVETRAIT(TRAIT_ACTIVELY_FISHING)))
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
UnregisterSignal(user, COMSIG_MOB_BEGIN_FISHING_MINIGAME)
|
||||
if(challenge)
|
||||
stop_workout(user)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/gloves/fishing/proc/begin_workout(datum/source)
|
||||
/obj/item/clothing/gloves/fishing/proc/begin_workout(datum/source, datum/fishing_challenge/challenge)
|
||||
SIGNAL_HANDLER
|
||||
RegisterSignal(source, SIGNAL_REMOVETRAIT(TRAIT_ACTIVELY_FISHING), PROC_REF(stop_workout))
|
||||
RegisterSignal(source, COMSIG_MOB_COMPLETE_FISHING, PROC_REF(stop_workout))
|
||||
if(HAS_TRAIT(source, TRAIT_PROFOUND_FISHER)) //Only begin working out if we're fishing with these gloves and not some other fishing rod..
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
src.challenge = challenge
|
||||
|
||||
/obj/item/clothing/gloves/fishing/proc/stop_workout(datum/source)
|
||||
SIGNAL_HANDLER
|
||||
UnregisterSignal(source, SIGNAL_REMOVETRAIT(TRAIT_ACTIVELY_FISHING))
|
||||
UnregisterSignal(source, COMSIG_MOB_COMPLETE_FISHING)
|
||||
challenge = null
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
|
||||
/obj/item/clothing/gloves/fishing/process(seconds_per_tick)
|
||||
var/mob/living/wearer = loc
|
||||
var/list/trait_source = GET_TRAIT_SOURCES(wearer, TRAIT_ACTIVELY_FISHING)
|
||||
var/datum/fishing_challenge/challenge = trait_source[1]
|
||||
var/stamina_exhaustion = 2.5 + challenge.difficulty * 0.025
|
||||
var/stamina_exhaustion = 2 + challenge.difficulty * 0.02
|
||||
var/is_heavy_gravity = wearer.has_gravity() > STANDARD_GRAVITY
|
||||
var/obj/item/organ/internal/cyberimp/chest/spine/potential_spine = wearer.get_organ_slot(ORGAN_SLOT_SPINE)
|
||||
if(istype(potential_spine))
|
||||
@@ -227,7 +249,7 @@
|
||||
return list()
|
||||
|
||||
/obj/item/fishing_rod/mob_fisher/athletic/hook_hit(atom/atom_hit_by_hook_projectile, mob/user)
|
||||
difficulty_modifier = -3 * user.mind?.get_skill_level(/datum/skill/athletics)
|
||||
difficulty_modifier = -3 * (user.mind?.get_skill_level(/datum/skill/athletics) - 1)
|
||||
return ..()
|
||||
|
||||
/obj/item/fishing_rod/mob_fisher/athletic/proc/noodling_is_dangerous(datum/source, atom/movable/reward, mob/living/user)
|
||||
|
||||
@@ -22,6 +22,12 @@
|
||||
var/tackle_speed = 1
|
||||
/// See: [/datum/component/tackler/var/skill_mod]
|
||||
var/skill_mod = 1
|
||||
///How much these gloves affect fishing difficulty
|
||||
var/fishing_modifier = -5
|
||||
|
||||
/obj/item/clothing/gloves/tackler/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier) //fishing tackle equipment (ba dum tsh)
|
||||
|
||||
/obj/item/clothing/gloves/tackler/Destroy()
|
||||
tackler = null
|
||||
@@ -55,6 +61,7 @@
|
||||
tackle_speed = 2
|
||||
min_distance = 2
|
||||
skill_mod = -2
|
||||
fishing_modifier = -8
|
||||
|
||||
/obj/item/clothing/gloves/tackler/combat
|
||||
name = "gorilla gloves"
|
||||
@@ -106,9 +113,11 @@
|
||||
base_knockdown = 1.75 SECONDS
|
||||
min_distance = 2
|
||||
skill_mod = -1
|
||||
fishing_modifier = -3
|
||||
|
||||
/obj/item/clothing/gloves/tackler/football
|
||||
name = "football gloves"
|
||||
desc = "Gloves for football players! Teaches them how to tackle like a pro."
|
||||
icon_state = "tackle_gloves"
|
||||
inhand_icon_state = null
|
||||
fishing_modifier = -3
|
||||
|
||||
@@ -107,6 +107,10 @@
|
||||
inhand_icon_state = null
|
||||
dog_fashion = /datum/dog_fashion/head/pirate
|
||||
|
||||
/obj/item/clothing/head/collectable/pirate/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3)
|
||||
|
||||
/obj/item/clothing/head/collectable/kitty
|
||||
name = "collectable kitty ears"
|
||||
desc = "The fur feels... a bit too realistic."
|
||||
@@ -129,6 +133,10 @@
|
||||
icon_state = "wizard"
|
||||
dog_fashion = /datum/dog_fashion/head/blue_wizard
|
||||
|
||||
/obj/item/clothing/head/collectable/wizard/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -1)
|
||||
|
||||
/obj/item/clothing/head/collectable/hardhat
|
||||
name = "collectable hard hat"
|
||||
desc = "WARNING! Offers no real protection, or luminosity, but damn, is it fancy!"
|
||||
@@ -173,3 +181,7 @@
|
||||
inhand_icon_state = "swatsyndie_helmet"
|
||||
clothing_flags = SNUG_FIT
|
||||
flags_inv = HIDEHAIR
|
||||
|
||||
/obj/item/clothing/head/collectable/swat/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 2)
|
||||
|
||||
@@ -36,6 +36,10 @@
|
||||
icon_state = "fedora_carpskin"
|
||||
inhand_icon_state = null
|
||||
|
||||
/obj/item/clothing/head/fedora/carpskin/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -4)
|
||||
|
||||
/obj/item/clothing/head/fedora/beige/press
|
||||
name = "press fedora"
|
||||
desc = "An beige fedora with a piece of paper saying \"PRESS\" stuck in its rim."
|
||||
|
||||
@@ -238,6 +238,10 @@
|
||||
dog_fashion = /datum/dog_fashion/head/pumpkin/unlit
|
||||
clothing_traits = list()
|
||||
|
||||
/obj/item/clothing/head/utility/hardhat/pumpkinhead/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 3)
|
||||
|
||||
/obj/item/clothing/head/utility/hardhat/pumpkinhead/set_light_on(new_value)
|
||||
. = ..()
|
||||
if(isnull(.))
|
||||
|
||||
@@ -201,6 +201,10 @@
|
||||
visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF
|
||||
clothing_traits = list(TRAIT_HEAD_INJURY_BLOCKED)
|
||||
|
||||
/obj/item/clothing/head/helmet/toggleable/riot/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 2)
|
||||
|
||||
/datum/armor/toggleable_riot
|
||||
melee = 50
|
||||
bullet = 10
|
||||
@@ -280,6 +284,10 @@
|
||||
dog_fashion = null
|
||||
clothing_traits = list(TRAIT_HEAD_INJURY_BLOCKED)
|
||||
|
||||
/obj/item/clothing/head/helmet/swat/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 3)
|
||||
|
||||
/datum/armor/helmet_swat
|
||||
melee = 40
|
||||
bullet = 30
|
||||
@@ -429,6 +437,10 @@
|
||||
dog_fashion = null
|
||||
clothing_traits = list(TRAIT_HEAD_INJURY_BLOCKED)
|
||||
|
||||
/obj/item/clothing/head/helmet/knight/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 3)
|
||||
|
||||
/datum/armor/helmet_knight
|
||||
melee = 50
|
||||
bullet = 10
|
||||
|
||||
@@ -624,6 +624,10 @@
|
||||
flags_inv = HIDEHAIR //Cover your head doctor!
|
||||
w_class = WEIGHT_CLASS_SMALL //surgery cap can be easily crumpled
|
||||
|
||||
/obj/item/clothing/head/utility/surgerycap/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2) //FISH DOCTOR?!
|
||||
|
||||
/obj/item/clothing/head/utility/surgerycap/attack_self(mob/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
@@ -666,6 +670,10 @@
|
||||
icon_state = "headmirror"
|
||||
body_parts_covered = NONE
|
||||
|
||||
/obj/item/clothing/head/utility/head_mirror/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2) //FISH DOCTOR?!
|
||||
|
||||
/obj/item/clothing/head/utility/head_mirror/examine(mob/user)
|
||||
. = ..()
|
||||
. += span_notice("In a properly lit room, you can use this to examine people's eyes, ears, and mouth <i>closer</i>.")
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
/obj/item/clothing/head/mothcap/original/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/scope, range_modifier = 1.2, zoom_method = ZOOM_METHOD_ITEM_ACTION, item_action_type = /datum/action/item_action/hands_free/moth_googles)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2)
|
||||
|
||||
/obj/item/clothing/head/mothcap/original/item_action_slot_check(slot, mob/user, datum/action/action)
|
||||
return (slot & ITEM_SLOT_HEAD)
|
||||
|
||||
@@ -5,8 +5,9 @@
|
||||
inhand_icon_state = null
|
||||
dog_fashion = /datum/dog_fashion/head/pirate
|
||||
|
||||
/obj/item/clothing/head/costume/pirate
|
||||
var/datum/language/piratespeak/L = new
|
||||
/obj/item/clothing/head/costume/pirate/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3)
|
||||
|
||||
/obj/item/clothing/head/costume/pirate/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
|
||||
@@ -175,6 +175,7 @@
|
||||
. = ..()
|
||||
AddComponent(/datum/component/speechmod, replacements = strings("crustacean_replacement.json", "crustacean")) //you asked for this.
|
||||
AddElement(/datum/element/skill_reward, /datum/skill/fishing)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -4)
|
||||
|
||||
#define PROPHAT_MOOD "prophat"
|
||||
|
||||
|
||||
@@ -18,6 +18,11 @@
|
||||
resistance_flags = FIRE_PROOF
|
||||
clothing_flags = SNUG_FIT | STACKABLE_HELMET_EXEMPT
|
||||
|
||||
/obj/item/clothing/head/utility/welding/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!up)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 8)
|
||||
|
||||
/datum/armor/utility_welding
|
||||
melee = 10
|
||||
fire = 100
|
||||
@@ -26,6 +31,13 @@
|
||||
/obj/item/clothing/head/utility/welding/attack_self(mob/user)
|
||||
adjust_visor(user)
|
||||
|
||||
/obj/item/clothing/head/utility/welding/adjust_visor(mob/user)
|
||||
. = ..()
|
||||
if(up)
|
||||
qdel(GetComponent(/datum/component/adjust_fishing_difficulty))
|
||||
else
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 8)
|
||||
|
||||
/obj/item/clothing/head/utility/welding/update_icon_state()
|
||||
. = ..()
|
||||
icon_state = "[initial(icon_state)][up ? "up" : ""]"
|
||||
|
||||
@@ -150,6 +150,18 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
|
||||
animal_sounds_alt = list("HUUUUU!!","SMOOOOOKIN'!!","Hello my baby, hello my honey, hello my rag-time gal.", "Feels bad, man.", "GIT DIS GUY OFF ME!!" ,"SOMEBODY STOP ME!!", "NORMIES, GET OUT!!")
|
||||
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
|
||||
|
||||
/obj/item/clothing/mask/animal/frog/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, cursed ? 2 : -2)
|
||||
|
||||
/obj/item/clothing/mask/animal/frog/make_cursed()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 2)
|
||||
|
||||
/obj/item/clothing/mask/animal/frog/clear_curse()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2)
|
||||
|
||||
/obj/item/clothing/mask/animal/frog/cursed
|
||||
cursed = TRUE
|
||||
|
||||
@@ -227,6 +239,18 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
|
||||
inhand_icon_state = null
|
||||
animal_sounds = list("RAWR!","Rawr!","GRR!","Growl!")
|
||||
|
||||
/obj/item/clothing/mask/animal/small/bear/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, cursed ? 2 : -2)
|
||||
|
||||
/obj/item/clothing/mask/animal/small/bear/make_cursed()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 2)
|
||||
|
||||
/obj/item/clothing/mask/animal/small/bear/clear_curse()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2)
|
||||
|
||||
/obj/item/clothing/mask/animal/small/bear/cursed
|
||||
cursed = TRUE
|
||||
|
||||
@@ -275,5 +299,17 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
|
||||
animal_sounds_alt = list("Eekum-bokum!", "Oomenacka!", "In mah head..... Zombi.... Zombi!")
|
||||
animal_sounds_alt_probability = 5
|
||||
|
||||
/obj/item/clothing/mask/animal/small/tribal/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, cursed ? 4 : -4)
|
||||
|
||||
/obj/item/clothing/mask/animal/small/tribal/make_cursed()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 4)
|
||||
|
||||
/obj/item/clothing/mask/animal/small/tribal/clear_curse()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -4)
|
||||
|
||||
/obj/item/clothing/mask/animal/small/tribal/cursed //adminspawn only.
|
||||
cursed = TRUE
|
||||
|
||||
@@ -24,6 +24,10 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
actions_types = list(/datum/action/item_action/adjust)
|
||||
|
||||
/obj/item/clothing/mask/floortilebalaclava/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3) //tacticool
|
||||
|
||||
/obj/item/clothing/mask/floortilebalaclava/attack_self(mob/user)
|
||||
adjust_visor(user)
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
armor_type = /datum/armor/mask_gas
|
||||
flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH | PEPPERPROOF
|
||||
resistance_flags = NONE
|
||||
voice_filter = "lowpass=f=750,volume=2"
|
||||
///Max numbers of installable filters
|
||||
var/max_filters = 1
|
||||
///List to keep track of each filter
|
||||
@@ -28,19 +29,19 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
var/has_fov = TRUE
|
||||
///Cigarette in the mask
|
||||
var/obj/item/cigarette/cig
|
||||
voice_filter = "lowpass=f=750,volume=2"
|
||||
///How much does this mask affect fishing difficulty
|
||||
var/fishing_modifier = 2
|
||||
|
||||
/datum/armor/mask_gas
|
||||
bio = 100
|
||||
|
||||
/obj/item/clothing/mask/gas/worn_overlays(mutable_appearance/standing, isinhands)
|
||||
. = ..()
|
||||
if(!isinhands && cig)
|
||||
. += cig.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = 'icons/mob/clothing/mask.dmi')
|
||||
|
||||
/obj/item/clothing/mask/gas/Initialize(mapload)
|
||||
. = ..()
|
||||
init_fov()
|
||||
|
||||
if(fishing_modifier)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier)
|
||||
|
||||
if(!max_filters || !starting_filter_type)
|
||||
return
|
||||
|
||||
@@ -49,6 +50,11 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
LAZYADD(gas_filters, inserted_filter)
|
||||
has_filter = TRUE
|
||||
|
||||
/obj/item/clothing/mask/gas/worn_overlays(mutable_appearance/standing, isinhands)
|
||||
. = ..()
|
||||
if(!isinhands && cig)
|
||||
. += cig.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = 'icons/mob/clothing/mask.dmi')
|
||||
|
||||
/obj/item/clothing/mask/gas/Destroy()
|
||||
QDEL_LAZYLIST(gas_filters)
|
||||
return..()
|
||||
@@ -222,6 +228,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT
|
||||
resistance_flags = FIRE_PROOF
|
||||
clothing_flags = parent_type::clothing_flags | INTERNALS_ADJUST_EXEMPT
|
||||
fishing_modifier = 8
|
||||
|
||||
/datum/armor/gas_welding
|
||||
melee = 10
|
||||
@@ -236,6 +243,12 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
. = ..()
|
||||
if(.)
|
||||
playsound(src, 'sound/mecha/mechmove03.ogg', 50, TRUE)
|
||||
if(!fishing_modifier)
|
||||
return
|
||||
if(up)
|
||||
qdel(GetComponent(/datum/component/adjust_fishing_difficulty))
|
||||
else
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier)
|
||||
|
||||
/obj/item/clothing/mask/gas/welding/update_icon_state()
|
||||
. = ..()
|
||||
@@ -266,6 +279,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
strip_delay = 60
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
has_fov = FALSE
|
||||
fishing_modifier = 0
|
||||
|
||||
/obj/item/clothing/mask/gas/clown_hat
|
||||
name = "clown wig and mask"
|
||||
@@ -285,6 +299,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
has_fov = FALSE
|
||||
var/list/clownmask_designs = list()
|
||||
voice_filter = null // performer masks expect to be talked through
|
||||
fishing_modifier = 0
|
||||
|
||||
/obj/item/clothing/mask/gas/clown_hat/plasmaman
|
||||
starting_filter_type = /obj/item/gas_filter/plasmaman
|
||||
@@ -327,6 +342,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
flags_cover = MASKCOVERSEYES
|
||||
resistance_flags = FLAMMABLE
|
||||
has_fov = FALSE
|
||||
fishing_modifier = 0
|
||||
|
||||
/obj/item/clothing/mask/gas/mime
|
||||
name = "mime mask"
|
||||
@@ -340,6 +356,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
actions_types = list(/datum/action/item_action/adjust)
|
||||
species_exception = list(/datum/species/golem)
|
||||
has_fov = FALSE
|
||||
fishing_modifier = 0
|
||||
var/list/mimemask_designs = list()
|
||||
|
||||
/obj/item/clothing/mask/gas/mime/plasmaman
|
||||
@@ -384,6 +401,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
flags_cover = MASKCOVERSEYES
|
||||
resistance_flags = FLAMMABLE
|
||||
has_fov = FALSE
|
||||
fishing_modifier = 0
|
||||
|
||||
/obj/item/clothing/mask/gas/sexymime
|
||||
name = "sexy mime mask"
|
||||
@@ -395,6 +413,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
resistance_flags = FLAMMABLE
|
||||
species_exception = list(/datum/species/golem)
|
||||
has_fov = FALSE
|
||||
fishing_modifier = 0
|
||||
|
||||
/obj/item/clothing/mask/gas/cyborg
|
||||
name = "cyborg visor"
|
||||
@@ -403,6 +422,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
resistance_flags = FLAMMABLE
|
||||
has_fov = FALSE
|
||||
flags_cover = MASKCOVERSEYES
|
||||
fishing_modifier = 0
|
||||
|
||||
/obj/item/clothing/mask/gas/owl_mask
|
||||
name = "owl mask"
|
||||
@@ -413,6 +433,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
flags_cover = MASKCOVERSEYES
|
||||
resistance_flags = FLAMMABLE
|
||||
has_fov = FALSE
|
||||
fishing_modifier = -1
|
||||
|
||||
/obj/item/clothing/mask/gas/carp
|
||||
name = "carp mask"
|
||||
@@ -421,6 +442,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
inhand_icon_state = null
|
||||
has_fov = FALSE
|
||||
flags_cover = MASKCOVERSEYES
|
||||
fishing_modifier = -3
|
||||
|
||||
/obj/item/clothing/mask/gas/tiki_mask
|
||||
name = "tiki mask"
|
||||
@@ -434,6 +456,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
max_integrity = 100
|
||||
actions_types = list(/datum/action/item_action/adjust)
|
||||
dog_fashion = null
|
||||
fishing_modifier = -2
|
||||
var/list/tikimask_designs = list()
|
||||
|
||||
/obj/item/clothing/mask/gas/tiki_mask/Initialize(mapload)
|
||||
@@ -476,6 +499,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
flags_inv = HIDEFACIALHAIR|HIDEFACE|HIDEEYES|HIDEEARS|HIDEHAIR|HIDESNOUT
|
||||
has_fov = FALSE
|
||||
fishing_modifier = -2
|
||||
|
||||
/obj/item/clothing/mask/gas/prop
|
||||
name = "prop gas mask"
|
||||
@@ -486,6 +510,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
flags_cover = MASKCOVERSMOUTH
|
||||
resistance_flags = FLAMMABLE
|
||||
has_fov = FALSE
|
||||
fishing_modifier = 0
|
||||
|
||||
/obj/item/clothing/mask/gas/atmosprop
|
||||
name = "prop atmospheric gas mask"
|
||||
@@ -497,6 +522,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
flags_cover = MASKCOVERSMOUTH
|
||||
resistance_flags = FLAMMABLE
|
||||
has_fov = FALSE
|
||||
fishing_modifier = 0
|
||||
|
||||
/obj/item/clothing/mask/gas/driscoll
|
||||
name = "driscoll mask"
|
||||
@@ -505,3 +531,4 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
|
||||
flags_inv = HIDEFACIALHAIR
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
inhand_icon_state = null
|
||||
fishing_modifier = 0
|
||||
|
||||
@@ -57,6 +57,7 @@ GLOBAL_LIST_INIT(hailer_phrases, list(
|
||||
visor_flags_cover = MASKCOVERSMOUTH
|
||||
tint = 0
|
||||
has_fov = FALSE
|
||||
fishing_modifier = 0
|
||||
unique_death = 'sound/voice/sec_death.ogg'
|
||||
COOLDOWN_DECLARE(hailer_cooldown)
|
||||
///Decides the phrases available for use; defines used are the last index of a category of available phrases
|
||||
@@ -86,6 +87,7 @@ GLOBAL_LIST_INIT(hailer_phrases, list(
|
||||
visor_flags_inv = 0
|
||||
flags_cover = MASKCOVERSMOUTH | MASKCOVERSEYES | PEPPERPROOF
|
||||
visor_flags_cover = MASKCOVERSMOUTH | MASKCOVERSEYES | PEPPERPROOF
|
||||
fishing_modifier = 2
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/swat/spacepol
|
||||
name = "spacepol mask"
|
||||
@@ -103,6 +105,7 @@ GLOBAL_LIST_INIT(hailer_phrases, list(
|
||||
slot_flags = null
|
||||
aggressiveness = AGGR_GOOD_COP // Borgs are nicecurity!
|
||||
actions_types = list(/datum/action/item_action/halt)
|
||||
fishing_modifier = 0
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/screwdriver_act(mob/living/user, obj/item/I)
|
||||
. = ..()
|
||||
|
||||
@@ -213,6 +213,10 @@
|
||||
desc = "An outdated medical apparatus for listening to the sounds of the human body. It also makes you look like you know what you're doing."
|
||||
icon_state = "stethoscope"
|
||||
|
||||
/obj/item/clothing/neck/stethoscope/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2) //FISH DOCTOR?!
|
||||
|
||||
/obj/item/clothing/neck/stethoscope/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message(span_suicide("[user] puts \the [src] to [user.p_their()] chest! It looks like [user.p_they()] won't hear much!"))
|
||||
return OXYLOSS
|
||||
|
||||
@@ -72,6 +72,10 @@
|
||||
icon_state = "ftc_boots"
|
||||
inhand_icon_state = null
|
||||
|
||||
/obj/item/clothing/shoes/jackboots/floortile/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3) //tacticool
|
||||
|
||||
/obj/item/clothing/shoes/winterboots
|
||||
name = "winter boots"
|
||||
desc = "Boots lined with 'synthetic' animal fur."
|
||||
@@ -175,6 +179,10 @@
|
||||
icon_state = "pirateboots"
|
||||
inhand_icon_state = null
|
||||
|
||||
/obj/item/clothing/shoes/pirate/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2)
|
||||
|
||||
/obj/item/clothing/shoes/pirate/armored
|
||||
armor_type = /datum/armor/shoes_pirate
|
||||
strip_delay = 40
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
create_storage(storage_type = /datum/storage/pockets/shoes/clown)
|
||||
LoadComponent(/datum/component/squeak, squeak_sound, 50, falloff_exponent = 20) //die off quick please
|
||||
AddElement(/datum/element/swabable, CELL_LINE_TABLE_CLOWN, CELL_VIRUS_TABLE_GENERIC, rand(2,3), 0)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 3) //Goofy
|
||||
|
||||
/obj/item/clothing/shoes/clown_shoes/equipped(mob/living/user, slot)
|
||||
. = ..()
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
/obj/item/clothing/shoes/bronze/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/squeak, list('sound/machines/clockcult/integration_cog_install.ogg' = 1, 'sound/magic/clockwork/fellowship_armory.ogg' = 1), 50, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 4)
|
||||
|
||||
/obj/item/clothing/shoes/cookflops
|
||||
desc = "All this talk of antags, greytiding, and griefing... I just wanna grill for god's sake!"
|
||||
@@ -128,6 +129,7 @@
|
||||
|
||||
create_storage(storage_type = /datum/storage/pockets/shoes)
|
||||
LoadComponent(/datum/component/squeak, list('sound/effects/quack.ogg' = 1), 50, falloff_exponent = 20)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -6) //deploy tactical duckling lure
|
||||
|
||||
/obj/item/clothing/shoes/ducky_shoes/equipped(mob/living/user, slot)
|
||||
. = ..()
|
||||
|
||||
@@ -12,11 +12,18 @@
|
||||
can_be_bloody = FALSE
|
||||
custom_price = PAYCHECK_CREW * 3
|
||||
can_be_tied = FALSE
|
||||
///How much these boots affect fishing difficulty
|
||||
var/fishing_modifier = -3
|
||||
|
||||
/obj/item/clothing/shoes/galoshes/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier)
|
||||
|
||||
/obj/item/clothing/shoes/galoshes/dry
|
||||
name = "absorbent galoshes"
|
||||
desc = "A pair of purple rubber boots, designed to prevent slipping on wet surfaces while also drying them."
|
||||
icon_state = "galoshes_dry"
|
||||
fishing_modifier = -6
|
||||
|
||||
/datum/armor/shoes_galoshes
|
||||
bio = 100
|
||||
|
||||
@@ -3,3 +3,7 @@
|
||||
desc = "The height of fashion, and they're pre-polished!"
|
||||
icon_state = "laceups"
|
||||
equip_delay_other = 50
|
||||
|
||||
/obj/item/clothing/shoes/laceup/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 3) //You aren't going to fish with these are you?
|
||||
|
||||
@@ -20,18 +20,30 @@
|
||||
var/slowdown_active = 2
|
||||
/// A list of traits we apply when we get activated
|
||||
var/list/active_traits = list(TRAIT_NO_SLIP_WATER, TRAIT_NO_SLIP_ICE, TRAIT_NO_SLIP_SLIDE, TRAIT_NEGATES_GRAVITY)
|
||||
/// How much do these boots affect fishing when active
|
||||
var/magpulse_fishing_modifier = 8
|
||||
/// How much do these boots affect fishing when not active
|
||||
var/fishing_modifier = 4
|
||||
|
||||
/obj/item/clothing/shoes/magboots/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/update_icon_updates_onmob)
|
||||
RegisterSignal(src, COMSIG_SPEED_POTION_APPLIED, PROC_REF(on_speed_potioned))
|
||||
if(fishing_modifier)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier)
|
||||
|
||||
/// Signal handler for [COMSIG_SPEED_POTION_APPLIED]. Speed potion removes the active slowdown
|
||||
/obj/item/clothing/shoes/magboots/proc/on_speed_potioned(datum/source)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
slowdown_active = 0
|
||||
// Don't need to touch the actual slowdown here, since the speed potion does it for us
|
||||
slowdown_active = 0
|
||||
|
||||
if(magpulse && magpulse_fishing_modifier)
|
||||
qdel(GetComponent(/datum/component/adjust_fishing_difficulty))
|
||||
if(fishing_modifier)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier)
|
||||
magpulse_fishing_modifier = fishing_modifier
|
||||
|
||||
/obj/item/clothing/shoes/magboots/verb/toggle()
|
||||
set name = "Toggle Magboots"
|
||||
@@ -47,7 +59,15 @@
|
||||
if(magpulse)
|
||||
attach_clothing_traits(active_traits)
|
||||
slowdown += slowdown_active
|
||||
if(magpulse_fishing_modifier)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, magpulse_fishing_modifier)
|
||||
else if(magpulse_fishing_modifier != fishing_modifier)
|
||||
qdel(GetComponent(/datum/component/adjust_fishing_difficulty))
|
||||
else
|
||||
if(fishing_modifier)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier)
|
||||
else if(magpulse_fishing_modifier != fishing_modifier)
|
||||
qdel(GetComponent(/datum/component/adjust_fishing_difficulty))
|
||||
detach_clothing_traits(active_traits)
|
||||
slowdown = max(initial(slowdown), slowdown - slowdown_active) // Just in case, for speed pot shenanigans
|
||||
|
||||
@@ -71,9 +91,13 @@
|
||||
base_icon_state = "advmag"
|
||||
slowdown_active = SHOES_SLOWDOWN // ZERO active slowdown
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
magpulse_fishing_modifier = 3
|
||||
fishing_modifier = 0
|
||||
|
||||
/obj/item/clothing/shoes/magboots/syndie
|
||||
name = "blood-red magboots"
|
||||
desc = "Reverse-engineered magnetic boots that have a heavy magnetic pull. Property of Gorlex Marauders."
|
||||
icon_state = "syndiemag0"
|
||||
base_icon_state = "syndiemag"
|
||||
magpulse_fishing_modifier = 6
|
||||
fishing_modifier = 3
|
||||
|
||||
@@ -25,6 +25,13 @@
|
||||
resistance_flags = NONE
|
||||
dog_fashion = null
|
||||
slowdown = 0.5
|
||||
///How much this helmet affects fishing difficulty
|
||||
var/fishing_modifier = 3
|
||||
|
||||
/obj/item/clothing/head/helmet/space/Initialize(mapload)
|
||||
. = ..()
|
||||
if(fishing_modifier)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier)
|
||||
|
||||
/datum/armor/helmet_space
|
||||
bio = 100
|
||||
@@ -70,6 +77,8 @@
|
||||
var/thermal_on = FALSE
|
||||
/// If this is FALSE the batery status UI will be disabled. This is used for suits that don't use bateries like the changeling's flesh suit mutation.
|
||||
var/show_hud = TRUE
|
||||
///How much this suit affects fishing difficulty
|
||||
var/fishing_modifier = 5
|
||||
|
||||
/datum/armor/suit_space
|
||||
bio = 100
|
||||
@@ -81,6 +90,9 @@
|
||||
if(ispath(cell))
|
||||
cell = new cell(src)
|
||||
|
||||
if(fishing_modifier)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier)
|
||||
|
||||
/// Start Processing on the space suit when it is worn to heat the wearer
|
||||
/obj/item/clothing/suit/space/equipped(mob/living/user, slot)
|
||||
. = ..()
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
strip_delay = 130
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
resistance_flags = ACID_PROOF | FIRE_PROOF
|
||||
fishing_modifier = 0
|
||||
|
||||
/datum/armor/space_freedom
|
||||
melee = 20
|
||||
@@ -31,3 +32,4 @@
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
resistance_flags = ACID_PROOF | FIRE_PROOF
|
||||
slowdown = 0
|
||||
fishing_modifier = 0
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
armor_type = /datum/armor/space_pirate
|
||||
strip_delay = 40
|
||||
equip_delay_other = 20
|
||||
fishing_modifier = -2
|
||||
|
||||
/datum/armor/space_pirate
|
||||
melee = 30
|
||||
@@ -31,6 +32,7 @@
|
||||
armor_type = /datum/armor/space_pirate
|
||||
strip_delay = 40
|
||||
equip_delay_other = 20
|
||||
fishing_modifier = -3
|
||||
|
||||
/obj/item/clothing/head/helmet/space/pirate/tophat
|
||||
name = "designer pirate helmet"
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
resistance_flags = FIRE_PROOF
|
||||
icon_state = "plasmaman_suit"
|
||||
inhand_icon_state = "plasmaman_suit"
|
||||
fishing_modifier = 0
|
||||
var/next_extinguish = 0
|
||||
var/extinguish_cooldown = 100
|
||||
var/extinguishes_left = 10
|
||||
@@ -57,6 +58,7 @@
|
||||
light_power = 0.8
|
||||
light_color = "#ffcc99"
|
||||
light_on = FALSE
|
||||
fishing_modifier = 0
|
||||
var/helmet_on = FALSE
|
||||
var/smile = FALSE
|
||||
var/smile_color = COLOR_RED
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
flags_cover = HEADCOVERSEYES
|
||||
dog_fashion = /datum/dog_fashion/head/santa
|
||||
slowdown = 0
|
||||
fishing_modifier = 0
|
||||
|
||||
/obj/item/clothing/head/helmet/space/santahat/beardless
|
||||
icon = 'icons/obj/clothing/head/costume.dmi'
|
||||
@@ -26,3 +27,4 @@
|
||||
inhand_icon_state = "santa"
|
||||
slowdown = 0
|
||||
allowed = list(/obj/item) //for stuffing exta special presents
|
||||
fishing_modifier = 0
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
strip_delay = 130
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
fishing_modifier = 0
|
||||
|
||||
/datum/armor/space_beret
|
||||
melee = 80
|
||||
@@ -41,6 +42,7 @@
|
||||
strip_delay = 130
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
fishing_modifier = 0
|
||||
|
||||
/datum/armor/space_officer
|
||||
melee = 80
|
||||
|
||||
@@ -294,6 +294,10 @@
|
||||
equip_delay_other = 60
|
||||
clothing_traits = list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED)
|
||||
|
||||
/obj/item/clothing/suit/armor/riot/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 5)
|
||||
|
||||
/datum/armor/armor_riot
|
||||
melee = 50
|
||||
bullet = 10
|
||||
@@ -413,6 +417,10 @@
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
clothing_traits = list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED)
|
||||
|
||||
/obj/item/clothing/suit/armor/swat/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 5)
|
||||
|
||||
|
||||
//All of the armor below is mostly unused
|
||||
|
||||
@@ -695,6 +703,10 @@
|
||||
/obj/item/gun/ballistic/bow
|
||||
)
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/military/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 5)
|
||||
|
||||
/datum/armor/military
|
||||
melee = 45
|
||||
bullet = 25
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
. = ..()
|
||||
if(flags_inv & HIDEFACE)
|
||||
AddComponent(/datum/component/clothing_fov_visor, FOV_90_DEGREES)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 6)
|
||||
|
||||
/datum/armor/head_bio_hood
|
||||
bio = 100
|
||||
@@ -40,6 +41,10 @@
|
||||
equip_delay_other = 70
|
||||
resistance_flags = ACID_PROOF
|
||||
|
||||
/obj/item/clothing/suit/bio_suit/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 6)
|
||||
|
||||
//Standard biosuit, orange stripe
|
||||
/datum/armor/suit_bio_suit
|
||||
bio = 100
|
||||
|
||||
@@ -263,6 +263,10 @@
|
||||
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/gun/ballistic/rifle/boltaction/harpoon)
|
||||
hoodtype = /obj/item/clothing/head/hooded/carp_hood
|
||||
|
||||
/obj/item/clothing/suit/hooded/carp_costume/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2)
|
||||
|
||||
/obj/item/clothing/head/hooded/carp_hood
|
||||
name = "carp hood"
|
||||
desc = "A hood attached to a carp costume."
|
||||
@@ -274,6 +278,10 @@
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
flags_inv = HIDEHAIR|HIDEEARS
|
||||
|
||||
/obj/item/clothing/head/hooded/carp_hood/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3)
|
||||
|
||||
/obj/item/clothing/head/hooded/carp_hood/equipped(mob/living/carbon/human/user, slot)
|
||||
..()
|
||||
if (slot & ITEM_SLOT_HEAD)
|
||||
@@ -394,6 +402,10 @@
|
||||
clothing_flags = THICKMATERIAL
|
||||
hoodtype = /obj/item/clothing/head/hooded/shark_hood
|
||||
|
||||
/obj/item/clothing/suit/hooded/shark_costume/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2)
|
||||
|
||||
/obj/item/clothing/head/hooded/shark_hood
|
||||
name = "shark hood"
|
||||
desc = "A hood attached to a shark costume."
|
||||
@@ -404,6 +416,10 @@
|
||||
clothing_flags = THICKMATERIAL
|
||||
flags_inv = HIDEHAIR|HIDEEARS
|
||||
|
||||
/obj/item/clothing/head/hooded/shark_hood/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3)
|
||||
|
||||
/obj/item/clothing/suit/hooded/shork_costume // Oh God Why
|
||||
name = "shork costume"
|
||||
desc = "Why would you ever do this?"
|
||||
@@ -415,6 +431,10 @@
|
||||
clothing_flags = THICKMATERIAL
|
||||
hoodtype = /obj/item/clothing/head/hooded/shork_hood
|
||||
|
||||
/obj/item/clothing/suit/hooded/shork_costume/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 2)
|
||||
|
||||
/obj/item/clothing/head/hooded/shork_hood
|
||||
name = "shork hood"
|
||||
desc = "A hood attached to a shork costume."
|
||||
@@ -425,6 +445,10 @@
|
||||
clothing_flags = THICKMATERIAL
|
||||
flags_inv = HIDEHAIR|HIDEEARS
|
||||
|
||||
/obj/item/clothing/head/hooded/shork_hood/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 3)
|
||||
|
||||
/obj/item/clothing/suit/hooded/bloated_human //OH MY GOD WHAT HAVE YOU DONE!?!?!?
|
||||
name = "bloated human suit"
|
||||
desc = "A horribly bloated suit made from human skins."
|
||||
@@ -589,6 +613,10 @@
|
||||
flags_1 = IS_PLAYER_COLORABLE_1
|
||||
species_exception = list(/datum/species/golem)
|
||||
|
||||
/obj/item/clothing/suit/costume/hawaiian/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3)
|
||||
|
||||
/obj/item/clothing/suit/costume/football_armor
|
||||
name = "football protective gear"
|
||||
desc = "Given to members of the football team!"
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
/obj/item/clothing/suit/hooded/ethereal_raincoat/Initialize(mapload)
|
||||
. = ..()
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3)
|
||||
|
||||
/obj/item/clothing/suit/hooded/ethereal_raincoat/worn_overlays(mutable_appearance/standing, isinhands, icon_file)
|
||||
. = ..()
|
||||
@@ -28,6 +29,11 @@
|
||||
name = "trailwarden oilcoat"
|
||||
desc = "A masterfully handcrafted oilslick coat, supposedly makes for excellent camouflage among Sprout's vegetation. You can hear a faint electrical buzz emanating from the luminescent pattern."
|
||||
greyscale_colors = "#32a87d"
|
||||
hoodtype = /obj/item/clothing/head/hooded/ethereal_rainhood/trailwarden
|
||||
|
||||
/obj/item/clothing/suit/hooded/ethereal_raincoat/trailwarden/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -5)
|
||||
|
||||
/obj/item/clothing/suit/hooded/ethereal_raincoat/trailwarden/equipped(mob/living/user, slot)
|
||||
. = ..()
|
||||
@@ -45,3 +51,9 @@
|
||||
worn_icon = 'icons/mob/clothing/head/ethereal.dmi'
|
||||
body_parts_covered = HEAD
|
||||
flags_inv = HIDEHAIR|HIDEEARS|HIDEFACIALHAIR
|
||||
|
||||
/obj/item/clothing/head/hooded/ethereal_rainhood/trailwarden
|
||||
|
||||
/obj/item/clothing/head/hooded/ethereal_rainhood/trailwarden/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -4)
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
. = ..()
|
||||
if(check_holidays(HALLOWEEN))
|
||||
update_icon(UPDATE_OVERLAYS)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 8)
|
||||
|
||||
/obj/item/clothing/suit/costume/ghost_sheet/worn_overlays(mutable_appearance/standing, isinhands, icon_file)
|
||||
. = ..()
|
||||
|
||||
@@ -52,6 +52,10 @@
|
||||
greyscale_colors = "#313c6e"
|
||||
flags_1 = IS_PLAYER_COLORABLE_1
|
||||
|
||||
/obj/item/clothing/suit/apron/overalls/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2)
|
||||
|
||||
//Captain
|
||||
/obj/item/clothing/suit/jacket/capjacket
|
||||
name = "captain's parade jacket"
|
||||
@@ -349,6 +353,10 @@
|
||||
/obj/item/tank/internals/emergency_oxygen,
|
||||
)
|
||||
|
||||
/obj/item/clothing/suit/apron/surgical/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2) // FISH DOCTOR?!
|
||||
|
||||
//Curator
|
||||
/obj/item/clothing/suit/jacket/curator
|
||||
name = "treasure hunter's coat"
|
||||
|
||||
@@ -38,6 +38,10 @@
|
||||
icon_state = "labcoat_cmo"
|
||||
inhand_icon_state = null
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/cmo/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2) //FISH DOCTOR?!
|
||||
|
||||
/datum/armor/toggle_labcoat
|
||||
bio = 50
|
||||
fire = 50
|
||||
@@ -55,6 +59,10 @@
|
||||
icon_state = "labcoat_paramedic"
|
||||
inhand_icon_state = null
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/paramedic/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2) //FISH DOCTOR?!
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/mad
|
||||
name = "\proper The Mad's labcoat"
|
||||
desc = "It makes you look capable of konking someone on the noggin and shooting them into space."
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/obj/item/clothing/suit/mothcoat/original/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3)
|
||||
create_storage(storage_type = /datum/storage/pockets)
|
||||
|
||||
/obj/item/clothing/suit/mothcoat/winter
|
||||
|
||||
@@ -39,6 +39,10 @@
|
||||
equip_delay_other = 60
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/suit/utility/fire/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 7)
|
||||
|
||||
/datum/armor/utility_fire
|
||||
melee = 15
|
||||
bullet = 5
|
||||
@@ -104,6 +108,7 @@
|
||||
. = ..()
|
||||
if(flags_inv & HIDEFACE)
|
||||
AddComponent(/datum/component/clothing_fov_visor, FOV_90_DEGREES)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 8)
|
||||
|
||||
/datum/armor/utility_bomb_hood
|
||||
melee = 20
|
||||
@@ -133,6 +138,10 @@
|
||||
equip_delay_other = 70
|
||||
resistance_flags = NONE
|
||||
|
||||
/obj/item/clothing/suit/utility/bomb_suit/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 8)
|
||||
|
||||
/datum/armor/utility_bomb_suit
|
||||
melee = 20
|
||||
laser = 20
|
||||
@@ -179,6 +188,7 @@
|
||||
. = ..()
|
||||
if(flags_inv & HIDEFACE)
|
||||
AddComponent(/datum/component/clothing_fov_visor, FOV_90_DEGREES)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 7)
|
||||
|
||||
/datum/armor/utility_radiation
|
||||
bio = 60
|
||||
@@ -212,3 +222,4 @@
|
||||
/obj/item/clothing/suit/utility/radiation/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/radiation_protected_clothing)
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 7)
|
||||
|
||||
@@ -11,6 +11,12 @@
|
||||
clothing_flags = SNUG_FIT | CASTING_CLOTHES
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
dog_fashion = /datum/dog_fashion/head/blue_wizard
|
||||
///How much this hat affects fishing difficulty
|
||||
var/fishing_modifier = -4
|
||||
|
||||
/obj/item/clothing/head/wizard/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier) //A wizard always practices his casting (ba dum tsh)
|
||||
|
||||
/datum/armor/head_wizard
|
||||
melee = 30
|
||||
@@ -48,6 +54,7 @@
|
||||
armor_type = /datum/armor/none
|
||||
resistance_flags = FLAMMABLE
|
||||
dog_fashion = /datum/dog_fashion/head/blue_wizard
|
||||
fishing_modifier = -1
|
||||
|
||||
/obj/item/clothing/head/wizard/chanterelle
|
||||
name = "chanterelle hat"
|
||||
@@ -114,6 +121,12 @@
|
||||
equip_delay_other = 50
|
||||
clothing_flags = CASTING_CLOTHES
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
///How much this robe affects fishing difficulty
|
||||
var/fishing_modifier = -6
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier) //A wizard always practices his casting (ba dum tsh)
|
||||
|
||||
/datum/armor/suit_wizrobe
|
||||
melee = 30
|
||||
@@ -181,17 +194,20 @@
|
||||
inhand_icon_state = "wizrobe"
|
||||
armor_type = /datum/armor/none
|
||||
resistance_flags = FLAMMABLE
|
||||
fishing_modifier = -2
|
||||
|
||||
/obj/item/clothing/head/wizard/marisa/fake
|
||||
name = "witch hat"
|
||||
armor_type = /datum/armor/none
|
||||
resistance_flags = FLAMMABLE
|
||||
fishing_modifier = -1
|
||||
|
||||
/obj/item/clothing/head/wizard/tape/fake
|
||||
name = "tape hat"
|
||||
desc = "A hat designed exclusively from duct tape. You can barely see."
|
||||
armor_type = /datum/armor/none
|
||||
resistance_flags = FLAMMABLE
|
||||
fishing_modifier = -1
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/marisa/fake
|
||||
name = "witch robe"
|
||||
@@ -200,12 +216,14 @@
|
||||
inhand_icon_state = null
|
||||
armor_type = /datum/armor/none
|
||||
resistance_flags = FLAMMABLE
|
||||
fishing_modifier = -2
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/tape/fake
|
||||
name = "tape robe"
|
||||
desc = "An outfit designed exclusively from duct tape. It was hard to put on."
|
||||
armor_type = /datum/armor/none
|
||||
resistance_flags = FLAMMABLE
|
||||
fishing_modifier = -2
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/paper
|
||||
name = "papier-mache robe" // no non-latin characters!
|
||||
@@ -237,6 +255,7 @@
|
||||
/obj/item/seeds,
|
||||
/obj/item/storage/bag/plants,
|
||||
)
|
||||
fishing_modifier = -4
|
||||
|
||||
/datum/armor/robe_durathread
|
||||
melee = 15
|
||||
|
||||
@@ -28,6 +28,10 @@
|
||||
inhand_icon_state = null
|
||||
worn_icon = 'icons/mob/clothing/under/civilian.dmi'
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/curator/treasure_hunter/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3)
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/curator/nasa
|
||||
name = "\improper NASA jumpsuit"
|
||||
desc = "It has a NASA logo on it and is made of space-proofed materials."
|
||||
|
||||
@@ -44,6 +44,10 @@
|
||||
icon_state = "scrubscmo"
|
||||
inhand_icon_state = "w_suit"
|
||||
|
||||
/obj/item/clothing/under/rank/medical/chief_medical_officer/scrubs/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2) //FISH DOCTOR?!
|
||||
|
||||
/obj/item/clothing/under/rank/medical/chief_medical_officer/turtleneck
|
||||
name = "chief medical officer's turtleneck"
|
||||
desc = "A light blue turtleneck and tan khakis, for a chief medical officer with a superior sense of style."
|
||||
@@ -82,6 +86,10 @@
|
||||
/obj/item/clothing/under/rank/medical/scrubs
|
||||
name = "medical scrubs"
|
||||
|
||||
/obj/item/clothing/under/rank/medical/scrubs/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2) //FISH DOCTOR?!
|
||||
|
||||
/obj/item/clothing/under/rank/medical/scrubs/blue
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue."
|
||||
icon_state = "scrubsblue"
|
||||
|
||||
@@ -58,6 +58,10 @@
|
||||
can_adjust = FALSE
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
|
||||
/obj/item/clothing/under/misc/adminsuit/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -15)
|
||||
|
||||
/datum/armor/clothing_under/adminsuit
|
||||
melee = 100
|
||||
bullet = 100
|
||||
|
||||
@@ -40,6 +40,10 @@
|
||||
body_parts_covered = CHEST|GROIN|LEGS
|
||||
flags_inv = HIDESHOES
|
||||
|
||||
/obj/item/clothing/under/dress/wedding_dress/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 4) //You aren't going to fish with this are you?
|
||||
|
||||
/obj/item/clothing/under/dress/eveninggown
|
||||
name = "evening gown"
|
||||
desc = "Fancy dress for space bar singers."
|
||||
@@ -50,6 +54,10 @@
|
||||
flags_1 = IS_PLAYER_COLORABLE_1
|
||||
greyscale_colors = "#e11f1f"
|
||||
|
||||
/obj/item/clothing/under/dress/eveninggown/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 4) //You aren't going to fish with this are you?
|
||||
|
||||
/obj/item/clothing/under/dress/skirt
|
||||
name = "cardigan skirt"
|
||||
desc = "A nice skirt with a cute cardigan, very fancy!"
|
||||
|
||||
@@ -107,8 +107,16 @@
|
||||
icon_state = "tuxedo"
|
||||
inhand_icon_state = null
|
||||
|
||||
/obj/item/clothing/under/suit/tuxedo/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, 4) //You aren't going to fish with this are you?
|
||||
|
||||
/obj/item/clothing/under/suit/carpskin
|
||||
name = "carpskin suit"
|
||||
desc = "An luxurious suit made with only the finest scales, perfect for conducting dodgy business deals."
|
||||
icon_state = "carpskin_suit"
|
||||
inhand_icon_state = null
|
||||
|
||||
/obj/item/clothing/under/suit/carpskin/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2)
|
||||
|
||||
@@ -34,6 +34,10 @@
|
||||
can_adjust = FALSE
|
||||
supports_variations_flags = NONE
|
||||
|
||||
/obj/item/clothing/under/syndicate/bloodred/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2) //extra-tactical
|
||||
|
||||
/datum/armor/clothing_under/syndicate_bloodred
|
||||
melee = 10
|
||||
bullet = 10
|
||||
@@ -119,6 +123,10 @@
|
||||
can_adjust = FALSE
|
||||
supports_variations_flags = NONE
|
||||
|
||||
/obj/item/clothing/under/syndicate/floortilecamo/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -4) //tacticool
|
||||
|
||||
/obj/item/clothing/under/syndicate/soviet
|
||||
name = "Ratnik 5 tracksuit"
|
||||
desc = "Badly translated labels tell you to clean this in Vodka. Great for squatting in."
|
||||
@@ -160,6 +168,10 @@
|
||||
supports_variations_flags = NONE
|
||||
armor_type = /datum/armor/clothing_under/syndicate_scrubs
|
||||
|
||||
/obj/item/clothing/under/syndicate/scrubs/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2) //FISH DOCTOR?!
|
||||
|
||||
/datum/armor/clothing_under/syndicate_scrubs
|
||||
melee = 10
|
||||
bio = 50
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
register_item_context()
|
||||
update_appearance()
|
||||
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -3, ITEM_SLOT_HANDS)
|
||||
|
||||
/obj/item/fish_analyzer/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -6,6 +6,10 @@
|
||||
custom_price = PAYCHECK_CREW * 2
|
||||
starting_content = "Lot of fish stuff" //book wrappers could use cleaning so this is not necessary
|
||||
|
||||
/obj/item/book/manual/fish_catalog/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -4, ITEM_SLOT_HANDS)
|
||||
|
||||
/obj/item/book/manual/fish_catalog/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
|
||||
@@ -53,6 +53,10 @@
|
||||
else
|
||||
long_jump_chance *= master.difficulty
|
||||
|
||||
/datum/fish_movement/proc/reset_difficulty_values()
|
||||
short_jump_chance = initial(short_jump_chance)
|
||||
long_jump_chance = initial(long_jump_chance)
|
||||
|
||||
///The main proc, called by minigame every SSfishing tick while it's in the 'active' phase.
|
||||
/datum/fish_movement/proc/move_fish(seconds_per_tick)
|
||||
times_fired++
|
||||
@@ -190,6 +194,12 @@
|
||||
plunging_speed += round(plunging_speed * master.difficulty * 0.03)
|
||||
fish_idle_velocity += plunging_speed //so it can be safely subtracted if the fish starts at the bottom.
|
||||
|
||||
/datum/fish_movement/plunger/reset_difficulty_values()
|
||||
. = ..()
|
||||
if(is_plunging)
|
||||
fish_idle_velocity -= plunging_speed
|
||||
plunging_speed = initial(plunging_speed)
|
||||
|
||||
/datum/fish_movement/plunger/move_fish(seconds_per_tick)
|
||||
var/fish_area = FISHING_MINIGAME_AREA - master.fish_height
|
||||
if(is_plunging)
|
||||
|
||||
@@ -288,6 +288,8 @@
|
||||
inhand_icon_state = "artistic_toolbox"
|
||||
material_flags = NONE
|
||||
custom_price = PAYCHECK_CREW * 3
|
||||
///How much holding this affects fishing difficulty
|
||||
var/fishing_modifier = -2
|
||||
|
||||
/obj/item/storage/toolbox/fishing/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -296,6 +298,7 @@
|
||||
/obj/item/fishing_rod,
|
||||
))
|
||||
atom_storage.exception_hold = exception_cache
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2, ITEM_SLOT_HANDS)
|
||||
|
||||
/obj/item/storage/toolbox/fishing/PopulateContents()
|
||||
new /obj/item/bait_can/worm(src)
|
||||
@@ -326,6 +329,7 @@
|
||||
desc = "Contains EVERYTHING (almost) you need for your fishing trip."
|
||||
icon_state = "gold"
|
||||
inhand_icon_state = "toolbox_gold"
|
||||
fishing_modifier = -7
|
||||
|
||||
/obj/item/storage/toolbox/fishing/master/PopulateContents()
|
||||
new /obj/item/fishing_rod/telescopic/master(src)
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
///The standard pixel height of the fish (minus a pixel on each direction for the sake of a better looking sprite)
|
||||
#define MINIGAME_FISH_HEIGHT 4
|
||||
|
||||
GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
|
||||
|
||||
/datum/fishing_challenge
|
||||
/// When the ui minigame phase started
|
||||
var/start_time
|
||||
@@ -120,8 +122,10 @@
|
||||
RegisterSignal(comp.fish_source, COMSIG_FISHING_SOURCE_INTERRUPT_CHALLENGE, PROC_REF(interrupt_challenge))
|
||||
comp.fish_source.RegisterSignal(src, COMSIG_FISHING_CHALLENGE_ROLL_REWARD, TYPE_PROC_REF(/datum/fish_source, roll_reward_minigame))
|
||||
comp.fish_source.RegisterSignal(src, COMSIG_FISHING_CHALLENGE_GET_DIFFICULTY, TYPE_PROC_REF(/datum/fish_source, calculate_difficulty_minigame))
|
||||
comp.fish_source.RegisterSignal(src, COMSIG_FISHING_CHALLENGE_COMPLETED, TYPE_PROC_REF(/datum/fish_source, on_challenge_completed))
|
||||
comp.fish_source.RegisterSignal(user, COMSIG_MOB_COMPLETE_FISHING, TYPE_PROC_REF(/datum/fish_source, on_challenge_completed))
|
||||
background = comp.fish_source.background
|
||||
SEND_SIGNAL(user, COMSIG_MOB_BEGIN_FISHING, src)
|
||||
GLOB.fishing_challenges_by_user[user] = src
|
||||
|
||||
/// Enable special parameters
|
||||
if(rod.line)
|
||||
@@ -148,6 +152,7 @@
|
||||
completion_loss += user.mind?.get_skill_modifier(/datum/skill/fishing, SKILL_VALUE_MODIFIER)/5
|
||||
|
||||
/datum/fishing_challenge/Destroy(force)
|
||||
GLOB.fishing_challenges_by_user -= user
|
||||
if(!completed)
|
||||
complete(win = FALSE)
|
||||
if(fishing_line)
|
||||
@@ -192,7 +197,6 @@
|
||||
active_effects = bitfield_to_list(special_effects & FISHING_MINIGAME_ACTIVE_EFFECTS)
|
||||
// If fishing line breaks los / rod gets dropped / deleted
|
||||
RegisterSignal(used_rod, COMSIG_ITEM_ATTACK_SELF, PROC_REF(on_attack_self))
|
||||
ADD_TRAIT(user, TRAIT_GONE_FISHING, WEAKREF(src))
|
||||
user.add_mood_event("fishing", /datum/mood_event/fishing)
|
||||
RegisterSignal(user, COMSIG_MOB_CLICKON, PROC_REF(handle_click))
|
||||
start_baiting_phase()
|
||||
@@ -308,8 +312,6 @@
|
||||
if(phase == MINIGAME_PHASE)
|
||||
remove_minigame_hud()
|
||||
if(!QDELETED(user))
|
||||
UnregisterSignal(user, SIGNAL_REMOVETRAIT(TRAIT_GONE_FISHING))
|
||||
user.remove_traits(list(TRAIT_GONE_FISHING, TRAIT_ACTIVELY_FISHING), WEAKREF(src))
|
||||
if(start_time)
|
||||
var/seconds_spent = (world.time - start_time) * 0.1
|
||||
if(!(special_effects & FISHING_MINIGAME_RULE_NO_EXP))
|
||||
@@ -319,7 +321,7 @@
|
||||
if(win)
|
||||
if(reward_path != FISHING_DUD)
|
||||
playsound(location, 'sound/effects/bigsplash.ogg', 100)
|
||||
SEND_SIGNAL(src, COMSIG_FISHING_CHALLENGE_COMPLETED, user, win)
|
||||
SEND_SIGNAL(user, COMSIG_MOB_COMPLETE_FISHING, src, win)
|
||||
if(!QDELETED(src))
|
||||
qdel(src)
|
||||
|
||||
@@ -419,16 +421,41 @@
|
||||
var/damage = CEILING((world.time - start_time)/10 * FISH_DAMAGE_PER_SECOND, 1)
|
||||
reward.adjust_health(reward.health - damage)
|
||||
|
||||
///Get the difficulty and other variables, than start the minigame
|
||||
/datum/fishing_challenge/proc/start_minigame_phase(auto_reel = FALSE)
|
||||
/datum/fishing_challenge/proc/get_difficulty()
|
||||
var/list/difficulty_holder = list(0)
|
||||
SEND_SIGNAL(src, COMSIG_FISHING_CHALLENGE_GET_DIFFICULTY, reward_path, used_rod, user, difficulty_holder)
|
||||
difficulty = difficulty_holder[1]
|
||||
//If you manage to be so well-equipped and skilled to completely crush the difficulty, just skip to the reward.
|
||||
if(difficulty <= 0)
|
||||
complete(TRUE)
|
||||
return
|
||||
return FALSE
|
||||
difficulty = clamp(round(difficulty), FISHING_MINIMUM_DIFFICULTY, 100)
|
||||
return TRUE
|
||||
|
||||
/datum/fishing_challenge/proc/update_difficulty()
|
||||
if(phase != MINIGAME_PHASE)
|
||||
return
|
||||
var/old_difficulty = difficulty
|
||||
//early return if the difficulty is the same or we crush the minigame all the way to 0 difficulty
|
||||
if(!get_difficulty() || difficulty == old_difficulty)
|
||||
return
|
||||
bait_height = initial(bait_height)
|
||||
experience_multiplier -= difficulty * FISHING_SKILL_DIFFIULTY_EXP_MULT
|
||||
mover.reset_difficulty_values()
|
||||
adjust_to_difficulty()
|
||||
|
||||
/datum/fishing_challenge/proc/adjust_to_difficulty()
|
||||
mover.adjust_to_difficulty()
|
||||
bait_height -= round(difficulty * BAIT_HEIGHT_DIFFICULTY_MALUS)
|
||||
bait_pixel_height = round(MINIGAME_BAIT_HEIGHT * (bait_height/initial(bait_height)), 1)
|
||||
experience_multiplier += difficulty * FISHING_SKILL_DIFFIULTY_EXP_MULT
|
||||
fishing_hud.hud_bait.adjust_to_difficulty(src)
|
||||
|
||||
///Get the difficulty and other variables, than start the minigame
|
||||
/datum/fishing_challenge/proc/start_minigame_phase(auto_reel = FALSE)
|
||||
SEND_SIGNAL(user, COMSIG_MOB_BEGIN_FISHING_MINIGAME, src)
|
||||
if(!get_difficulty()) //we totalized 0 or less difficulty, instant win.
|
||||
return
|
||||
|
||||
if(difficulty > FISHING_DEFAULT_DIFFICULTY)
|
||||
completion -= MAX_FISH_COMPLETION_MALUS * (difficulty * 0.01)
|
||||
@@ -449,11 +476,6 @@
|
||||
else
|
||||
mover = new /datum/fish_movement(src)
|
||||
|
||||
mover.adjust_to_difficulty()
|
||||
|
||||
bait_height -= round(difficulty * BAIT_HEIGHT_DIFFICULTY_MALUS)
|
||||
bait_pixel_height = round(MINIGAME_BAIT_HEIGHT * (bait_height/initial(bait_height)), 1)
|
||||
|
||||
if(auto_reel)
|
||||
completion *= 1.3
|
||||
else
|
||||
@@ -471,11 +493,14 @@
|
||||
fish_position = rand(0, (FISHING_MINIGAME_AREA - fish_height) * 0.8)
|
||||
var/diff_dist = 100 + difficulty
|
||||
bait_position = clamp(round(fish_position + rand(-diff_dist, diff_dist) - bait_height * 0.5), 0, FISHING_MINIGAME_AREA - bait_height)
|
||||
|
||||
if(!prepare_minigame_hud())
|
||||
get_stack_trace("couldn't prepare minigame hud for a fishing challenge.") //just to be sure. This shouldn't happen.
|
||||
qdel(src)
|
||||
return
|
||||
ADD_TRAIT(user, TRAIT_ACTIVELY_FISHING, WEAKREF(src))
|
||||
|
||||
adjust_to_difficulty()
|
||||
|
||||
phase = MINIGAME_PHASE
|
||||
deltimer(next_phase_timer)
|
||||
if((FISHING_MINIGAME_RULE_KILL in special_effects) && ispath(reward_path,/obj/item/fish))
|
||||
@@ -483,7 +508,6 @@
|
||||
var/wait_time = (initial(fish.health) / FISH_DAMAGE_PER_SECOND) SECONDS
|
||||
addtimer(CALLBACK(src, PROC_REF(win_anyway)), wait_time, TIMER_DELETE_ME)
|
||||
start_time = world.time
|
||||
experience_multiplier += difficulty * FISHING_SKILL_DIFFIULTY_EXP_MULT
|
||||
|
||||
///Throws a stack with prefixed text.
|
||||
/datum/fishing_challenge/proc/get_stack_trace(init_text)
|
||||
@@ -709,18 +733,24 @@
|
||||
icon = 'icons/hud/fishing_hud.dmi'
|
||||
icon_state = "bait"
|
||||
vis_flags = VIS_INHERIT_ID
|
||||
///The stored value we used to squish the bar based on the difficulty
|
||||
var/current_vertical_transform
|
||||
|
||||
/atom/movable/screen/hud_bait/Initialize(mapload, datum/hud/hud_owner, datum/fishing_challenge/challenge)
|
||||
. = ..()
|
||||
if(!challenge || challenge.bait_pixel_height == MINIGAME_BAIT_HEIGHT)
|
||||
return
|
||||
var/static/icon_height
|
||||
if(!icon_height)
|
||||
var/list/icon_dimensions = get_icon_dimensions(icon)
|
||||
icon_height = icon_dimensions["height"]
|
||||
var/height_percent_diff = challenge.bait_pixel_height/MINIGAME_BAIT_HEIGHT
|
||||
transform = transform.Scale(1, height_percent_diff)
|
||||
pixel_z = -icon_height * (1 - height_percent_diff) * 0.5
|
||||
adjust_to_difficulty(challenge)
|
||||
|
||||
/atom/movable/screen/hud_bait/proc/adjust_to_difficulty(datum/fishing_challenge/challenge)
|
||||
if(current_vertical_transform)
|
||||
transform = transform.Scale(1, 1/current_vertical_transform)
|
||||
pixel_z = 0
|
||||
var/list/icon_dimensions = get_icon_dimensions(icon)
|
||||
var/icon_height = icon_dimensions["height"]
|
||||
current_vertical_transform = challenge.bait_pixel_height/MINIGAME_BAIT_HEIGHT
|
||||
transform = transform.Scale(1, current_vertical_transform)
|
||||
pixel_z = -icon_height * (1 - current_vertical_transform) * 0.5
|
||||
|
||||
/atom/movable/screen/hud_fish
|
||||
icon = 'icons/hud/fishing_hud.dmi'
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
|
||||
/obj/item/fishing_rod/add_item_context(obj/item/source, list/context, atom/target, mob/living/user)
|
||||
. = ..()
|
||||
var/gone_fishing = HAS_TRAIT(user, TRAIT_GONE_FISHING)
|
||||
var/gone_fishing = GLOB.fishing_challenges_by_user[user]
|
||||
if(currently_hooked || gone_fishing)
|
||||
context[SCREENTIP_CONTEXT_LMB] = (gone_fishing && spin_frequency) ? "Spin" : "Reel in"
|
||||
if(!gone_fishing)
|
||||
@@ -411,7 +411,7 @@
|
||||
|
||||
/// Ideally this will be replaced with generic slotted storage datum + display
|
||||
/obj/item/fishing_rod/proc/use_slot(slot, mob/user, obj/item/new_item)
|
||||
if(fishing_line || HAS_TRAIT(user, TRAIT_GONE_FISHING))
|
||||
if(fishing_line || GLOB.fishing_challenges_by_user[user])
|
||||
return
|
||||
var/obj/item/current_item
|
||||
switch(slot)
|
||||
@@ -545,7 +545,7 @@
|
||||
if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE))
|
||||
return
|
||||
//the fishing minigame uses the attack_self signal to let the user end it early without having to drop the rod.
|
||||
if(HAS_TRAIT(user, TRAIT_GONE_FISHING))
|
||||
if(GLOB.fishing_challenges_by_user[user])
|
||||
return COMPONENT_BLOCK_TRANSFORM
|
||||
|
||||
///Gives feedback to the user, makes it show up inhand, toggles whether it can be used for fishing.
|
||||
|
||||
@@ -222,21 +222,21 @@ GLOBAL_LIST_INIT(specific_fish_icons, generate_specific_fish_icons())
|
||||
SEND_SIGNAL(src, COMSIG_FISHING_SOURCE_INTERRUPT_CHALLENGE, reason)
|
||||
|
||||
/**
|
||||
* Proc called when the COMSIG_FISHING_CHALLENGE_COMPLETED signal is sent.
|
||||
* Proc called when the COMSIG_MOB_COMPLETE_FISHING signal is sent.
|
||||
* Check if we've succeeded. If so, write into memory and dispense the reward.
|
||||
*/
|
||||
/datum/fish_source/proc/on_challenge_completed(datum/fishing_challenge/source, mob/user, success)
|
||||
/datum/fish_source/proc/on_challenge_completed(mob/user, datum/fishing_challenge/challenge, success)
|
||||
SIGNAL_HANDLER
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
UnregisterSignal(user, COMSIG_MOB_COMPLETE_FISHING)
|
||||
if(!success)
|
||||
return
|
||||
var/obj/item/fish/caught = source.reward_path
|
||||
user.add_mob_memory(/datum/memory/caught_fish, protagonist = user, deuteragonist = initial(caught.name))
|
||||
var/turf/fishing_spot = get_turf(source.float)
|
||||
var/atom/movable/reward = dispense_reward(source.reward_path, user, fishing_spot)
|
||||
if(source.used_rod)
|
||||
SEND_SIGNAL(source.used_rod, COMSIG_FISHING_ROD_CAUGHT_FISH, reward, user)
|
||||
source.used_rod.consume_bait(reward)
|
||||
var/turf/fishing_spot = get_turf(challenge.float)
|
||||
var/atom/movable/reward = dispense_reward(challenge.reward_path, user, fishing_spot)
|
||||
if(reward)
|
||||
user.add_mob_memory(/datum/memory/caught_fish, protagonist = user, deuteragonist = reward.name)
|
||||
SEND_SIGNAL(challenge.used_rod, COMSIG_FISHING_ROD_CAUGHT_FISH, reward, user)
|
||||
challenge.used_rod.consume_bait(reward)
|
||||
|
||||
/// Gives out the reward if possible
|
||||
/datum/fish_source/proc/dispense_reward(reward_path, mob/fisherman, turf/fishing_spot)
|
||||
|
||||
@@ -958,7 +958,7 @@
|
||||
|
||||
/obj/item/mod/module/fishing_glove
|
||||
name = "MOD fishing glove module"
|
||||
desc = "A MOD module that takes in an external fishing rod to enable the user to fish without having to hold one."
|
||||
desc = "A MOD module that takes in an external fishing rod to enable the user to fish without having to hold one, while also making it slightly easier."
|
||||
icon_state = "fishing_glove"
|
||||
complexity = 1
|
||||
overlay_state_inactive = "fishing_glove"
|
||||
@@ -1013,17 +1013,20 @@
|
||||
var/obj/item/gloves = mod?.get_part_from_slot(ITEM_SLOT_GLOVES)
|
||||
if(gloves && !QDELETED(mod))
|
||||
qdel(gloves.GetComponent(/datum/component/profound_fisher))
|
||||
return ..()
|
||||
|
||||
/obj/item/mod/module/fishing_glove/on_suit_activation()
|
||||
if(!equipped)
|
||||
return
|
||||
var/obj/item/gloves = mod.get_part_from_slot(ITEM_SLOT_GLOVES)
|
||||
if(gloves)
|
||||
if(!gloves)
|
||||
return
|
||||
gloves.AddComponent(/datum/component/adjust_fishing_difficulty, 5)
|
||||
if(equipped)
|
||||
gloves.AddComponent(/datum/component/profound_fisher, equipped)
|
||||
|
||||
/obj/item/mod/module/fishing_glove/on_suit_deactivation(deleting = FALSE)
|
||||
var/obj/item/gloves = mod.get_part_from_slot(ITEM_SLOT_GLOVES)
|
||||
if(gloves && !deleting)
|
||||
qdel(gloves.GetComponent(/datum/component/adjust_fishing_difficulty))
|
||||
qdel(gloves.GetComponent(/datum/component/profound_fisher))
|
||||
|
||||
/obj/item/mod/module/shock_absorber
|
||||
|
||||
@@ -43,4 +43,5 @@ You can get an experiscanner from science to perform fish scanning experiments,
|
||||
Fish is, of course, edible. Is it safe to eat raw? Well, if you've strong stomach, otherwise your best option is to cook it for a at least half a spessman minute if you don't want to catch nasty diseases.
|
||||
After researching the Advanced Fishing Technology Node, you can print special fishing gloves that let you fish without having to carry around a fishing rod. There's one pair that even trains athletics on top of fishing.You can get an experiscanner from science to perform fish scanning experiments, which can unlock more modules for the fishing portal, as well as fishing technology nodes (better equipment) for research.
|
||||
If you have enough credits, you can buy a set of fishing lures from cargo. Each lure allows you to catch different species of fish and won't get consumed, however they need to be spun at intervals to work.
|
||||
This may sound silly, but squids and their ink sacs can be used to temporarily blind foes.
|
||||
Various clothing and handheld items, as well as chairs you sit on, can make fishing easier (or sometimes harder). A trained fisherman can tell what can help and what won't, so keep an eye out.
|
||||
This may sound silly, but (live) squids and their ink sacs can be used as weapons to temporarily blind foes.
|
||||
@@ -1025,6 +1025,7 @@
|
||||
#include "code\datums\components\_component.dm"
|
||||
#include "code\datums\components\acid.dm"
|
||||
#include "code\datums\components\action_item_overlay.dm"
|
||||
#include "code\datums\components\adjust_fishing_difficulty.dm"
|
||||
#include "code\datums\components\admin_popup.dm"
|
||||
#include "code\datums\components\aggro_emote.dm"
|
||||
#include "code\datums\components\ai_has_target_timer.dm"
|
||||
|
||||
Reference in New Issue
Block a user