[MIRROR] Completely merk all traces of the skill system (#9546)

Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2024-11-28 16:10:57 -07:00
committed by GitHub
parent 762eae2474
commit af9049155b
20 changed files with 4 additions and 455 deletions

View File

@@ -1286,23 +1286,6 @@ var/datum/announcement/minor/admin_min_announcer = new
if(!ai_number)
to_chat(usr, span_bold("No AIs located")) //Just so you know the thing is actually working and not just ignoring you.
/datum/admins/proc/show_skills()
set category = "Admin.Investigate"
set name = "Show Skills"
if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins))
to_chat(usr, "Error: you are not an admin!")
return
var/mob/living/carbon/human/M = tgui_input_list(usr, "Select mob.", "Select mob.", human_mob_list)
if(!M) return
show_skill_window(usr, M)
return
/client/proc/update_mob_sprite(mob/living/carbon/human/H as mob)
set category = "Admin.Game"
set name = "Update Mob Sprite"

View File

@@ -84,7 +84,6 @@ var/list/admin_verbs_admin = list(
/client/proc/cmd_admin_rejuvenate,
/client/proc/toggleghostwriters,
/client/proc/toggledrones,
/datum/admins/proc/show_skills,
/client/proc/check_customitem_activity,
/client/proc/man_up,
/client/proc/global_man_up,
@@ -360,7 +359,6 @@ var/list/admin_verbs_mod = list(
/client/proc/colorooc,
/client/proc/player_panel_new,
/client/proc/dsay,
/datum/admins/proc/show_skills,
/datum/admins/proc/show_player_panel,
/client/proc/check_antagonists,
/client/proc/aooc,
@@ -480,7 +478,6 @@ var/list/admin_verbs_event_manager = list(
/client/proc/cmd_admin_change_custom_event,
/client/proc/cmd_admin_rejuvenate,
/client/proc/toggleghostwriters,
/datum/admins/proc/show_skills,
/client/proc/man_up,
/client/proc/global_man_up,
/client/proc/response_team, // Response Teams admin verb,

View File

@@ -99,7 +99,6 @@ var/list/admin_verbs_admin = list(
/client/proc/cmd_admin_rejuvenate,
/client/proc/toggleghostwriters,
/client/proc/toggledrones,
/datum/admins/proc/show_skills,
/client/proc/check_customitem_activity,
/client/proc/man_up,
/client/proc/global_man_up,
@@ -415,7 +414,6 @@ var/list/admin_verbs_mod = list(
/client/proc/colorooc,
/client/proc/player_panel_new,
/client/proc/dsay,
/datum/admins/proc/show_skills,
/datum/admins/proc/show_player_panel,
/client/proc/check_antagonists,
/client/proc/aooc,
@@ -547,7 +545,6 @@ var/list/admin_verbs_event_manager = list(
/client/proc/cmd_admin_change_custom_event,
/client/proc/cmd_admin_rejuvenate,
/client/proc/toggleghostwriters,
/datum/admins/proc/show_skills,
/client/proc/man_up,
/client/proc/global_man_up,
/client/proc/response_team, // Response Teams admin verb,

View File

@@ -7,11 +7,6 @@
sort_order = 1
category_item_type = /datum/category_item/player_setup_item/general
/datum/category_group/player_setup_category/skill_preferences
name = "Skills"
sort_order = 2
category_item_type = /datum/category_item/player_setup_item/skills
/datum/category_group/player_setup_category/occupation_preferences
name = "Occupation"
sort_order = 3

View File

@@ -1,89 +0,0 @@
/datum/category_item/player_setup_item/skills
name = "Skills"
sort_order = 1
/datum/category_item/player_setup_item/skills/load_character(list/save_data)
pref.skills = check_list_copy(save_data["skills"])
pref.used_skillpoints = save_data["used_skillpoints"]
pref.skill_specialization = save_data["skill_specialization"]
/datum/category_item/player_setup_item/skills/save_character(list/save_data)
save_data["skills"] = check_list_copy(pref.skills)
save_data["used_skillpoints"] = pref.used_skillpoints
save_data["skill_specialization"] = pref.skill_specialization
/datum/category_item/player_setup_item/skills/sanitize_character()
if(SKILLS == null) setup_skills()
if(!pref.skills) pref.skills = list()
if(!pref.skills.len) pref.ZeroSkills()
if(pref.used_skillpoints < 0) pref.used_skillpoints = 0
// Moved from /datum/preferences/proc/copy_to()
/datum/category_item/player_setup_item/skills/copy_to_mob(var/mob/living/carbon/human/character)
character.skills = pref.skills
character.used_skillpoints = pref.used_skillpoints
/datum/category_item/player_setup_item/skills/content()
. = list()
. += span_bold("Select your Skills") + "<br>"
. += "Current skill level: <b>[pref.GetSkillClass(pref.used_skillpoints)]</b> ([pref.used_skillpoints])<br>"
. += "<a href='?src=\ref[src];preconfigured=1'>Use preconfigured skillset</a><br>"
. += "<table>"
for(var/V in SKILLS)
. += "<tr><th colspan = 5><b>[V]</b>"
. += "</th></tr>"
for(var/datum/skill/S in SKILLS[V])
var/level = pref.skills[S.ID]
. += "<tr style='text-align:left;'>"
. += "<th><a href='?src=\ref[src];skillinfo=\ref[S]'>[S.name]</a></th>"
. += skill_to_button(S, "Untrained", level, SKILL_NONE)
// secondary skills don't have an amateur level
if(S.secondary)
. += "<th></th>"
else
. += skill_to_button(S, "Amateur", level, SKILL_BASIC)
. += skill_to_button(S, "Trained", level, SKILL_ADEPT)
. += skill_to_button(S, "Professional", level, SKILL_EXPERT)
. += "</tr>"
. += "</table>"
. = jointext(.,null)
/datum/category_item/player_setup_item/proc/skill_to_button(var/skill, var/level_name, var/current_level, var/selection_level)
if(current_level == selection_level)
return "<th>" + span_linkOn("[level_name]") + "</th>"
return "<th><a href='?src=\ref[src];setskill=\ref[skill];newvalue=[selection_level]'>[level_name]</a></th>"
/datum/category_item/player_setup_item/skills/OnTopic(href, href_list, user)
if(href_list["skillinfo"])
var/datum/skill/S = locate(href_list["skillinfo"])
var/HTML = span_bold("[S.name]") + "<br>[S.desc]"
user << browse(HTML, "window=\ref[user]skillinfo")
return TOPIC_HANDLED
else if(href_list["setskill"])
var/datum/skill/S = locate(href_list["setskill"])
var/value = text2num(href_list["newvalue"])
pref.skills[S.ID] = value
pref.CalculateSkillPoints()
return TOPIC_REFRESH
else if(href_list["preconfigured"])
var/selected = tgui_input_list(user, "Select a skillset", "Skillset", SKILL_PRE)
if(!selected || !CanUseTopic(user)) return
pref.ZeroSkills(1)
for(var/V in SKILL_PRE[selected])
if(V == "field")
pref.skill_specialization = SKILL_PRE[selected]["field"]
continue
pref.skills[V] = SKILL_PRE[selected][V]
pref.CalculateSkillPoints()
return TOPIC_REFRESH
else if(href_list["setspecialization"])
pref.skill_specialization = href_list["setspecialization"]
pref.CalculateSkillPoints()
return TOPIC_REFRESH
return ..()

View File

@@ -122,10 +122,6 @@ var/list/preferences_datums = list()
//Keeps track of preferrence for not getting any wanted jobs
var/alternate_option = 1
var/used_skillpoints = 0
var/skill_specialization = null
var/list/skills = list() // skills can range from 0 to 3
// maps each organ to either null(intact), "cyborg" or "amputated"
// will probably not be able to do this for head and torso ;)
var/list/organ_data = list()
@@ -233,58 +229,6 @@ var/list/preferences_datums = list()
value_cache = null
return ..()
/datum/preferences/proc/ZeroSkills(var/forced = 0)
for(var/V in SKILLS) for(var/datum/skill/S in SKILLS[V])
if(!skills.Find(S.ID) || forced)
skills[S.ID] = SKILL_NONE
/datum/preferences/proc/CalculateSkillPoints()
used_skillpoints = 0
for(var/V in SKILLS) for(var/datum/skill/S in SKILLS[V])
var/multiplier = 1
switch(skills[S.ID])
if(SKILL_NONE)
used_skillpoints += 0 * multiplier
if(SKILL_BASIC)
used_skillpoints += 1 * multiplier
if(SKILL_ADEPT)
// secondary skills cost less
if(S.secondary)
used_skillpoints += 1 * multiplier
else
used_skillpoints += 3 * multiplier
if(SKILL_EXPERT)
// secondary skills cost less
if(S.secondary)
used_skillpoints += 3 * multiplier
else
used_skillpoints += 6 * multiplier
/datum/preferences/proc/GetSkillClass(points)
return CalculateSkillClass(points, age)
/proc/CalculateSkillClass(points, age)
if(points <= 0) return "Unconfigured"
// skill classes describe how your character compares in total points
points -= min(round((age - 20) / 2.5), 4) // every 2.5 years after 20, one extra skillpoint
if(age > 30)
points -= round((age - 30) / 5) // every 5 years after 30, one extra skillpoint
switch(points)
if(-1000 to 3)
return "Terrifying"
if(4 to 6)
return "Below Average"
if(7 to 10)
return "Average"
if(11 to 14)
return "Above Average"
if(15 to 18)
return "Exceptional"
if(19 to 24)
return "Genius"
if(24 to 1000)
return "God"
/datum/preferences/proc/ShowChoices(mob/user)
if(!user || !user.client) return

View File

@@ -135,10 +135,8 @@
. = ..()
if(!victim)
return
var/skill = victim.get_helm_skill()
var/speed = victim.get_speed()
if(skill >= SKILL_PROF)
. = round(. * 0.5)
. = round(. * 0.5)
if(victim.is_still()) //Standing still means less shit flies your way
. = round(. * 0.1)
if(speed < SHIP_SPEED_SLOW) //Slow and steady
@@ -148,10 +146,4 @@
//Smol ship evasion
if(victim.vessel_size < SHIP_SIZE_LARGE && speed < SHIP_SPEED_FAST)
var/skill_needed = SKILL_PROF
if(speed < SHIP_SPEED_SLOW)
skill_needed = SKILL_ADEPT
if(victim.vessel_size < SHIP_SIZE_SMALL)
skill_needed = skill_needed - 1
if(skill >= max(skill_needed, victim.skill_needed))
. = round(. * 0.5)
. = round(. * 0.5)

View File

@@ -82,10 +82,6 @@
var/obj/item/l_store = null
var/obj/item/s_store = null
var/used_skillpoints = 0
var/skill_specialization = null
var/list/skills = list()
var/voice = "" //Instead of new say code calling GetVoice() over and over and over, we're just going to ask this variable, which gets updated in Life()
var/special_voice = "" // For changing our voice. Used by a symptom.

View File

@@ -25,11 +25,9 @@
edge = TRUE
/datum/unarmed_attack/claws/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/skill = user.skills["combat"]
var/obj/item/organ/external/affecting = target.get_organ(zone)
var/datum/gender/T = gender_datums[user.get_visible_gender()]
var/datum/gender/TT = gender_datums[target.get_visible_gender()]
if(!skill) skill = 1
attack_damage = CLAMP(attack_damage, 1, 5)
if(target == user)

View File

@@ -1,213 +0,0 @@
var/global/const
SKILL_NONE = 0
SKILL_BASIC = 1
SKILL_ADEPT = 2
SKILL_EXPERT = 3
SKILL_PROF = 4
/datum/skill/var
ID = "none" // ID of the skill, used in code
name = "None" // name of the skill
desc = "Placeholder skill" // detailed description of the skill
field = "Misc" // the field under which the skill will be listed
secondary = 0 // secondary skills only have two levels and cost significantly less
var/global/list/SKILLS = null
var/list/SKILL_ENGINEER = list("field" = "Engineering", "EVA" = SKILL_BASIC, "construction" = SKILL_ADEPT, "electrical" = SKILL_BASIC, "engines" = SKILL_ADEPT)
var/list/SKILL_ORGAN_ROBOTICIST = list("field" = "Science", "devices" = SKILL_ADEPT, "electrical" = SKILL_BASIC, "computer" = SKILL_ADEPT, "anatomy" = SKILL_BASIC)
var/list/SKILL_SECURITY_OFFICER = list("field" = "Security", "combat" = SKILL_BASIC, "weapons" = SKILL_ADEPT, "law" = SKILL_ADEPT, "forensics" = SKILL_BASIC)
var/list/SKILL_CHEMIST = list("field" = "Science", "chemistry" = SKILL_ADEPT, "science" = SKILL_ADEPT, "medical" = SKILL_BASIC, "devices" = SKILL_BASIC)
var/global/list/SKILL_PRE = list(JOB_ENGINEER = SKILL_ENGINEER, JOB_ROBOTICIST = SKILL_ORGAN_ROBOTICIST, JOB_SECURITY_OFFICER = SKILL_SECURITY_OFFICER, JOB_CHEMIST = SKILL_CHEMIST)
/datum/skill/management
ID = "management"
name = "Command"
desc = "Your ability to manage and commandeer other crew members."
/datum/skill/combat
ID = "combat"
name = "Close Combat"
desc = "This skill describes your training in hand-to-hand combat or melee weapon usage. While expertise in this area is rare in the era of firearms, experts still exist among athletes."
field = "Security"
/datum/skill/weapons
ID = "weapons"
name = "Weapons Expertise"
desc = "This skill describes your expertise with and knowledge of weapons. A low level in this skill implies knowledge of simple weapons, for example tazers and flashes. A high level in this skill implies knowledge of complex weapons, such as grenades, riot shields, pulse rifles or bombs. A low level in this skill is typical for security officers, a high level of this skill is typical for special agents and soldiers."
field = "Security"
/datum/skill/EVA
ID = "EVA"
name = "Extra-vehicular activity"
desc = "This skill describes your skill and knowledge of space-suits and working in vacuum."
field = "Engineering"
secondary = 1
/datum/skill/forensics
ID = "forensics"
name = "Forensics"
desc = "Describes your skill at performing forensic examinations and identifying vital evidence. Does not cover analytical abilities, and as such isn't the only indicator for your investigation skill. Note that in order to perform autopsy, the surgery skill is also required."
field = "Security"
/datum/skill/construction
ID = "construction"
name = "Construction"
desc = "Your ability to construct various buildings, such as walls, floors, tables and so on. Note that constructing devices such as APCs additionally requires the Electronics skill. A low level of this skill is typical for janitors, a high level of this skill is typical for engineers."
field = "Engineering"
/datum/skill/management
ID = "management"
name = "Command"
desc = "Your ability to manage and commandeer other crew members."
/datum/skill/knowledge/law
ID = "law"
name = "Corporate Law"
desc = "Your knowledge of corporate law and procedures. This includes Corporate Regulations, as well as general station rulings and procedures. A low level in this skill is typical for security officers, a high level in this skill is typical for Site Managers."
field = "Security"
secondary = 1
/datum/skill/devices
ID = "devices"
name = "Complex Devices"
desc = "Describes the ability to assemble complex devices, such as computers, circuits, printers, robots or gas tank assemblies(bombs). Note that if a device requires electronics or programming, those skills are also required in addition to this skill."
field = "Science"
/datum/skill/electrical
ID = "electrical"
name = "Electrical Engineering"
desc = "This skill describes your knowledge of electronics and the underlying physics. A low level of this skill implies you know how to lay out wiring and configure powernets, a high level of this skill is required for working complex electronic devices such as circuits or bots."
field = "Engineering"
/datum/skill/atmos
ID = "atmos"
name = "Atmospherics"
desc = "Describes your knowledge of piping, air distribution and gas dynamics."
field = "Engineering"
/datum/skill/engines
ID = "engines"
name = "Engines"
desc = "Describes your knowledge of the various engine types common on space stations, such as the singularity or anti-matter engine."
field = "Engineering"
secondary = 1
/datum/skill/computer
ID = "computer"
name = "Information Technology"
desc = "Describes your understanding of computers, software and communication. Not a requirement for using computers, but definitely helps. Used in telecommunications and programming of computers and AIs."
field = "Science"
/datum/skill/pilot
ID = "pilot"
name = "Heavy Machinery Operation"
desc = "Describes your experience and understanding of operating heavy machinery, which includes mechs and other large exosuits. Used in piloting mechs."
field = "Engineering"
/datum/skill/medical
ID = "medical"
name = "Medicine"
desc = "Covers an understanding of the human body and medicine. At a low level, this skill gives a basic understanding of applying common types of medicine, and a rough understanding of medical devices like the health analyzer. At a high level, this skill grants exact knowledge of all the medicine available on the station, as well as the ability to use complex medical devices like the body scanner or mass spectrometer."
field = "Medical"
/datum/skill/anatomy
ID = "anatomy"
name = "Anatomy"
desc = "Gives you a detailed insight of the human body. A high skill in this is required to perform surgery.This skill may also help in examining alien biology."
field = "Medical"
/datum/skill/virology
ID = "virology"
name = "Virology"
desc = "This skill implies an understanding of microorganisms and their effects on humans."
field = "Medical"
/datum/skill/genetics
ID = "genetics"
name = "Genetics"
desc = "Implies an understanding of how DNA works and the structure of the human DNA."
field = "Science"
/datum/skill/chemistry
ID = "chemistry"
name = "Chemistry"
desc = "Experience with mixing chemicals, and an understanding of what the effect will be. This doesn't cover an understanding of the effect of chemicals on the human body, as such the medical skill is also required for medical chemists."
field = "Science"
/datum/skill/botany
ID = "botany"
name = "Botany"
desc = "Describes how good a character is at growing and maintaining plants."
/datum/skill/cooking
ID = "cooking"
name = "Cooking"
desc = "Describes a character's skill at preparing meals and other consumable goods. This includes mixing alcoholic beverages."
/datum/skill/science
ID = "science"
name = "Science"
desc = "Your experience and knowledge with scientific methods and processes."
field = "Science"
/datum/attribute/var
ID = "none"
name = "None"
desc = "This is a placeholder"
/proc/setup_skills()
if(SKILLS == null)
SKILLS = list()
for(var/T in subtypesof(/datum/skill))
var/datum/skill/S = new T
if(S.ID != "none")
if(!SKILLS.Find(S.field))
SKILLS[S.field] = list()
var/list/L = SKILLS[S.field]
L += S
/mob/living/carbon/human/proc/GetSkillClass(points)
return CalculateSkillClass(points, age)
/proc/show_skill_window(var/mob/user, var/mob/living/carbon/human/M)
if(!istype(M)) return
if(SKILLS == null)
setup_skills()
if(!M.skills || M.skills.len == 0)
to_chat(user, "There are no skills to display.")
return
var/HTML = "<body>"
HTML += span_bold("Select your Skills") + "<br>"
HTML += "Current skill level: <b>[M.GetSkillClass(M.used_skillpoints)]</b> ([M.used_skillpoints])<br>"
HTML += "<table>"
for(var/V in SKILLS)
HTML += "<tr><th colspan = 5>" + span_bold("[V]")
HTML += "</th></tr>"
for(var/datum/skill/S in SKILLS[V])
var/level = M.skills[S.ID]
HTML += "<tr style='text-align:left;'>"
HTML += "<th>[S.name]</th>"
HTML += "<th><font color=[(level == SKILL_NONE) ? "red" : "black"]>\[Untrained\]</font></th>"
// secondary skills don't have an amateur level
if(S.secondary)
HTML += "<th></th>"
else
HTML += "<th><font color=[(level == SKILL_BASIC) ? "red" : "black"]>\[Amateur\]</font></th>"
HTML += "<th><font color=[(level == SKILL_ADEPT) ? "red" : "black"]>\[Trained\]</font></th>"
HTML += "<th><font color=[(level == SKILL_EXPERT) ? "red" : "black"]>\[Professional\]</font></th>"
HTML += "</tr>"
HTML += "</table>"
user << browse(null, "window=preferences")
user << browse(HTML, "window=show_skills;size=600x800")
return
/mob/living/carbon/human/verb/show_skills()
set category = "IC.Game"
set name = "Show Own Skills"
show_skill_window(src, src)

View File

@@ -1,12 +0,0 @@
// We don't actually have a skills system, so return max skill for everything.
/mob/proc/get_skill_value(skill_path)
return SKILL_EXPERT
// A generic way of modifying success probabilities via skill values. Higher factor means skills have more effect. fail_chance is the chance at SKILL_NONE.
/mob/proc/skill_fail_chance(skill_path, fail_chance, no_more_fail = SKILL_EXPERT, factor = 1)
var/points = get_skill_value(skill_path)
if(points >= no_more_fail)
return 0
else
return fail_chance * 2 ** (factor*(SKILL_BASIC - points))

View File

@@ -39,7 +39,6 @@
if(istype(computer))
computer.update_icon()
ticket_count += 1
// user?.mind?.adjust_experience(/datum/skill/gaming, 50)
sleep(10)
else if(player_hp <= 0 || player_mp <= 0)
heads_up = "You have been defeated... how will the station survive?"
@@ -48,7 +47,6 @@
program_icon_state = "arcade_off"
if(istype(computer))
computer.update_icon()
// user?.mind?.adjust_experience(/datum/skill/gaming, 10)
sleep(10)
// This handles the boss "AI".
@@ -115,8 +113,6 @@
if(computer)
printer = computer.nano_printer
// var/gamerSkillLevel = usr.mind?.get_skill_level(/datum/skill/gaming)
// var/gamerSkill = usr.mind?.get_skill_modifier(/datum/skill/gaming, SKILL_RANDS_MODIFIER)
switch(action)
if("Attack")
var/attackamt = 0 //Spam prevention.

View File

@@ -6,9 +6,6 @@
icon_state = "computer"
circuit = /obj/item/circuitboard/disperser
core_skill = /datum/skill/pilot
var/skill_offset = SKILL_ADEPT - 1 //After which skill level it starts to matter. -1, because we have to index from zero
icon_keyboard = "rd_key"
icon_screen = "teleport"
@@ -151,7 +148,6 @@
data["range"] = range
data["next_shot"] = round(get_next_shot_seconds())
data["nopower"] = !data["faillink"] && (!front.powered() || !middle.powered() || !back.powered())
data["skill"] = user.get_skill_value(core_skill) > skill_offset
var/charge = "UNKNOWN ERROR"
if(get_charge_type() == OVERMAP_WEAKNESS_NONE)
@@ -184,7 +180,7 @@
. = TRUE
if("skill_calibration")
for(var/i = 1 to min(caldigit, usr.get_skill_value(core_skill) - skill_offset))
for(var/i = 1 to 2)
calibration[i] = calexpected[i]
. = TRUE

View File

@@ -9,8 +9,6 @@
var/obj/effect/overmap/visitable/ship/landable/myship //my overmap ship object
category = /datum/shuttle/autodock/overmap
var/skill_needed = SKILL_BASIC
var/operator_skill = SKILL_BASIC
/datum/shuttle/autodock/overmap/New(var/_name, var/obj/effect/shuttle_landmark/start_waypoint)
..(_name, start_waypoint)
@@ -54,15 +52,7 @@
/datum/shuttle/autodock/overmap/get_travel_time()
var/distance_mod = get_dist(waypoint_sector(current_location),waypoint_sector(next_location))
var/skill_mod = 0.2*(skill_needed - operator_skill)
return move_time * (1 + distance_mod + skill_mod)
/datum/shuttle/autodock/overmap/process_launch()
if(prob(10*max(0, skill_needed - operator_skill)))
var/places = get_possible_destinations()
var/place = pick(places)
set_destination(places[place])
..()
return move_time * (1 + distance_mod)
/datum/shuttle/autodock/overmap/proc/set_destination(var/obj/effect/shuttle_landmark/A)
if(A != current_location)

View File

@@ -49,7 +49,6 @@
// Skills
//
/obj/machinery/computer/ship
var/core_skill = /datum/skill/devices //The skill used for skill checks for this machine (mostly so subtypes can use different skills).
var/ai_control = TRUE //VOREStation Edit
//

View File

@@ -20,7 +20,6 @@ GLOBAL_LIST_EMPTY(all_waypoints)
icon_screen = "helm"
light_color = "#7faaff"
circuit = /obj/item/circuitboard/helm
core_skill = /datum/skill/pilot
var/autopilot = 0
var/autopilot_disabled = TRUE
var/list/known_sectors = list()
@@ -79,13 +78,10 @@ GLOBAL_LIST_EMPTY(all_waypoints)
// All other cases, move toward direction
else if(speed + acceleration <= speedlimit)
linked.accelerate(direction, accellimit)
linked.operator_skill = null//if this is on you can't dodge meteors
return
/obj/machinery/computer/ship/helm/relaymove(var/mob/user, direction)
if(viewing_overmap(user) && linked)
if(prob(user.skill_fail_chance(/datum/skill/pilot, 50, linked.skill_needed, factor = 1)))
direction = turn(direction,pick(90,-90))
linked.relaymove(user, direction, accellimit)
return 1
@@ -255,8 +251,6 @@ GLOBAL_LIST_EMPTY(all_waypoints)
if("move")
var/ndir = text2num(params["dir"])
if(prob(usr.skill_fail_chance(/datum/skill/pilot, 50, linked.skill_needed, factor = 1)))
ndir = turn(ndir,pick(90,-90))
linked.relaymove(usr, ndir, accellimit)
. = TRUE

View File

@@ -34,10 +34,6 @@
to_chat(usr, span_warning("Unable to establish link with the shuttle."))
return TRUE
if(ismob(usr))
var/mob/user = usr
shuttle.operator_skill = user.get_skill_value(/datum/skill/pilot)
switch(action)
if("pick")
var/list/possible_d = shuttle.get_possible_destinations()

View File

@@ -39,8 +39,6 @@
var/engines_state = 0 //global on/off toggle for all engines
var/thrust_limit = 1 //global thrust limit for all engines, 0..1
var/halted = 0 //admin halt or other stop.
var/skill_needed = SKILL_ADEPT //piloting skill needed to steer it without going in random dir
var/operator_skill
//VOREStation add
var/last_sound = 0 //The last time a ship sound was played //VOREStation add
var/sound_cooldown = 10 SECONDS //VOREStation add
@@ -67,7 +65,6 @@
/obj/effect/overmap/visitable/ship/relaymove(mob/user, direction, accel_limit)
accelerate(direction, accel_limit)
operator_skill = user.get_skill_value(/datum/skill/pilot)
/obj/effect/overmap/visitable/ship/proc/is_still()
return !MOVING(speed[1]) && !MOVING(speed[2])
@@ -285,9 +282,6 @@
if(!SSshuttles.overmap_halted)
halted = 0
/obj/effect/overmap/visitable/ship/proc/get_helm_skill()//delete this mover operator skill to overmap obj
return operator_skill
/obj/effect/overmap/visitable/ship/populate_sector_objects()
..()
for(var/obj/machinery/computer/ship/S in global.machines)

View File

@@ -21,7 +21,6 @@ type Data = {
range: number;
next_shot: number;
nopower: BooleanLike;
skill: BooleanLike;
chargeload: string | null;
};

View File

@@ -2237,7 +2237,6 @@
#include "code\modules\client\preference_setup\loadout\loadout_xeno_ch.dm"
#include "code\modules\client\preference_setup\loadout\loadout_xeno_vr.dm"
#include "code\modules\client\preference_setup\occupation\occupation.dm"
#include "code\modules\client\preference_setup\skills\skills.dm"
#include "code\modules\client\preference_setup\volume_sliders\01_volume.dm"
#include "code\modules\client\preference_setup\volume_sliders\02_media.dm"
#include "code\modules\client\preference_setup\vore\01_ears.dm"
@@ -3081,7 +3080,6 @@
#include "code\modules\mob\say.dm"
#include "code\modules\mob\say_ch.dm"
#include "code\modules\mob\say_vr.dm"
#include "code\modules\mob\skillset.dm"
#include "code\modules\mob\theme_lists.dm"
#include "code\modules\mob\transform_procs.dm"
#include "code\modules\mob\typing_indicator.dm"
@@ -3711,7 +3709,6 @@
#include "code\modules\mob\new_player\poll.dm"
#include "code\modules\mob\new_player\preferences_setup.dm"
#include "code\modules\mob\new_player\preferences_setup_vr.dm"
#include "code\modules\mob\new_player\skill.dm"
#include "code\modules\mob\new_player\sprite_accessories.dm"
#include "code\modules\mob\new_player\sprite_accessories_ear.dm"
#include "code\modules\mob\new_player\sprite_accessories_ear_ch.dm"