mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-10 06:34:45 +01:00
a80e8cae9d
* Adds Wizard adept midround * Fixes HUD bug * Teaches fireproofing for sacred flame * Teaches them better * Mugwort compatibility
84 lines
2.9 KiB
Plaintext
84 lines
2.9 KiB
Plaintext
/datum/event/wizard_adept
|
|
name = "Wizard Adept"
|
|
role_weights = list(ASSIGNMENT_SECURITY = 2)
|
|
role_requirements = list(ASSIGNMENT_CREW = 20, ASSIGNMENT_SECURITY = 2)
|
|
nominal_severity = EVENT_LEVEL_MAJOR
|
|
|
|
/datum/event/wizard_adept/start()
|
|
INVOKE_ASYNC(src, PROC_REF(poll_wiz_adept))
|
|
|
|
/datum/event/wizard_adept/proc/poll_wiz_adept(list/potential_wizards)
|
|
var/list/candidates = list()
|
|
if(!potential_wizards)
|
|
candidates = SSghost_spawns.poll_candidates("Do you want to play as a Wizard Adept?", ROLE_WIZARD, TRUE)
|
|
else
|
|
candidates = potential_wizards
|
|
if(!length(candidates))
|
|
kill()
|
|
return
|
|
var/mob/new_wizard
|
|
while(length(candidates))
|
|
new_wizard = pick_n_take(candidates)
|
|
if(jobban_isbanned(new_wizard, ROLE_TRAITOR))
|
|
continue
|
|
break
|
|
if(!new_wizard)
|
|
kill()
|
|
return
|
|
|
|
var/gender_pref = input_async(new_wizard, "Please select a gender (10 seconds):", list("Male", "Female"))
|
|
addtimer(CALLBACK(src, PROC_REF(get_species), candidates, new_wizard, gender_pref), 10 SECONDS)
|
|
|
|
/datum/event/wizard_adept/proc/get_species(list/potential_wizards, mob/new_wizard, datum/async_input/gender_pref)
|
|
gender_pref.close()
|
|
var/sel_gender = gender_pref.result
|
|
if(!sel_gender) // Player was AFK and did not select a gender
|
|
poll_wiz_adept(potential_wizards)
|
|
return
|
|
var/species_pref = input_async(new_wizard, "Please select a species (10 seconds):", list("Human", "Tajaran", "Skrell", "Unathi", "Diona", "Vulpkanin", "Nian", "Drask", "Kidan", "Grey", "Skkulakin", "Vox", "Slime", "Machine", "Random"))
|
|
addtimer(CALLBACK(src, PROC_REF(create_ninja), potential_wizards, new_wizard, sel_gender, species_pref), 10 SECONDS)
|
|
|
|
/datum/event/wizard_adept/proc/create_ninja(list/potential_wizards, mob/new_wizard, sel_gender, datum/async_input/species_pref)
|
|
species_pref.close()
|
|
var/sel_species = species_pref.result
|
|
if(!sel_species) // Player was AFK and did not select a species
|
|
poll_wiz_adept(potential_wizards)
|
|
return
|
|
if(!new_wizard || !new_wizard.client)
|
|
poll_wiz_adept(potential_wizards)
|
|
return
|
|
|
|
if(!length(GLOB.wizardstart))
|
|
message_admins("Unable to spawn wizard adept - no valid spawn locations.")
|
|
return
|
|
|
|
var/mob/living/carbon/human/M = new(pick(GLOB.wizardstart))
|
|
|
|
M.ckey = new_wizard.ckey
|
|
dust_if_respawnable(new_wizard)
|
|
|
|
if(sel_gender == "Male")
|
|
M.change_gender(MALE)
|
|
M.change_body_type(MALE)
|
|
else
|
|
M.change_gender(FEMALE)
|
|
M.change_body_type(FEMALE)
|
|
|
|
if(sel_species == "Random")
|
|
sel_species = pick("Human", "Tajaran", "Skrell", "Unathi", "Diona", "Vulpkanin", "Nian", "Drask", "Kidan", "Grey", "Skkulakin", "Vox", "Slime", "Machine")
|
|
if(sel_species == "Slime")
|
|
sel_species = "Slime People"
|
|
var/datum/species/S = GLOB.all_species[sel_species]
|
|
var/species = S.type
|
|
M.set_species(species, TRUE)
|
|
M.dna.ready_dna(M)
|
|
M.cleanSE()
|
|
M.overeatduration = 0
|
|
M.age = rand(30, 50)
|
|
M.regenerate_icons()
|
|
|
|
M.mind = new
|
|
M.mind.bind_to(M)
|
|
M.mind.set_original_mob(M)
|
|
M.mind.make_wizard_adept()
|