diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 0d6a87daec..a9781afab1 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -296,6 +296,25 @@ else to_chat(current, "My [S.name] has weakened!") +// just scoot in right here +/datum/mind/proc/assign_experiences(list/skills, silent, option, subclass = null) + // list(skill path = num) + if(subclass) + skills = skills[subclass] + for(var/path in skills) + var/numValue + if(islist(skills[path])) // cant assign pick when defining + numValue = pick(skills[path]) + else + numValue = skills[path] + switch(option) + if("skills") + adjust_skillrank(path, numValue, TRUE) // change this to what i think is a rewritten proc? + if("stats") + current.change_stat(path, numValue) + + + /datum/mind/proc/adjust_skillrank(skill, amt, silent = FALSE) var/datum/skill/S = GetSkillRef(skill) var/amt2gain = 0 diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm index 3df0111ff1..133327387d 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm @@ -25,6 +25,11 @@ var/vampcompat = TRUE var/list/traits_applied + + var/list/given_skills = list() + + var/list/stat_changes = list() + /datum/advclass/proc/equipme(mob/living/carbon/human/H) if(!H) return FALSE diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/amazon.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/amazon.dm index dc53b5d913..14690ac8be 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/amazon.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/amazon.dm @@ -19,20 +19,34 @@ maxchosen = 2 traits_applied = list(RTRAIT_CRITICAL_RESISTANCE, TRAIT_NOPAINSTUN, TRAIT_STEELHEARTED) + + given_skills = list( + /datum/skill/combat/polearms = 3, \ + /datum/skill/combat/swords = 1, \ + /datum/skill/combat/knives = 1, \ + /datum/skill/combat/bows = 3, \ + /datum/skill/combat/wrestling = 3, \ + /datum/skill/combat/unarmed = 2, \ + /datum/skill/craft/crafting = 1, \ + /datum/skill/misc/swimming = 2, \ + /datum/skill/misc/climbing = 2, \ + /datum/skill/misc/riding = 2, \ + /datum/skill/misc/athletics = 2, \ + /datum/skill/misc/medicine = 1 + + ) + stat_changes = list( + "strength" = 2, + "intelligence" = -2, + "constitution" = 3, + "perception" = 2, + "endurance" = 2, + "speed" = 1 +) + /datum/outfit/job/roguetown/adventurer/amazon/pre_equip(mob/living/carbon/human/H) ..() - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/crafting, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 1, TRUE) + H.mind.assign_experiences(/datum/advclass/amazon::given_skills, TRUE, "skills") belt = /obj/item/storage/belt/rogue/leather neck = /obj/item/storage/belt/rogue/pouch/coins/poor beltl = /obj/item/rogueweapon/huntingknife @@ -53,12 +67,8 @@ else r_hand = /obj/item/rogueweapon/spear H.mind.adjust_skillrank(/datum/skill/combat/polearms, 2, TRUE) - H.change_stat("strength", 2) - H.change_stat("intelligence", -2) - H.change_stat("constitution", 3) - H.change_stat("perception", 2) - H.change_stat("endurance", 2) - H.change_stat("speed", 1) + H.mind.assign_experiences(/datum/advclass/amazon::stat_changes, TRUE, "stats") + if(H.wear_mask) //for stupid retards with bad eyes var/obj/I = H.wear_mask H.dropItemToGround(H.wear_mask, TRUE) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/barbarian.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/barbarian.dm index 1ba905f74f..ca3addabc5 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/barbarian.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/barbarian.dm @@ -17,6 +17,67 @@ outfit = /datum/outfit/job/roguetown/adventurer/barbarian traits_applied = list(RTRAIT_CRITICAL_RESISTANCE, TRAIT_NOPAINSTUN, TRAIT_STEELHEARTED) + given_skills = list( + "warrior" = list( + /datum/skill/combat/wrestling = 3, + /datum/skill/combat/unarmed = 3, + /datum/skill/combat/knives = 2, + /datum/skill/craft/crafting = list(0,1), + /datum/skill/misc/athletics = list(3,4), + /datum/skill/misc/swimming = 2, + /datum/skill/misc/sneaking = 2, + /datum/skill/misc/climbing = 2, + /datum/skill/misc/riding = 1, + /datum/skill/craft/cooking = 1, + /datum/skill/labor/butchering = 2, + /datum/skill/craft/traps = 1, + /datum/skill/labor/fishing = list(0,1), + /datum/skill/combat/bows = 1, + /datum/skill/combat/polearms = 2, + /datum/skill/combat/axesmaces = 2, + /datum/skill/combat/swords = 3 + ), + "hunter killer" = list( + /datum/skill/combat/wrestling = 2, + /datum/skill/combat/unarmed = 2, + /datum/skill/combat/knives = 3, + /datum/skill/craft/crafting = list(1,2), + /datum/skill/misc/athletics = 3, + /datum/skill/misc/swimming = 3, + /datum/skill/misc/sneaking = 3, + /datum/skill/craft/tanning = 1, + /datum/skill/misc/climbing = 3, + /datum/skill/misc/riding = 2, + /datum/skill/craft/cooking = list(1,2), + /datum/skill/labor/butchering = 3, + /datum/skill/craft/traps = 2, + /datum/skill/labor/fishing = 1, + /datum/skill/misc/sewing = 1, + /datum/skill/combat/bows = 2, + /datum/skill/combat/polearms = 1, + /datum/skill/combat/axesmaces = 3, + /datum/skill/combat/swords = 1 + ) + + ) + stat_changes = list( + "warrior" = list( + "intelligence" = -2, + "strength" = 3, + "constitution" = 3, + "endurance" = 2 + ), + "hunter killer" = list( + "intelligence" = -1, + "strength" = 2, + "constitution" = 2, + "endurance" = 3 + ) + + ) + + + /datum/outfit/job/roguetown/adventurer/barbarian allowed_patrons = list(/datum/patron/divine/ravox, /datum/patron/inhumen/graggar) @@ -25,27 +86,13 @@ H.adjust_blindness(-3) var/classes = list("Warrior","Hunter Killer",) var/classchoice = input("Choose your archetypes", "Available archetypes") as anything in classes + H.mind.assign_experiences(/datum/advclass/barbarian::given_skills, TRUE, "skills", lowertext(classchoice)) + H.mind.assign_experiences(/datum/advclass/barbarian::stat_changes, TRUE, "stats", lowertext(classchoice)) switch(classchoice) if("Warrior") H.set_blindness(0) to_chat(H, "Barbarians are great warriors of the outlands, often regarded as the strongest of their tribes -- should they have any that live. These incredible titans of strength and brutality are motivated most often by a single... all consuming instinct. SURVIVE.") - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/crafting, pick(0,1), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, pick(3,4), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/labor/butchering, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/traps, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/labor/fishing, pick(0,1), TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE) + beltr = /obj/item/rogueweapon/sword/iron belt = /obj/item/storage/belt/rogue/leather neck = /obj/item/storage/belt/rogue/pouch/coins/poor @@ -61,32 +108,10 @@ armor = /obj/item/clothing/suit/roguetown/armor/leather/hide if(prob(40)) cloak = /obj/item/clothing/cloak/raincloak/furcloak/brown - H.change_stat("intelligence", -2) - H.change_stat("strength", 3) // Barbs are traditionally a mix of strength/resilience. - H.change_stat("constitution", 3) - H.change_stat("endurance", 2) if("Hunter Killer") H.set_blindness(0) to_chat(H, "Barbarians are great warriors of the outlands, often regarded as the strongest of their tribes -- should they have any that live. These incredible titans of strength and brutality are motivated most often by a single... all consuming instinct. SURVIVE.") - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/crafting, pick(1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/tanning, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/cooking, pick(1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/labor/butchering, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/traps, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/labor/fishing, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sewing, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE) + beltr = /obj/item/rogueweapon/stoneaxe/woodcut r_hand = /obj/item/gun/ballistic/revolver/grenadelauncher/bow l_hand = /obj/item/quiver/arrows @@ -101,10 +126,6 @@ armor = /obj/item/clothing/suit/roguetown/armor/leather else armor = /obj/item/clothing/suit/roguetown/armor/leather/hide - H.change_stat("intelligence", -1) // The hunter is smarter, more skilled -- but not as tough. - H.change_stat("strength", 2) - H.change_stat("constitution", 2) - H.change_stat("endurance", 3) /* if("ROLL THE DICE!") if(prob(49)) // Warrior diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/bard.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/bard.dm index f7e85d6727..0b566b5056 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/bard.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/bard.dm @@ -17,38 +17,80 @@ "Aasimar" ) outfit = /datum/outfit/job/roguetown/adventurer/bard + traits_applied = list(RTRAIT_MEDIUMARMOR) + given_skills = list( + "bard" = list( + /datum/skill/combat/crossbows = 3, + /datum/skill/combat/polearms = 1, + /datum/skill/combat/axesmaces = 2, + /datum/skill/combat/bows = 3, + /datum/skill/combat/wrestling = 2, + /datum/skill/combat/unarmed = 3, + /datum/skill/misc/swimming = 2, + /datum/skill/misc/climbing = 3, + /datum/skill/misc/athletics = 2, + /datum/skill/combat/swords = 2, + /datum/skill/combat/knives = 3, + /datum/skill/misc/reading = 3, + /datum/skill/misc/sewing = 1, + /datum/skill/misc/sneaking = 2, + /datum/skill/misc/stealing = 2, + /datum/skill/misc/medicine = list(0,1), + /datum/skill/craft/cooking = 1, + /datum/skill/misc/riding = 1, + /datum/skill/misc/music = list(4,5) + ), + "skald" = list( + /datum/skill/combat/crossbows = 2, + /datum/skill/combat/polearms = 2, + /datum/skill/combat/axesmaces = 3, + /datum/skill/combat/bows = 2, + /datum/skill/combat/wrestling = 2, + /datum/skill/combat/unarmed = 3, + /datum/skill/misc/swimming = 2, + /datum/skill/misc/climbing = 2, + /datum/skill/misc/athletics = 3, + /datum/skill/combat/swords = 3, + /datum/skill/combat/knives = 3, + /datum/skill/misc/reading = 3, + /datum/skill/misc/sewing = 1, + /datum/skill/misc/sneaking = 2, + /datum/skill/misc/stealing = 2, + /datum/skill/misc/medicine = list(0,1), + /datum/skill/craft/cooking = 1, + /datum/skill/misc/riding = 1, + /datum/skill/misc/music = list(3,5) + ) + ) + stat_changes = list( + "bard" = list( + "intelligence" = 1, + "perception" = 2, + "endurance" = 1, + "speed" = 2 + ), + "skald" = list( + "constitution" = 2, + "strength" = 1, + "speed" = 1 + ) + ) + traits_applied = list(RTRAIT_MEDIUMARMOR, RTRAIT_DODGEEXPERT) + /datum/outfit/job/roguetown/adventurer/bard/pre_equip(mob/living/carbon/human/H) ..() // The entertaining jack of all trades, uniquely handy with crossbows and swords. They're incredibly well travelled, can sneak, steal and survive on their own. H.adjust_blindness(-3) var/classes = list("Bard","Skald",) var/classchoice = input("Choose your archetypes", "Available archetypes") as anything in classes - + H.mind.assign_experiences(/datum/advclass/bard::given_skills, TRUE, "skills", lowertext(classchoice)) + H.mind.assign_experiences(/datum/advclass/bard::stat_changes, TRUE, "stats", lowertext(classchoice)) switch(classchoice) - + if("Bard") H.set_blindness(0) to_chat(H, "Bards make their fortunes in brothels, flop houses and taverns -- gaining fame for their songs and legends. If there is any truth to them, that is.") - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sewing, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/stealing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, pick(0,1), TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/music, pick(4,5), TRUE) head = /obj/item/clothing/head/roguetown/bardhat shoes = /obj/item/clothing/shoes/roguetown/boots pants = /obj/item/clothing/under/roguetown/tights/random @@ -62,32 +104,10 @@ backl = /obj/item/storage/backpack/rogue/satchel beltl = /obj/item/storage/belt/rogue/pouch/coins/poor beltr = /obj/item/rogueweapon/huntingknife/idagger/steel - H.change_stat("intelligence", 1) - H.change_stat("perception", 2) - H.change_stat("endurance", 1) - H.change_stat("speed", 2) + if("Skald") H.set_blindness(0) to_chat(H, "Skalds are wandering storytellers, and for many villages they are local historians keeping the tales of great legends and heroes alive.") - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sewing, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/stealing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, pick(0,1), TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/music, rand(3,5), TRUE) head = /obj/item/clothing/head/roguetown/bardhat shoes = /obj/item/clothing/shoes/roguetown/boots pants = /obj/item/clothing/under/roguetown/tights/random @@ -102,9 +122,7 @@ l_hand = /obj/item/rogueweapon/huntingknife/idagger/steel beltl = /obj/item/storage/belt/rogue/pouch/coins/mid l_hand = /obj/item/rogueweapon/sword/iron - H.change_stat("constitution", 2) - H.change_stat("strength", 1) - H.change_stat("speed", 1) + if(H.dna?.species) if(iself(H) || ishalfelf(H)) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/cleric.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/cleric.dm index c7c49eba4c..d24c90e149 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/cleric.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/cleric.dm @@ -17,6 +17,62 @@ vampcompat = FALSE outfit = /datum/outfit/job/roguetown/adventurer/cleric traits_applied = list(RTRAIT_HEAVYARMOR) + given_skills = list( + "life cleric" = list( + /datum/skill/combat/crossbows = 2, + /datum/skill/combat/polearms = 1, + /datum/skill/combat/bows = 1, + /datum/skill/combat/wrestling = 3, + /datum/skill/combat/unarmed = 1, + /datum/skill/misc/swimming = 1, + /datum/skill/misc/climbing = 2, + /datum/skill/misc/athletics = 2, + /datum/skill/combat/swords = 1, + /datum/skill/combat/knives = 3, + /datum/skill/misc/reading = 3, + /datum/skill/misc/sewing = 2, + /datum/skill/misc/medicine = 4, + /datum/skill/craft/cooking = 1, + /datum/skill/misc/riding = 1, + /datum/skill/combat/axesmaces = 2, + /datum/skill/magic/holy = 4 + ), + "war cleric" = list( + /datum/skill/combat/crossbows = 3, + /datum/skill/combat/polearms = 2, + /datum/skill/combat/bows = 1, + /datum/skill/combat/wrestling = 3, + /datum/skill/combat/unarmed = 2, + /datum/skill/misc/swimming = 1, + /datum/skill/misc/climbing = 2, + /datum/skill/misc/athletics = 2, + /datum/skill/combat/swords = 2, + /datum/skill/combat/knives = 3, + /datum/skill/misc/reading = 3, + /datum/skill/misc/sewing = 2, + /datum/skill/misc/medicine = 2, + /datum/skill/craft/cooking = 1, + /datum/skill/misc/riding = 1, + /datum/skill/combat/axesmaces = 3, + /datum/skill/magic/holy = 2 + ) + ) + stat_changes = list( + "life cleric" = list( + "intelligence" = 2, + "perception" = 1, + "strength" = 1, + "constitution" = 2, + "endurance" = 2 + ), + "war cleric" = list( + "intelligence" = 1, + "strength" = 2, + "constitution" = 2, + "endurance" = 2, + "speed" = -1 + ) + ) /datum/outfit/job/roguetown/adventurer/cleric allowed_patrons = ALL_CLERIC_PATRONS @@ -39,35 +95,13 @@ H.adjust_blindness(-3) var/classes = list("Life Cleric","War Cleric",) var/classchoice = input("Choose your archetypes", "Available archetypes") as anything in classes - + H.mind.assign_experiences(/datum/advclass/cleric::given_skills, TRUE, "skills", lowertext(classchoice)) + H.mind.assign_experiences(/datum/advclass/cleric::stat_changes, TRUE, "stats", lowertext(classchoice)) switch(classchoice) if("Life Cleric") H.set_blindness(0) to_chat(H, "You are a cleric of the life domain. Well versed in the arts of healing and magic.") - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sewing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/weaving, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/magic/holy, 4, TRUE) - H.change_stat("intelligence", 2) - H.change_stat("perception", 1) // More intelligence and no speed penalty for Life Clerics. - H.change_stat("strength", 1) - H.change_stat("constitution", 2) - H.change_stat("endurance", 2) if(prob(50)) H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/churn) else if(prob(50)) @@ -78,28 +112,6 @@ if("War Cleric") H.set_blindness(0) to_chat(H, "You are a cleric of the war domain. Experienced in both the granting of life and the taking of it. Unfortunately your study of warcraft has weakened your divine abilities...") - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sewing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/magic/holy, 2, TRUE) - H.change_stat("intelligence", 1) - H.change_stat("strength", 2) - H.change_stat("constitution", 2) - H.change_stat("endurance", 2) // Stronger but less intelligent/quick compared to life clerics. - H.change_stat("speed", -1) armor = /obj/item/clothing/suit/roguetown/armor/plate wrists = /obj/item/clothing/wrists/roguetown/bracers/leather diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/dbomb.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/dbomb.dm index bea34cf5c4..f069e76afa 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/dbomb.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/dbomb.dm @@ -6,6 +6,24 @@ outfit = /datum/outfit/job/roguetown/adventurer/dbomb traits_applied = list(RTRAIT_HEAVYARMOR) + stat_changes = list( + "strength" = 1, + "endurance" = 1 + ) + + given_skills = list( + /datum/skill/combat/axesmaces = 3, + /datum/skill/combat/unarmed = 2, + /datum/skill/combat/wrestling = 2, + /datum/skill/craft/crafting = 4, + /datum/skill/misc/swimming = 1, + /datum/skill/misc/climbing = 1, + /datum/skill/misc/sewing = 1, + /datum/skill/misc/athletics = 1, + /datum/skill/misc/medicine = 1 + ) + + /datum/outfit/job/roguetown/adventurer/dbomb/pre_equip(mob/living/carbon/human/H) ..() head = /obj/item/clothing/head/roguetown/armingcap/dwarf @@ -26,14 +44,7 @@ beltr = /obj/item/rogueweapon/hammer if(prob(50)) shoes = /obj/item/clothing/shoes/roguetown/boots/leather - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/crafting, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sewing, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 1, TRUE) - H.change_stat("strength", 1) - H.change_stat("endurance", 1) + + H.mind.assign_experiences(/datum/advclass/dbomb::given_skills, TRUE, "skills") + H.mind.assign_experiences(/datum/advclass/dbomb::stat_changes, TRUE, "stats") + diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/dwarfranger.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/dwarfranger.dm index e2d9fc26c2..4d5c0a65c9 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/dwarfranger.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/dwarfranger.dm @@ -8,6 +8,24 @@ outfit = /datum/outfit/job/roguetown/adventurer/dranger traits_applied = list(RTRAIT_MEDIUMARMOR) + given_skills = list( + /datum/skill/combat/axesmaces = 2, + /datum/skill/combat/unarmed = 2, + /datum/skill/craft/crafting = 2, + /datum/skill/misc/swimming = 1, + /datum/skill/misc/climbing = 3, + /datum/skill/combat/crossbows = 3, + /datum/skill/craft/tanning = 2, + /datum/skill/misc/riding = 3, + /datum/skill/misc/sewing = 3, + /datum/skill/misc/medicine = 2 + ) + + stat_changes = list( + "perception" = 3 + ) + + /datum/outfit/job/roguetown/adventurer/dranger/pre_equip(mob/living/carbon/human/H) ..() head = /obj/item/clothing/head/roguetown/roguehood @@ -28,14 +46,6 @@ if(prob(23)) shoes = /obj/item/clothing/shoes/roguetown/boots/leather cloak = /obj/item/clothing/cloak/raincloak/brown - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/crafting, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/tanning, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sewing, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 2, TRUE) - H.change_stat("perception", 3) + H.mind.assign_experiences(/datum/advclass/dranger::given_skills, TRUE, "skills") + H.mind.assign_experiences(/datum/advclass/dranger::stat_changes, TRUE, "stats") + diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/mage.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/mage.dm index eefac283cd..286634031c 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/mage.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/mage.dm @@ -13,6 +13,29 @@ "Aasimar" ) outfit = /datum/outfit/job/roguetown/adventurer/mage + given_skills = list( + /datum/skill/combat/polearms = 1, + /datum/skill/combat/bows = 1, + /datum/skill/combat/wrestling = list(0, 1, 2), + /datum/skill/combat/unarmed = list(0, 1, 2), + /datum/skill/misc/swimming = 1, + /datum/skill/misc/climbing = list(0, 1), + /datum/skill/misc/athletics = 1, + /datum/skill/combat/swords = list(0, 1), + /datum/skill/combat/knives = list(0, 1, 2), + /datum/skill/craft/crafting = list(0, 1), + /datum/skill/misc/medicine = list(0, 1), + /datum/skill/misc/riding = 1, + /datum/skill/misc/reading = 4, + /datum/skill/magic/arcane = 3 + ) + + stat_changes = list( + "strength" = -1, + "intelligence" = 3, + "constitution" = 1, + "endurance" = -1 + ) /datum/outfit/job/roguetown/adventurer/mage allowed_patrons = list(/datum/patron/divine/noc) @@ -31,30 +54,14 @@ r_hand = /obj/item/rogueweapon/woodstaff if(H.mind) to_chat(H, "Magic is often times refered to as an art. At times it is treated as a primordial beast, chaos incarnate. To more learned men it is a precise science, to be studied and examined. In the end, magic is all three of the above. It is Art, Chaos, and Science: a blessing, a curse, and progress. It all depends on who calls upon it, and for what purpose.") - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, pick(0,1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, pick(0,1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, pick(0,1), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, pick(0,1), TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, pick(0,1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/crafting, pick(0,1), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, pick(0,1), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/magic/arcane, 3, TRUE) + H.mind.assign_experiences(/datum/advclass/mage::given_skills, TRUE, "skills") + H.mind.assign_experiences(/datum/advclass/mage::stat_changes, TRUE, "stats") if(H.age == AGE_OLD) head = /obj/item/clothing/head/roguetown/wizhat/gen armor = /obj/item/clothing/suit/roguetown/shirt/robe - H.change_stat("intelligence", 4) + H.change_stat("intelligence", 1) H.mind.adjust_skillrank(/datum/skill/magic/arcane, 2, TRUE) - H.change_stat("strength", -2) - H.change_stat("strength", -1) - H.change_stat("intelligence", 3) - H.change_stat("constitution", 1) - H.change_stat("endurance", -1) + H.change_stat("strength", -1) H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/fireball) H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/lightningbolt) H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/fetch) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/monk.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/monk.dm index 25669399b5..07e3766d4d 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/monk.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/monk.dm @@ -20,6 +20,30 @@ ispilgrim = FALSE vampcompat = FALSE + given_skills = list( + /datum/skill/combat/swords = list(0, 1), + /datum/skill/misc/athletics = 3, + /datum/skill/combat/bows = list(0, 1), + /datum/skill/combat/wrestling = 4, + /datum/skill/combat/unarmed = 5, + /datum/skill/combat/knives = 2, + /datum/skill/combat/polearms = list(1, 2), + /datum/skill/misc/swimming = 2, + /datum/skill/misc/climbing = 3, + /datum/skill/misc/reading = 2, + /datum/skill/misc/sneaking = list(1, 2), + /datum/skill/craft/cooking = 1, + /datum/skill/misc/medicine = 2 + ) + + stat_changes = list( + "strength" = 3, + "constitution" = 1, + "speed" = 2, + "perception" = -1 + ) + + /datum/outfit/job/roguetown/adventurer/monk/pre_equip(mob/living/carbon/human/H) ..() head = /obj/item/clothing/head/roguetown/roguehood @@ -33,21 +57,8 @@ r_hand = /obj/item/rogueweapon/woodstaff if(H.mind) to_chat(src, "Monks are pilgrims of powerful belief who empart the teachings of their Temple or God by their interactions with the people of the world. A good monk would seek to help travellers on the road, feed the hungry and teach the weak to become strong. A bad one however...") - H.mind.adjust_skillrank(/datum/skill/combat/swords, pick(0,1), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, pick(0,1), TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 5, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, pick(1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sneaking, pick(1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 2, TRUE) - H.change_stat("strength", 3) - H.change_stat("constitution", 1) - H.change_stat("speed", 2) - H.change_stat("perception", -1) + H.mind.assign_experiences(/datum/advclass/monk::given_skills, TRUE, "skills") + H.mind.assign_experiences(/datum/advclass/monk::stat_changes, TRUE, "stats") + ADD_TRAIT(H, RTRAIT_DODGEEXPERT, TRAIT_GENERIC) + diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/ranger.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/ranger.dm index 6ff2e9887e..db33b7d751 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/ranger.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/ranger.dm @@ -13,14 +13,78 @@ "Aasimar" ) outfit = /datum/outfit/job/roguetown/adventurer/ranger + traits_applied = list(RTRAIT_MEDIUMARMOR) + + given_skills = list( + "ranger" = list( + /datum/skill/combat/swords = 2, + /datum/skill/combat/polearms = 1, + /datum/skill/combat/axesmaces = 2, + /datum/skill/combat/crossbows = 3, + /datum/skill/misc/athletics = 3, + /datum/skill/combat/bows = list(4, 5, 5, 6), + /datum/skill/combat/wrestling = 2, + /datum/skill/combat/unarmed = 2, + /datum/skill/combat/knives = 2, + /datum/skill/misc/swimming = 4, + /datum/skill/misc/climbing = 4, + /datum/skill/craft/crafting = 2, + /datum/skill/misc/reading = 1, + /datum/skill/misc/sneaking = 3, + /datum/skill/craft/tanning = 1, + /datum/skill/labor/fishing = 1, + /datum/skill/misc/sewing = 1, + /datum/skill/labor/butchering = 1, + /datum/skill/craft/traps = 1, + /datum/skill/misc/medicine = 2, + /datum/skill/craft/cooking = 1, + /datum/skill/misc/riding = list(1, 2) + ), + "gloom stalker" = list( + /datum/skill/combat/swords = 3, + /datum/skill/combat/polearms = 2, + /datum/skill/combat/axesmaces = 3, + /datum/skill/combat/crossbows = 2, + /datum/skill/misc/athletics = 3, + /datum/skill/combat/bows = 4, + /datum/skill/combat/wrestling = 2, + /datum/skill/combat/unarmed = 2, + /datum/skill/combat/knives = 3, + /datum/skill/misc/swimming = 3, + /datum/skill/misc/climbing = 4, + /datum/skill/craft/crafting = 1, + /datum/skill/misc/reading = 2, + /datum/skill/misc/sneaking = 4, + /datum/skill/craft/traps = 1, + /datum/skill/misc/medicine = 1, + /datum/skill/craft/cooking = 1, + /datum/skill/misc/riding = list(1, 2) + ) + ) + + stat_changes = list( + "ranger" = list( + "perception" = 4, + "endurance" = 2, + "speed" = 2 + ), + "gloom stalker" = list( + "perception" = 2, + "endurance" = 1, + "speed" = 3 + ) + ) + traits_applied = list(RTRAIT_MEDIUMARMOR, RTRAIT_DODGEEXPERT) + /datum/outfit/job/roguetown/adventurer/ranger/pre_equip(mob/living/carbon/human/H) ..() H.adjust_blindness(-3) var/classes = list("Ranger","Gloom Stalker",) // Ranger Knight is the unique subclass. Gives you steel breastplate and a sword. var/classchoice = input("Choose your archetypes", "Available archetypes") as anything in classes - + H.mind.assign_experiences(/datum/advclass/ranger::given_skills, TRUE, "skills", lowertext(classchoice)) + H.mind.assign_experiences(/datum/advclass/ranger::stat_changes, TRUE, "stats", lowertext(classchoice)) switch(classchoice) if("Ranger") @@ -40,31 +104,7 @@ beltr = /obj/item/flashlight/flare/torch/lantern backpack_contents = list(/obj/item/bait = 1, /obj/item/rogueweapon/huntingknife = 1) beltl = /obj/item/quiver/arrows - H.mind.adjust_skillrank(/datum/skill/combat/swords, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, pick(4,5,5,6), TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/crafting, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/tanning, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/labor/fishing, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sewing, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/labor/butchering, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/traps, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, rand(1,2), TRUE) - H.change_stat("perception", 4) - H.change_stat("endurance", 2) - H.change_stat("speed", 2) + if("Gloom Stalker") H.set_blindness(0) to_chat(H, "Rangers are masters of nature, often hired as pathfinders, bodyguards and mercenaries in areas of wilderness untraversable to common soldiery.") @@ -81,27 +121,6 @@ beltr = /obj/item/flashlight/flare/torch/lantern backpack_contents = list(/obj/item/rogueweapon/huntingknife/idagger/steel/special = 1) beltl = /obj/item/quiver/arrows - H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/crafting, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/traps, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/cooking, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, rand(1,2), TRUE) - H.change_stat("perception", 2) - H.change_stat("endurance", 1) - H.change_stat("speed", 3) if(H.gender == MALE) pants = /obj/item/clothing/under/roguetown/trou/leather diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelt.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelt.dm index b00a7bdfb2..2799853d09 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelt.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelt.dm @@ -10,6 +10,34 @@ pickprob = 100 traits_applied = list(RTRAIT_NOBLE, RTRAIT_NOSEGRAB, RTRAIT_HEAVYARMOR) + given_skills = list( + /datum/skill/combat/crossbows = 3, \ + /datum/skill/combat/polearms = 2, \ + /datum/skill/combat/axesmaces = 3, \ + /datum/skill/combat/bows = 3, \ + /datum/skill/combat/wrestling = 2, \ + /datum/skill/combat/unarmed = 2, \ + /datum/skill/misc/swimming = 1, \ + /datum/skill/misc/climbing = 2, \ + /datum/skill/misc/athletics = 3, \ + /datum/skill/combat/swords = 4, \ + /datum/skill/combat/knives = 2, \ + /datum/skill/misc/reading = 4, \ + /datum/skill/misc/sneaking = 2, \ + /datum/skill/misc/medicine = 1, \ + /datum/skill/misc/riding = 3 + + ) + + stat_changes = list( + "strength" = 2, \ + "intelligence" = 2, \ + "endurance" = 2, \ + "speed" = 1, \ + "perception" = 2, \ + "fortune" = 5 + ) + /datum/outfit/job/roguetown/adventurer/heartfeltlord/pre_equip(mob/living/carbon/human/H) ..() shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt @@ -25,29 +53,10 @@ backl = /obj/item/storage/backpack/rogue/satchel id = /obj/item/scomstone if(H.mind) - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE) - H.change_stat("strength", 2) - H.change_stat("intelligence", 2) - H.change_stat("endurance", 2) - H.change_stat("speed", 1) - H.change_stat("perception", 2) - H.change_stat("fortune", 5) + H.mind.assign_experiences(/datum/advclass/heartfeltlord::given_skills, TRUE, "skills") + H.mind.assign_experiences(/datum/advclass/heartfeltlord::stat_changes, TRUE, "skills") ADD_TRAIT(H, RTRAIT_NOBLE, TRAIT_GENERIC) ADD_TRAIT(H, RTRAIT_NOSEGRAB, TRAIT_GENERIC) ADD_TRAIT(H, RTRAIT_HEAVYARMOR, TRAIT_GENERIC) - ADD_TRAIT(H, RTRAIT_MEDIUMARMOR, TRAIT_GENERIC) \ No newline at end of file + ADD_TRAIT(H, RTRAIT_MEDIUMARMOR, TRAIT_GENERIC) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelthand.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelthand.dm index c3e4bf75b7..55c37236dd 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelthand.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/heartfelthand.dm @@ -9,6 +9,26 @@ pickprob = 100 traits_applied = list(RTRAIT_HEAVYARMOR, RTRAIT_SEEPRICES) + given_skills = list( + /datum/skill/combat/axesmaces = 2, \ + /datum/skill/misc/medicine = 4, \ + /datum/skill/craft/cooking = 4, \ + /datum/skill/combat/wrestling = 3, \ + /datum/skill/combat/unarmed = 3, \ + /datum/skill/combat/swords = 3, \ + /datum/skill/misc/swimming = 3, \ + /datum/skill/misc/climbing = 3, \ + /datum/skill/misc/athletics = 3, \ + /datum/skill/misc/reading = 4, \ + /datum/skill/misc/riding = 2 + ) + + stat_changes = list( + "strength" = 2, \ + "perception" = 3, \ + "intelligence" = 3 + ) + /datum/outfit/job/roguetown/adventurer/heartfelthand/pre_equip(mob/living/carbon/human/H) ..() shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt @@ -24,17 +44,6 @@ mask = /obj/item/clothing/mask/rogue/spectacles/golden id = /obj/item/scomstone if(H.mind) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/cooking, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, 2, TRUE) - H.change_stat("strength", 2) - H.change_stat("perception", 3) - H.change_stat("intelligence", 3) + H.mind.assign_experiences(/datum/advclass/heartfelthand::given_skills, TRUE, "skills") + H.mind.assign_experiences(/datum/advclass/heartfelthand::stat_changes, TRUE, "stats") + diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/necromancer.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/necromancer.dm index dcc72ce253..9584aafd8c 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/necromancer.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/necromancer.dm @@ -13,6 +13,18 @@ outfit = /datum/outfit/job/roguetown/adventurer/necromancer pickprob = 30 traits_applied = list(TRAIT_ZOMBIE_IMMUNE) + given_skills = list( + /datum/skill/misc/reading = 4, \ + /datum/skill/magic/arcane = 5 + ) + stat_changes = list( + "strength" = -1, \ + "intelligence" = 3, \ + "constitution" = -2, \ + "endurance" = -1, \ + "speed" = -1 + ) + /datum/outfit/job/roguetown/adventurer/necromancer allowed_patrons = list(/datum/patron/inhumen/zizo) @@ -29,13 +41,9 @@ beltr = /obj/item/reagent_containers/glass/bottle/rogue/manapot beltl = /obj/item/rogueweapon/huntingknife r_hand = /obj/item/rogueweapon/woodstaff - H.mind.adjust_skillrank(/datum/skill/misc/reading, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/magic/arcane, 5, TRUE) - H.change_stat("strength", -1) - H.change_stat("intelligence", 3) - H.change_stat("constitution", -2) - H.change_stat("endurance", -1) - H.change_stat("speed", -1) + H.mind.assign_experiences(/datum/advclass/necromancer::given_skills, TRUE, "skills") + H.mind.assign_experiences(/datum/advclass/necromancer::stat_changes, TRUE, "stats") + H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/bonechill) H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/raise_undead) H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/sickness) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/sentinel.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/sentinel.dm index 938e12742c..31b3b8e91e 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/sentinel.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/sentinel.dm @@ -11,23 +11,31 @@ outfit = /datum/outfit/job/roguetown/adventurer/sentinal maxchosen = 5 pickprob = 50 + traits_applied = list(RTRAIT_MEDIUMARMOR) + given_skills = list( + /datum/skill/combat/knives = 3, \ + /datum/skill/combat/swords = 3, \ + /datum/skill/combat/crossbows = 3, \ + /datum/skill/combat/bows = 5, \ + /datum/skill/craft/tanning = 3, \ + /datum/skill/combat/unarmed = 1, \ + /datum/skill/craft/crafting = 1, \ + /datum/skill/misc/swimming = 2, \ + /datum/skill/misc/climbing = 2, \ + /datum/skill/misc/riding = 3, \ + /datum/skill/misc/sewing = 3, \ + /datum/skill/misc/medicine = 4 + ) + stat_changes = list( + "perception" = 5, \ + "endurance" = 2 +) traits_applied = list(RTRAIT_MEDIUMARMOR, RTRAIT_DODGEEXPERT) /datum/outfit/job/roguetown/adventurer/sentinal/pre_equip(mob/living/carbon/human/H) ..() shoes = /obj/item/clothing/shoes/roguetown/boots/leather - H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 5, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/tanning, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/crafting, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sewing, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 4, TRUE) + if(H.gender == MALE) pants = /obj/item/clothing/under/roguetown/trou/leather shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt @@ -44,6 +52,7 @@ beltr = /obj/item/rogueweapon/sword/sabre/elf backpack_contents = list(/obj/item/bait = 1, /obj/item/rogueweapon/huntingknife/elvish = 1, /obj/item/flashlight/flare/torch/lantern = 1) beltl = /obj/item/quiver/arrows - H.change_stat("perception", 5) - H.change_stat("endurance", 2) + H.mind.assign_experiences(/datum/advclass/sentinel::given_skills, TRUE, "skills") + H.mind.assign_experiences(/datum/advclass/sentinel::stat_changes, TRUE, "stats") + H.ambushable = FALSE diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/treasurehunter.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/treasurehunter.dm index 1d03000cf7..683d8a689a 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/treasurehunter.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/treasurehunter.dm @@ -18,6 +18,22 @@ pickprob = 11 traits_applied = list(RTRAIT_NOSTINK) + given_skills = list( + /datum/skill/combat/axesmaces = 1, + /datum/skill/combat/wrestling = 1, + /datum/skill/combat/knives = 2, + /datum/skill/combat/unarmed = 1, + /datum/skill/craft/crafting = 1, + /datum/skill/misc/reading = 2, + /datum/skill/misc/swimming = 2, + /datum/skill/misc/climbing = 4 +) + stat_changes = list( + "strength" = 1, + "perception" = 1, + "intelligence" = -2 +) + /datum/outfit/job/roguetown/adventurer/gravedigger/pre_equip(mob/living/carbon/human/H) ..() pants = /obj/item/clothing/under/roguetown/tights/black @@ -35,14 +51,6 @@ backr = /obj/item/rogueweapon/shovel head = /obj/item/clothing/head/roguetown/puritan if(H.mind) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/crafting, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 4, TRUE) - H.change_stat("strength", 1) - H.change_stat("perception", 1) - H.change_stat("intelligence", -2) + H.mind.assign_experiences(/datum/advclass/gravedigger::given_skills, TRUE, "skills") + H.mind.assign_experiences(/datum/advclass/gravedigger::stat_changes, TRUE, "stats") + diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/witchhunter.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/witchhunter.dm index 403a12344b..e2d2fc0246 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/witchhunter.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rare/witchhunter.dm @@ -11,6 +11,38 @@ pickprob = 11 traits_applied = list(RTRAIT_MEDIUMARMOR) + given_skills = list( + /datum/skill/combat/swords = list(4,5), + /datum/skill/combat/axesmaces = 3, + /datum/skill/combat/crossbows = 3, + /datum/skill/combat/bows = 2, + /datum/skill/misc/athletics = 3, + /datum/skill/combat/wrestling = 3, + /datum/skill/combat/unarmed = 3, + /datum/skill/combat/knives = 3, + /datum/skill/combat/polearms = 3, + /datum/skill/misc/swimming = 2, + /datum/skill/misc/climbing = 2, + /datum/skill/misc/reading = 2, + /datum/skill/misc/sewing = 2, + /datum/skill/labor/butchering = 2, + /datum/skill/craft/traps = 2, + /datum/skill/misc/medicine = 2, + /datum/skill/misc/sneaking = 2, + /datum/skill/combat/whipsflails = list(4,5) +) + + stat_changes = list( + "intelligence" = 1, + "strength" = 1, + "endurance" = 1, + "speed" = 1, + "constitution" = 1, + "perception" = 2 +) + + + /datum/outfit/job/roguetown/adventurer/puritan allowed_patrons = list(/datum/patron/old_god) @@ -30,30 +62,9 @@ backpack_contents = list(/obj/item/rogueweapon/huntingknife = 1) if(H.mind) - H.mind.adjust_skillrank(/datum/skill/combat/swords, rand(4,5), TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sewing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/labor/butchering, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/traps, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, rand(4,5), TRUE) - H.change_stat("intelligence", 1) - H.change_stat("strength", 1) - H.change_stat("endurance", 1) - H.change_stat("speed", 1) - H.change_stat("constitution", 1) - H.change_stat("perception", 2) + H.mind.assign_experiences(/datum/advclass/puritan::given_skills, TRUE, "skills") + H.mind.assign_experiences(/datum/advclass/puritan::stat_changes, TRUE, "stats") + H.verbs |= /mob/living/carbon/human/proc/torture_victim H.verbs |= /mob/living/carbon/human/proc/faith_test diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rogue.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rogue.dm index 7f63d3fe42..21dadf40b9 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rogue.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/rogue.dm @@ -17,6 +17,35 @@ outfit = /datum/outfit/job/roguetown/adventurer/rogue traits_applied = list(RTRAIT_MEDIUMARMOR, RTRAIT_DODGEEXPERT) + given_skills = list( + /datum/skill/combat/swords = 3, \ + /datum/skill/combat/axesmaces = 2, \ + /datum/skill/combat/crossbows = list(2,3,3), \ + /datum/skill/misc/athletics = 4, \ + /datum/skill/combat/bows = 3, \ + /datum/skill/combat/wrestling = 3, \ + /datum/skill/combat/unarmed = 3, \ + /datum/skill/combat/knives = 4, \ + /datum/skill/combat/polearms = 1, \ + /datum/skill/misc/swimming = 3, \ + /datum/skill/misc/climbing = list(5,6), \ + /datum/skill/craft/crafting = 1, \ + /datum/skill/misc/reading = list(0,1,1,1), \ + /datum/skill/craft/traps = 2, \ + /datum/skill/misc/medicine = list(0,1), \ + /datum/skill/misc/sneaking = 5, \ + /datum/skill/misc/stealing = 5, \ + /datum/skill/misc/riding = list(1,2), \ + /datum/skill/craft/engineering = 1 + ) + + stat_changes = list( + "strength" = -1, + "perception" = 2, + "speed" = list(3,4), + "intelligence" =2, + ) + /datum/outfit/job/roguetown/adventurer/rogue allowed_patrons = list(/datum/patron/divine/xylix, /datum/patron/inhumen/matthios) @@ -24,25 +53,7 @@ ..() shoes = /obj/item/clothing/shoes/roguetown/boots neck = /obj/item/storage/belt/rogue/pouch/coins/poor - H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, pick(2,3,3), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, pick(5,6), TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/crafting, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, pick(0,1,1), TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/traps, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, pick(0,1), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 5, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/stealing, 5, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, pick(1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/engineering, 1, TRUE) + H.mind.assign_experiences(/datum/advclass/rogue::given_skills, TRUE, "skills") pants = /obj/item/clothing/under/roguetown/trou/leather shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt gloves = /obj/item/clothing/gloves/roguetown/leather @@ -56,8 +67,7 @@ beltl = /obj/item/rogueweapon/huntingknife/idagger/steel ADD_TRAIT(H, RTRAIT_MEDIUMARMOR, TRAIT_GENERIC) ADD_TRAIT(H, TRAIT_STEELHEARTED, TRAIT_GENERIC) + + H.mind.assign_experiences(/datum/advclass/rogue::stat_changes, TRUE, "stats") + ADD_TRAIT(H, RTRAIT_DODGEEXPERT, TRAIT_GENERIC) - H.change_stat("strength", -1) - H.change_stat("perception", 2) - H.change_stat("speed", pick(3,4)) - H.change_stat("intelligence", 2) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/sorceress.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/sorceress.dm index bac5b380e9..34088d125f 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/sorceress.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/sorceress.dm @@ -15,9 +15,24 @@ outfit = /datum/outfit/job/roguetown/adventurer/sorceress allowed_ages = list(AGE_MIDDLEAGED, AGE_OLD) + given_skills = list( + /datum/skill/misc/reading = 4, + /datum/skill/magic/arcane = list(1, 2), + /datum/skill/misc/medicine = 1 + ) + + stat_changes = list( + "strength" = -1, + "intelligence" = 3, + "constitution" = -1, + "endurance" = -1, + "speed" = -2 + ) + /datum/outfit/job/roguetown/adventurer/sorceress allowed_patrons = list(/datum/patron/divine/noc) + /datum/outfit/job/roguetown/adventurer/sorceress/pre_equip(mob/living/carbon/human/H) ..() shoes = /obj/item/clothing/shoes/roguetown/simpleshoes @@ -30,16 +45,11 @@ neck = /obj/item/storage/belt/rogue/pouch/coins/poor r_hand = /obj/item/rogueweapon/woodstaff if(H.mind) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/magic/arcane, pick(1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 1, TRUE) + H.mind.assign_experiences(/datum/advclass/sorceress::given_skills, TRUE, "skills") + H.mind.assign_experiences(/datum/advclass/sorceress::stat_changes, TRUE, "stats") if(H.age == AGE_OLD) H.mind.adjust_skillrank(/datum/skill/magic/arcane, pick(1,2), TRUE) - H.change_stat("strength", -1) - H.change_stat("intelligence", 3) - H.change_stat("constitution", -1) - H.change_stat("endurance", -1) - H.change_stat("speed", -2) + H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/fireball) H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/lightningbolt) H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/projectile/fetch) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/warrior.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/warrior.dm index 8cc5d11ab1..d5488b6b3f 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/warrior.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/warrior.dm @@ -18,35 +18,68 @@ outfit = /datum/outfit/job/roguetown/adventurer/sfighter traits_applied = list(RTRAIT_HEAVYARMOR) + + given_skills = list( + "warrior" =list( + /datum/skill/misc/sneaking = list(1,1,2), \ + /datum/skill/combat/crossbows = list(1,2), \ + /datum/skill/combat/polearms = 2, \ + /datum/skill/combat/axesmaces = 2, \ + /datum/skill/combat/bows = list(1,2), \ + /datum/skill/combat/wrestling = 2, \ + /datum/skill/combat/unarmed = 2, \ + /datum/skill/misc/athletics = 4, \ + /datum/skill/combat/swords = 3, \ + /datum/skill/misc/swimming = 1, \ + /datum/skill/misc/climbing = 2, \ + /datum/skill/misc/riding = list(2,3), \ + /datum/skill/misc/medicine = 1, \ + /datum/skill/combat/knives = list(1,3) + ), + "monster hunter" = list( + /datum/skill/combat/crossbows = list(1, 2), + /datum/skill/combat/bows = list(1, 2), + /datum/skill/combat/wrestling = 2, + /datum/skill/combat/unarmed = 2, + /datum/skill/misc/athletics = 4, + /datum/skill/combat/knives = list(1, 2, 3), + /datum/skill/misc/sneaking = list(1, 1, 2), + /datum/skill/misc/swimming = 1, + /datum/skill/misc/climbing = 2, + /datum/skill/misc/riding = list(2, 3), + /datum/skill/misc/medicine = 1 + ) + ) + + stat_changes = list( + "warrior" =list( + "strength" = 2, + "endurance" = 2, + "constitution" = 2, + "speed" = 1 + ), + "monster hunter"= list( + "strength" = 2, + "endurance" = 1, + "constitution" = 2, + "intelligence" = 1, + "speed" = 1 + ) + + ) + /datum/outfit/job/roguetown/adventurer/sfighter/pre_equip(mob/living/carbon/human/H) ..() H.adjust_blindness(-3) - var/classes = list("Warrior","Monster Hunter",) // To Do - knight errant unique archetype(5 percent chance) + var/classes = list("Warrior","Monster Hunter") // To Do - knight errant unique archetype(5 percent chance) var/classchoice = input("Choose your archetypes", "Available archetypes") as anything in classes - + H.mind.assign_experiences(/datum/advclass/sfighter::given_skills, TRUE, "skills", lowertext(classchoice)) + H.mind.assign_experiences(/datum/advclass/sfighter::stat_changes, TRUE, "stats", lowertext(classchoice)) switch(classchoice) if("Warrior") H.set_blindness(0) to_chat(H, "Warriors are well rounded fighters, experienced often in many theaters of warfare and battle they are capable of rising to any challenge that might greet them on the path.") - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, rand(1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/polearms, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, rand(1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, rand(1,3), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sneaking, pick(1,1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, pick(2,3), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 1, TRUE) - H.change_stat("strength", 2) - H.change_stat("endurance", 2) // 7 stat points total as a low-skill martial role without magic. Compared to Pally with 5 points. - H.change_stat("constitution", 2) - H.change_stat("speed", 1) shoes = /obj/item/clothing/shoes/roguetown/boots gloves = /obj/item/clothing/gloves/roguetown/leather belt = /obj/item/storage/belt/rogue/leather @@ -76,22 +109,6 @@ if("Monster Hunter") H.set_blindness(0) to_chat(H, "Monsters Hunters are typically contracted champions of the common folk dedicated to the slaying of both lesser vermin and greater beasts of the wilds.") - H.mind.adjust_skillrank(/datum/skill/combat/crossbows, rand(1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/bows, rand(1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/athletics, 4, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/knives, rand(1,3), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/sneaking, pick(1,1,2), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/swimming, 1, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/riding, pick(2,3), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/medicine, 1, TRUE) - H.change_stat("strength", 2) - H.change_stat("endurance", 1) // Weaker endurance compared to a traditional warrior/soldier. Smarter due to study of rare magical beasts. - H.change_stat("constitution", 2) - H.change_stat("intelligence", 1) - H.change_stat("speed", 1) shoes = /obj/item/clothing/shoes/roguetown/boots gloves = /obj/item/clothing/gloves/roguetown/leather belt = /obj/item/storage/belt/rogue/leather diff --git a/code/modules/jobs/job_types/roguetown/serfs/blacksmith.dm b/code/modules/jobs/job_types/roguetown/serfs/blacksmith.dm index 3178cad083..b42c80cd1a 100644 --- a/code/modules/jobs/job_types/roguetown/serfs/blacksmith.dm +++ b/code/modules/jobs/job_types/roguetown/serfs/blacksmith.dm @@ -24,6 +24,15 @@ give_bank_account = 11 min_pq = 1 max_pq = null + skills = list( + /datum/skill/combat/axesmaces = 3, \ + /datum/skill/combat/unarmed = 2, \ + /datum/skill/craft/crafting = 3, \ + /datum/skill/combat/wrestling = 3, \ + /datum/skill/craft/blacksmithing = list(3,4), \ + /datum/skill/craft/armorsmithing = list(3,4), \ + /datum/skill/misc/reading = 2 + ) /datum/outfit/job/roguetown/armorsmith/pre_equip(mob/living/carbon/human/H) ..() @@ -31,13 +40,16 @@ if(prob(50)) head = /obj/item/clothing/head/roguetown/hatblu if(H.mind) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/crafting, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/blacksmithing, pick(4), TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/armorsmithing, pick(4), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) + + // H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) + // H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) + // H.mind.adjust_skillrank(/datum/skill/craft/crafting, 3, TRUE) + // H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) + // H.mind.adjust_skillrank(/datum/skill/craft/blacksmithing, pick(3,4), TRUE) + // H.mind.adjust_skillrank(/datum/skill/craft/armorsmithing, pick(3,4), TRUE) + // H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) + // assuming after_spawn() calls here + if(H.age == AGE_OLD) H.mind.adjust_skillrank(/datum/skill/craft/blacksmithing, pick(1), TRUE) H.mind.adjust_skillrank(/datum/skill/craft/armorsmithing, pick(1), TRUE) @@ -94,19 +106,30 @@ min_pq = 1 max_pq = null + skills = list( + /datum/skill/combat/axesmaces = 3, \ + /datum/skill/combat/unarmed = 2, \ + /datum/skill/craft/crafting = 3, \ + /datum/skill/combat/wrestling = 3, \ + /datum/skill/craft/blacksmithing = list(3,4), \ + /datum/skill/craft/armorsmithing = list(3,4), \ + /datum/skill/misc/reading = 2 + ) /datum/outfit/job/roguetown/weaponsmith/pre_equip(mob/living/carbon/human/H) ..() head = /obj/item/clothing/head/roguetown/hatfur if(prob(50)) head = /obj/item/clothing/head/roguetown/hatblu if(H.mind) - H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/crafting, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/blacksmithing, pick(4), TRUE) - H.mind.adjust_skillrank(/datum/skill/craft/weaponsmithing, pick(4), TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) + + // H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE) + // H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE) + // H.mind.adjust_skillrank(/datum/skill/craft/crafting, 3, TRUE) + // H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE) + // H.mind.adjust_skillrank(/datum/skill/craft/blacksmithing, pick(3,4), TRUE) + // H.mind.adjust_skillrank(/datum/skill/craft/weaponsmithing, pick(3,4), TRUE) + // H.mind.adjust_skillrank(/datum/skill/misc/reading, 2, TRUE) + if(H.age == AGE_OLD) H.mind.adjust_skillrank(/datum/skill/craft/blacksmithing, pick(1), TRUE) H.mind.adjust_skillrank(/datum/skill/craft/weaponsmithing, pick(1), TRUE) diff --git a/code/modules/mob/living/stats.dm b/code/modules/mob/living/stats.dm index 7d09533190..e120a0fd0c 100644 --- a/code/modules/mob/living/stats.dm +++ b/code/modules/mob/living/stats.dm @@ -1,4 +1,10 @@ + +/mob/living/proc/get_stat_var(stat) + var/static/list/STATTOVAR= list("strength" = "STR", "perception" = "PER", "intelligence" = "INT", \ + "constitution" = "CON", "endurance"= "END", "speed" = "SPD", "fortune" = "LUC") + return STATTOVAR[stat] + /mob/living var/STASTR = 10 var/STAPER = 10 @@ -13,7 +19,7 @@ var/BUFINT = 0 var/BUFCON = 0 var/BUFEND = 0 - var/BUFSPE = 0 + var/BUFSPD = 0 var/BUFLUC = 0 var/statbuf = FALSE var/list/statindex = list() @@ -92,166 +98,204 @@ H.eye_color = "ff0000" H.voice_color = "ff0000" + /mob/living/proc/change_stat(stat, amt, index) + // i have the tism if(!stat) return if(amt == 0 && index) if(statindex[index]) - change_stat(statindex[index]["stat"], -1*statindex[index]["amt"]) - statindex[index] = null + change_stat(statindex[index]["stat"], -1*statindex[index]["amt"]) // reverted back to what was before + stat[index] = null // leaving this here until i figure out what it actually does return - if(!amt) return if(index) - if(statindex[index]) - return //we cannot make a new index - else - statindex[index] = list("stat" = stat, "amt" = amt) -// statindex[index]["stat"] = stat -// statindex[index]["amt"] = amt + if(statindex[index]) return + statindex[index] = list("stat" = stat, "amt" = amt) var/newamt = 0 - switch(stat) - if("strength") - newamt = STASTR + amt - if(BUFSTR < 0) - BUFSTR = BUFSTR + amt - if(BUFSTR > 0) - newamt = STASTR + BUFSTR - BUFSTR = 0 - if(BUFSTR > 0) - BUFSTR = BUFSTR + amt - if(BUFSTR < 0) - newamt = STASTR + BUFSTR - BUFSTR = 0 - while(newamt < 1) - newamt++ - BUFSTR-- - while(newamt > 20) - newamt-- - BUFSTR++ - STASTR = newamt + var/normal_stat = vars["STA[get_stat_var(stat)]"] + var/buff_stat = vars["BUF[get_stat_var(stat)]"] + newamt = normal_stat + amt + if(buff_stat != 0) // if it is above or below 0 + buff_stat += amt + if(buff_stat != 0) // im gonna kms + newamt = normal_stat + buff_stat + buff_stat = 0 + while(newamt < 1) + newamt++ + buff_stat-- + while(newamt > 20) + newamt-- + buff_stat++ + vars["BUF[get_stat_var(stat)]"] = buff_stat + vars["STA[get_stat_var(stat)]"] = newamt + update_fov_angles() + + + + + + +// /mob/living/proc/change_stat(stat, amt, index) +// if(!stat) +// return +// if(amt == 0 && index) +// if(statindex[index]) +// change_stat(statindex[index]["stat"], -1*statindex[index]["amt"]) // there is not a single instance where change_stat(stat) is not the string stat +// statindex[index] = null +// return +// if(!amt) +// return +// if(index) +// if(statindex[index]) +// return //we cannot make a new index +// else +// statindex[index] = list("stat" = stat, "amt" = amt) +// // statindex[index]["stat"] = stat +// // statindex[index]["amt"] = amt +// var/newamt = 0 +// switch(stat) +// if("strength") +// newamt = STASTR + amt +// if(BUFSTR < 0) +// BUFSTR = BUFSTR + amt +// if(BUFSTR > 0) +// newamt = STASTR + BUFSTR +// BUFSTR = 0 +// if(BUFSTR > 0) +// BUFSTR = BUFSTR + amt +// if(BUFSTR < 0) +// newamt = STASTR + BUFSTR +// BUFSTR = 0 +// while(newamt < 1) +// newamt++ +// BUFSTR-- +// while(newamt > 20) +// newamt-- +// BUFSTR++ +// STASTR = newamt - if("perception") - newamt = STAPER + amt - if(BUFPER < 0) - BUFPER = BUFPER + amt - if(BUFPER > 0) - newamt = STAPER + BUFPER - BUFPER = 0 - if(BUFPER > 0) - BUFPER = BUFPER + amt - if(BUFPER < 0) - newamt = STAPER + BUFPER - BUFPER = 0 - while(newamt < 1) - newamt++ - BUFPER-- - while(newamt > 20) - newamt-- - BUFPER++ - STAPER = newamt +// if("perception") +// newamt = STAPER + amt +// if(BUFPER < 0) +// BUFPER = BUFPER + amt +// if(BUFPER > 0) +// newamt = STAPER + BUFPER +// BUFPER = 0 +// if(BUFPER > 0) +// BUFPER = BUFPER + amt +// if(BUFPER < 0) +// newamt = STAPER + BUFPER +// BUFPER = 0 +// while(newamt < 1) +// newamt++ +// BUFPER-- +// while(newamt > 20) +// newamt-- +// BUFPER++ +// STAPER = newamt - update_fov_angles() +// update_fov_angles() - if("intelligence") - newamt = STAINT + amt - if(BUFINT < 0) - BUFINT = BUFINT + amt - if(BUFINT > 0) - newamt = STAINT + BUFINT - BUFINT = 0 - if(BUFINT > 0) - BUFINT = BUFINT + amt - if(BUFINT < 0) - newamt = STAINT + BUFINT - BUFINT = 0 - while(newamt < 1) - newamt++ - BUFINT-- - while(newamt > 20) - newamt-- - BUFINT++ - STAINT = newamt +// if("intelligence") +// newamt = STAINT + amt +// if(BUFINT < 0) +// BUFINT = BUFINT + amt +// if(BUFINT > 0) +// newamt = STAINT + BUFINT +// BUFINT = 0 +// if(BUFINT > 0) +// BUFINT = BUFINT + amt +// if(BUFINT < 0) +// newamt = STAINT + BUFINT +// BUFINT = 0 +// while(newamt < 1) +// newamt++ +// BUFINT-- +// while(newamt > 20) +// newamt-- +// BUFINT++ +// STAINT = newamt - if("constitution") - newamt = STACON + amt - if(BUFCON < 0) - BUFCON = BUFCON + amt - if(BUFCON > 0) - newamt = STACON + BUFCON - BUFCON = 0 - if(BUFCON > 0) - BUFCON = BUFCON + amt - if(BUFCON < 0) - newamt = STACON + BUFCON - BUFCON = 0 - while(newamt < 1) - newamt++ - BUFCON-- - while(newamt > 20) - newamt-- - BUFCON++ - STACON = newamt +// if("constitution") +// newamt = STACON + amt +// if(BUFCON < 0) +// BUFCON = BUFCON + amt +// if(BUFCON > 0) +// newamt = STACON + BUFCON +// BUFCON = 0 +// if(BUFCON > 0) +// BUFCON = BUFCON + amt +// if(BUFCON < 0) +// newamt = STACON + BUFCON +// BUFCON = 0 +// while(newamt < 1) +// newamt++ +// BUFCON-- +// while(newamt > 20) +// newamt-- +// BUFCON++ +// STACON = newamt - if("endurance") - newamt = STAEND + amt - if(BUFEND < 0) - BUFEND = BUFEND + amt - if(BUFEND > 0) - newamt = STAEND + BUFEND - BUFEND = 0 - if(BUFEND > 0) - BUFEND = BUFEND + amt - if(BUFEND < 0) - newamt = STAEND + BUFEND - BUFEND = 0 - while(newamt < 1) - newamt++ - BUFEND-- - while(newamt > 20) - newamt-- - BUFEND++ - STAEND = newamt +// if("endurance") +// newamt = STAEND + amt +// if(BUFEND < 0) +// BUFEND = BUFEND + amt +// if(BUFEND > 0) +// newamt = STAEND + BUFEND +// BUFEND = 0 +// if(BUFEND > 0) +// BUFEND = BUFEND + amt +// if(BUFEND < 0) +// newamt = STAEND + BUFEND +// BUFEND = 0 +// while(newamt < 1) +// newamt++ +// BUFEND-- +// while(newamt > 20) +// newamt-- +// BUFEND++ +// STAEND = newamt - if("speed") - newamt = STASPD + amt - if(BUFSPE < 0) - BUFSPE = BUFSPE + amt - if(BUFSPE > 0) - newamt = STASPD + BUFSPE - BUFSPE = 0 - if(BUFSPE > 0) - BUFSPE = BUFSPE + amt - if(BUFSPE < 0) - newamt = STASPD + BUFSPE - BUFSPE = 0 - while(newamt < 1) - newamt++ - BUFSPE-- - while(newamt > 20) - newamt-- - BUFSPE++ - STASPD = newamt +// if("speed") +// newamt = STASPD + amt +// if(BUFSPE < 0) +// BUFSPE = BUFSPE + amt +// if(BUFSPE > 0) +// newamt = STASPD + BUFSPE +// BUFSPE = 0 +// if(BUFSPE > 0) +// BUFSPE = BUFSPE + amt +// if(BUFSPE < 0) +// newamt = STASPD + BUFSPE +// BUFSPE = 0 +// while(newamt < 1) +// newamt++ +// BUFSPE-- +// while(newamt > 20) +// newamt-- +// BUFSPE++ +// STASPD = newamt - if("fortune") - newamt = STALUC + amt - if(BUFLUC < 0) - BUFLUC = BUFLUC + amt - if(BUFLUC > 0) - newamt = STALUC + BUFLUC - BUFLUC = 0 - if(BUFLUC > 0) - BUFLUC = BUFLUC + amt - if(BUFLUC < 0) - newamt = STALUC + BUFLUC - BUFLUC = 0 - while(newamt < 1) - newamt++ - BUFLUC-- - while(newamt > 20) - newamt-- - BUFLUC++ - STALUC = newamt +// if("fortune") +// newamt = STALUC + amt +// if(BUFLUC < 0) +// BUFLUC = BUFLUC + amt +// if(BUFLUC > 0) +// newamt = STALUC + BUFLUC +// BUFLUC = 0 +// if(BUFLUC > 0) +// BUFLUC = BUFLUC + amt +// if(BUFLUC < 0) +// newamt = STALUC + BUFLUC +// BUFLUC = 0 +// while(newamt < 1) +// newamt++ +// BUFLUC-- +// while(newamt > 20) +// newamt-- +// BUFLUC++ +// STALUC = newamt /proc/generic_stat_comparison(userstat as num, targetstat as num) var/difference = userstat - targetstat