diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 1292c6112..49e4bc369 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -195,6 +195,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/mailer = null var/mailedto = null + var/picklvl = 0 + var/list/examine_effects = list() ///played when an item that is equipped blocks a hit diff --git a/code/game/objects/items/rogueitems/keyrings.dm b/code/game/objects/items/rogueitems/keyrings.dm index f1f5fac63..278b474e5 100644 --- a/code/game/objects/items/rogueitems/keyrings.dm +++ b/code/game/objects/items/rogueitems/keyrings.dm @@ -4,9 +4,7 @@ name = "keyring" desc = "Will help you organize your keys." icon_state = "keyring0" - icon = 'icons/roguetown/items/keys.dmi' - lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi' + icon = 'icons/roguetown/items/lockpicks.dmi' w_class = WEIGHT_CLASS_TINY dropshrink = 0 throwforce = 0 @@ -124,13 +122,13 @@ else desc = "" +//Keyrings for Jobs /obj/item/keyring/sheriff keys = list(/obj/item/roguekey/sheriff, /obj/item/roguekey/dungeon, /obj/item/roguekey/garrison, /obj/item/roguekey/walls, /obj/item/roguekey/manor, /obj/item/roguekey/graveyard) /obj/item/keyring/bailiff keys = list(/obj/item/roguekey/sheriff, /obj/item/roguekey/dungeon, /obj/item/roguekey/garrison, /obj/item/roguekey/walls, /obj/item/roguekey/manor, /obj/item/roguekey/graveyard) - /obj/item/keyring/councillor keys = list(/obj/item/roguekey/sheriff, /obj/item/roguekey/dungeon, /obj/item/roguekey/garrison, /obj/item/roguekey/walls, /obj/item/roguekey/manor, /obj/item/roguekey/graveyard) @@ -196,3 +194,115 @@ /obj/item/keyring/royal keys = list(/obj/item/roguekey/manor, /obj/item/roguekey/royal) + +//Lockpick Ring +/obj/item/lockpickring + name = "lockpickring" + desc = "A piece of bent wire to store lockpicking tools. Too bulky for fine work." + icon_state = "pickring0" + icon = 'icons/roguetown/items/lockpicks.dmi' + lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi' + w_class = WEIGHT_CLASS_TINY + dropshrink = 0 + throwforce = 0 + var/list/picks = list() + slot_flags = ITEM_SLOT_HIP|ITEM_SLOT_NECK|ITEM_SLOT_MOUTH|ITEM_SLOT_WRISTS + experimental_inhand = FALSE + dropshrink = 0.7 + +/obj/item/lockpickring/Initialize() + . = ..() + if(picks.len) + for(var/X in picks) + addtoring(new X()) + picks -= X + update_icon() + +/obj/item/lockpickring/getonmobprop(tag) + . = ..() + if(tag) + switch(tag) + if("gen") + return list("shrink" = 0.4, +"sx" = -6, +"sy" = -3, +"nx" = 13, +"ny" = -3, +"wx" = -2, +"wy" = -3, +"ex" = 4, +"ey" = -5, +"northabove" = 0, +"southabove" = 1, +"eastabove" = 1, +"westabove" = 0, +"nturn" = 15, +"sturn" = 0, +"wturn" = 0, +"eturn" = 39, +"nflip" = 8, +"sflip" = 0, +"wflip" = 0, +"eflip" = 8) + if("onbelt") + return list("shrink" = 0.3,"sx" = -2,"sy" = -5,"nx" = 4,"ny" = -5,"wx" = 0,"wy" = -5,"ex" = 2,"ey" = -5,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0) + +/obj/item/lockpickring/proc/addtoring(obj/item/I) + if(!I || !istype(I)) + return 0 + I.loc = src + picks += I + update_icon() + update_desc() + +/obj/item/lockpickring/proc/removefromring(mob/user) + if(!picks.len) + return + var/obj/item/lockpick/K = picks[picks.len] + picks -= K + K.loc = user.loc + update_icon() + update_desc() + return K + +/obj/item/lockpickring/attackby(obj/item/I, mob/user) + if(istype(I,/obj/item/lockpick)) + if(picks.len >= 3) + to_chat(user, "Too many lockpicks.") + return + user.dropItemToGround(I) + addtoring(I) + else + return ..() + +/obj/item/lockpickring/attack_right(mob/user) + if(picks.len) + to_chat(user, "I steal a pick off the ring.") + var/obj/item/lockpick/K = removefromring(user) + user.put_in_active_hand(K) + +/obj/item/lockpickring/update_icon() + ..() + if(!picks.len) + icon_state = "pickring0" + return + if(picks.len >= 3) + icon_state = "pickring3" + return + switch(picks.len) + if(1) + icon_state = "pickring1" + if(2) + icon_state = "pickring2" + if(3) + icon_state = "pickring3" + +/obj/item/lockpickring/proc/update_desc() + if(picks.len) + desc = "\Roman [picks.len] lockpicks." + else + desc = "" + +/obj/item/lockpickring/mundane + picks = list(/obj/item/lockpick, /obj/item/lockpick, /obj/item/lockpick) diff --git a/code/game/objects/items/rogueitems/keys.dm b/code/game/objects/items/rogueitems/keys.dm index a0c91bacc..75c6cc726 100644 --- a/code/game/objects/items/rogueitems/keys.dm +++ b/code/game/objects/items/rogueitems/keys.dm @@ -26,6 +26,21 @@ GLOB.lockhashes += lockhash GLOB.lockids[lockid] = lockhash +/obj/item/lockpick + name = "lockpick" + desc = "A small, sharp piece of metal to aid opening locks in the absence of a key." + icon_state = "lockpick" + icon = 'icons/roguetown/items/lockpicks.dmi' + lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi' + w_class = WEIGHT_CLASS_TINY + dropshrink = 0.75 + throwforce = 0 + max_integrity = 10 + picklvl = 1 + slot_flags = ITEM_SLOT_HIP|ITEM_SLOT_MOUTH|ITEM_SLOT_NECK + destroy_sound = 'sound/items/pickbreak.ogg' + /obj/item/roguekey/lord name = "master key" desc = "The Lord's key." @@ -172,13 +187,12 @@ icon_state = "brownkey" lockid = "roomhunt" -//vampire mansion// +//vampire mansion /obj/item/roguekey/vampire name = "mansion key" desc = "The key to a vampire lord's castle." icon_state = "vampkey" lockid = "mansionvampire" -// /obj/item/roguekey/blacksmith name = "blacksmith key" @@ -434,4 +448,4 @@ KE.name = src.holdname to_chat(user, span_notice("You add [src] to [K].")) qdel(src) - + diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index d7dadadf7..a041be3bf 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -263,6 +263,9 @@ if(istype(W, /obj/item/roguekey) || istype(W, /obj/item/keyring)) trykeylock(W, user) return + if(istype(W, /obj/item/lockpick)) + trypicklock(W, user) + return if(src.tool_interact(W,user)) return 1 // No afterattack else @@ -308,6 +311,63 @@ return TRUE +obj/structure/closet/proc/trypicklock(obj/item/I, mob/user) + if(opened) + to_chat(user, "This cannot be picked while it is open.") + return + if(!keylock) + to_chat(user, "There's no lock on this.") + return + if(broken) + to_chat(user, "The lock is broken.") + return + else + var/lockprogress = 0 + var/locktreshold = 100 + + var/obj/item/lockpick/P = I + var/mob/living/L = user + + var/pickskill = user.mind.get_skill_level(/datum/skill/misc/lockpicking) + var/perbonus = L.STAPER/5 + var/picktime = 70 + var/pickchance = 35 + var/moveup = 10 + + picktime -= (pickskill * 10) + picktime = clamp(picktime, 10, 70) + + moveup += (pickskill * 3) + moveup = clamp(moveup, 10, 30) + + pickchance += pickskill * 10 + pickchance += perbonus + pickchance *= P.picklvl + pickchance = clamp(pickchance, 1, 95) + + while(!QDELETED(I) &&(lockprogress < locktreshold)) + if(!do_after(user, picktime, target = src)) + break + if(prob(pickchance)) + lockprogress += moveup + playsound(src.loc, pick('sound/items/pickgood1.ogg','sound/items/pickgood2.ogg'), 5, TRUE) + to_chat(user, "Click...") + if(L.mind) + var/amt2raise = L.STAINT + var/boon = L.mind.get_learning_boon(/datum/skill/misc/lockpicking) + L.mind.adjust_experience(/datum/skill/misc/lockpicking, amt2raise * boon) + if(lockprogress >= locktreshold) + to_chat(user, "The locking mechanism gives.") + togglelock(user) + break + else + continue + else + playsound(loc, 'sound/items/pickbad.ogg', 40, TRUE) + I.take_damage(1, BRUTE, "melee") + to_chat(user, "Clack.") + continue + return /obj/structure/closet/proc/after_weld(weld_state) return diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 1d9e6834d..10c3cbf2d 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -276,9 +276,69 @@ trykeylock(I, user) // else if(user.used_intent.type != INTENT_HARM) // return attack_hand(user) + if(istype(I, /obj/item/lockpick)) + trypicklock(I, user) else return ..() +/obj/structure/mineral_door/proc/trypicklock(obj/item/I, mob/user) + if(door_opened || isSwitchingStates) + to_chat(user, "This cannot be picked while it is open.") + return + if(!keylock) + return + if(lockbroken) + to_chat(user, "The lock to this door is broken.") + user.changeNext_move(CLICK_CD_MELEE) + else + var/lockprogress = 0 + var/locktreshold = 100 + + var/obj/item/lockpick/P = I + var/mob/living/L = user + + var/pickskill = user.mind.get_skill_level(/datum/skill/misc/lockpicking) + var/perbonus = L.STAPER/5 + var/picktime = 70 + var/pickchance = 35 + var/moveup = 10 + + picktime -= (pickskill * 10) + picktime = clamp(picktime, 10, 70) + + moveup += (pickskill * 3) + moveup = clamp(moveup, 10, 30) + + pickchance += pickskill * 10 + pickchance += perbonus + pickchance *= P.picklvl + pickchance = clamp(pickchance, 1, 95) + + + + while(!QDELETED(I) &&(lockprogress < locktreshold)) + if(!do_after(user, picktime, target = src)) + break + if(prob(pickchance)) + lockprogress += moveup + playsound(src.loc, pick('sound/items/pickgood1.ogg','sound/items/pickgood2.ogg'), 5, TRUE) + to_chat(user, "Click...") + if(L.mind) + var/amt2raise = L.STAINT + var/boon = L.mind.get_learning_boon(/datum/skill/misc/lockpicking) + L.mind.adjust_experience(/datum/skill/misc/lockpicking, amt2raise * boon) + if(lockprogress >= locktreshold) + to_chat(user, "The locking mechanism gives.") + lock_toggle(user) + break + else + continue + else + playsound(loc, 'sound/items/pickbad.ogg', 40, TRUE) + I.take_damage(1, BRUTE, "melee") + to_chat(user, "Clack.") + continue + return /obj/structure/mineral_door/proc/trykeylock(obj/item/I, mob/user) if(door_opened || isSwitchingStates) diff --git a/code/modules/antagonists/roguetown/villain/bandit.dm b/code/modules/antagonists/roguetown/villain/bandit.dm index d8190d696..63247a18e 100644 --- a/code/modules/antagonists/roguetown/villain/bandit.dm +++ b/code/modules/antagonists/roguetown/villain/bandit.dm @@ -114,6 +114,7 @@ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 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/misc/lockpicking, 3, TRUE) belt = /obj/item/storage/belt/rogue/leather pants = /obj/item/clothing/under/roguetown/trou/leather shirt = /obj/item/clothing/suit/roguetown/shirt/shortshirt/random diff --git a/code/modules/antagonists/roguetown/villain/maniac/maniac.dm b/code/modules/antagonists/roguetown/villain/maniac/maniac.dm index dfd1c1ba7..3021c796d 100644 --- a/code/modules/antagonists/roguetown/villain/maniac/maniac.dm +++ b/code/modules/antagonists/roguetown/villain/maniac/maniac.dm @@ -95,6 +95,7 @@ owner.adjust_skillrank(/datum/skill/combat/knives, 6, TRUE) owner.adjust_skillrank(/datum/skill/combat/wrestling, 5, TRUE) owner.adjust_skillrank(/datum/skill/combat/unarmed, 4, TRUE) + owner.adjust_skillrank(/datum/skill/misc/lockpicking, 2, TRUE) STASTR = dreamer.STASTR STACON = dreamer.STACON STAEND = dreamer.STAEND diff --git a/code/modules/cargo/packsrogue/tools.dm b/code/modules/cargo/packsrogue/tools.dm index 4c008d307..1fec82eaa 100644 --- a/code/modules/cargo/packsrogue/tools.dm +++ b/code/modules/cargo/packsrogue/tools.dm @@ -73,3 +73,8 @@ name = "Proesthetic Arm (R)" cost = 40 contains = list(/obj/item/bodypart/r_arm/rproesthetic) + +/datum/supply_pack/rogue/tools/lockpicks + name = "Lockpicks" + cost = 20 + contains = /obj/item/lockpickring/mundane 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 3775e322b..9616bef55 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 @@ -40,6 +40,7 @@ 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.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 1, TRUE) H.change_stat("strength", 2) H.change_stat("intelligence", 2) H.change_stat("endurance", 2) 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 ddc41f915..79a2b9149 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 @@ -35,6 +35,7 @@ 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.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 2, TRUE) H.change_stat("strength", 2) H.change_stat("perception", 3) H.change_stat("intelligence", 3) 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 7fd46bbd7..62221a616 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 @@ -23,6 +23,7 @@ armor = /obj/item/clothing/suit/roguetown/armor/leather/vest/black shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/random backr = /obj/item/storage/backpack/rogue/satchel + backpack_contents = list(/obj/item/lockpick = 1) belt = /obj/item/storage/belt/rogue/leather backpack_contents = list(/obj/item/bait = 1) gloves = /obj/item/clothing/gloves/roguetown/fingerless @@ -45,6 +46,7 @@ H.mind.adjust_skillrank(/datum/skill/misc/reading, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/swimming, 2, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/climbing, 4, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 2, TRUE) H.change_stat("strength", 1) H.change_stat("perception", 1) H.change_stat("intelligence", 1) 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 d5fa8db6f..06ad804ee 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 @@ -47,6 +47,7 @@ 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/misc/lockpicking, 2, TRUE) H.mind.adjust_skillrank(/datum/skill/combat/whipsflails, rand(4,5), TRUE) H.change_stat("intelligence", 1) H.change_stat("strength", 1) 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 10bedfa61..a9e631698 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 @@ -43,6 +43,7 @@ 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.adjust_skillrank(/datum/skill/misc/lockpicking, 4, TRUE) pants = /obj/item/clothing/under/roguetown/trou/leather shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt gloves = /obj/item/clothing/gloves/roguetown/leather @@ -52,6 +53,7 @@ armor = /obj/item/clothing/suit/roguetown/armor/leather cloak = /obj/item/clothing/cloak/raincloak/mortus backl = /obj/item/storage/backpack/rogue/satchel + backpack_contents = list(/obj/item/lockpick = 1) beltr = /obj/item/rogueweapon/huntingknife/idagger/steel beltl = /obj/item/rogueweapon/huntingknife/idagger/steel ADD_TRAIT(H, TRAIT_MEDIUMARMOR, TRAIT_GENERIC) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/special/nakedandafraid.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/special/nakedandafraid.dm index 8330a1f2d..db606ad48 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/special/nakedandafraid.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/special/nakedandafraid.dm @@ -31,6 +31,7 @@ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 4, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/swimming, 4, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/medicine, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 3, TRUE) H.change_stat("strength", 2) H.change_stat("endurance", 4) H.change_stat("constitution", 1) diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/special/torso.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/special/torso.dm index 3d0b70a76..c3f4f5561 100644 --- a/code/modules/jobs/job_types/roguetown/adventurer/types/special/torso.dm +++ b/code/modules/jobs/job_types/roguetown/adventurer/types/special/torso.dm @@ -32,6 +32,7 @@ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 6, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/medicine, 6, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/reading, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 5, TRUE) H.change_stat("strength", 5) H.change_stat("endurance", 6) H.change_stat("constitution", 6) diff --git a/code/modules/jobs/job_types/roguetown/courtier/jester.dm b/code/modules/jobs/job_types/roguetown/courtier/jester.dm index 4b59af58d..53804ca7e 100644 --- a/code/modules/jobs/job_types/roguetown/courtier/jester.dm +++ b/code/modules/jobs/job_types/roguetown/courtier/jester.dm @@ -51,6 +51,7 @@ H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 4, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/stealing, 5, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/climbing, 4, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 2, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/music, pick(1,2), TRUE) H.STASTR = rand(1, 20) H.STAINT = rand(1, 20) diff --git a/code/modules/jobs/job_types/roguetown/mercenaries/desertrider.dm b/code/modules/jobs/job_types/roguetown/mercenaries/desertrider.dm index 548d27cac..24a86f4c9 100644 --- a/code/modules/jobs/job_types/roguetown/mercenaries/desertrider.dm +++ b/code/modules/jobs/job_types/roguetown/mercenaries/desertrider.dm @@ -65,6 +65,7 @@ H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/riding, 2, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 1, TRUE) H.change_stat("strength", 2) H.change_stat("endurance", 3) H.change_stat("constitution", 2) diff --git a/code/modules/jobs/job_types/roguetown/mercenaries/grenzelhoft.dm b/code/modules/jobs/job_types/roguetown/mercenaries/grenzelhoft.dm index a43cdca99..7cc335e11 100644 --- a/code/modules/jobs/job_types/roguetown/mercenaries/grenzelhoft.dm +++ b/code/modules/jobs/job_types/roguetown/mercenaries/grenzelhoft.dm @@ -62,6 +62,7 @@ H.mind.adjust_skillrank(/datum/skill/combat/knives, 2, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/reading, 1, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 1, TRUE) H.change_stat("strength", 3) H.change_stat("endurance", 2) H.change_stat("constitution", 3) diff --git a/code/modules/jobs/job_types/roguetown/peasants/beggar.dm b/code/modules/jobs/job_types/roguetown/peasants/beggar.dm index 01e09c33c..f9777db4c 100644 --- a/code/modules/jobs/job_types/roguetown/peasants/beggar.dm +++ b/code/modules/jobs/job_types/roguetown/peasants/beggar.dm @@ -72,6 +72,7 @@ H.mind.adjust_skillrank(/datum/skill/misc/climbing, rand(2,5), TRUE) H.mind.adjust_skillrank(/datum/skill/misc/reading, 4, TRUE) //very good reading he is wise H.mind.adjust_skillrank(/datum/skill/combat/polearms, rand(2,5), TRUE) // dog beating staff + H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, rand(3,5), TRUE) H.STASTR = rand(1, 20) H.STAINT = rand(5, 20) H.STALUC = rand(1, 20) @@ -116,7 +117,8 @@ if(H.mind) H.mind.adjust_skillrank(/datum/skill/misc/sneaking, rand(1,5), TRUE) H.mind.adjust_skillrank(/datum/skill/misc/stealing, 3, TRUE) - H.mind.adjust_skillrank(/datum/skill/misc/climbing, rand(1,5), TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/climbing, rand(2,5), TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, rand(1,4), TRUE) H.STALUC = rand(1, 20) if(prob(5)) r_hand = /obj/item/rogueweapon/mace/woodclub diff --git a/code/modules/jobs/job_types/roguetown/peasants/prisoner.dm b/code/modules/jobs/job_types/roguetown/peasants/prisoner.dm index 7e2292bc5..ac8145f97 100644 --- a/code/modules/jobs/job_types/roguetown/peasants/prisoner.dm +++ b/code/modules/jobs/job_types/roguetown/peasants/prisoner.dm @@ -39,6 +39,7 @@ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 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/lockpicking, 2, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/sneaking, 1, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/music, 1, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/riding, 2, TRUE) diff --git a/code/modules/jobs/job_types/roguetown/yeomen/merchant.dm b/code/modules/jobs/job_types/roguetown/yeomen/merchant.dm index 17e332b9a..6fc8b6e02 100644 --- a/code/modules/jobs/job_types/roguetown/yeomen/merchant.dm +++ b/code/modules/jobs/job_types/roguetown/yeomen/merchant.dm @@ -42,6 +42,7 @@ H.mind.adjust_skillrank(/datum/skill/misc/medicine, 2, TRUE) H.mind.adjust_skillrank(/datum/skill/craft/cooking, 2, TRUE) H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE) + H.mind.adjust_skillrank(/datum/skill/misc/lockpicking, 1, TRUE) ADD_TRAIT(H, TRAIT_SEEPRICES, type) //50% chance to be raceswapped to Giza because slop lore if(ishumannorthern(H) && prob(50)) diff --git a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/_anvil_recipe.dm b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/_anvil_recipe.dm index cdacd55d6..5739aa5bf 100644 --- a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/_anvil_recipe.dm +++ b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/_anvil_recipe.dm @@ -112,6 +112,9 @@ I.obj_integrity *= modifier I.max_integrity *= modifier I.sellprice *= modifier + if(istype(I, /obj/item/lockpick)) + var/obj/item/lockpick/L = I + L.picklvl = modifier if(istype(I, /obj/item/rogueweapon)) var/obj/item/rogueweapon/W = I W.force *= modifier diff --git a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/tools.dm b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/tools.dm index 1aa7e03b4..f6694aad4 100644 --- a/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/tools.dm +++ b/code/modules/roguetown/roguejobs/blacksmith/anvil_recipes/tools.dm @@ -103,6 +103,18 @@ created_item = list(/obj/item/customblank, /obj/item/customblank, /obj/item/customblank, /obj/item/customblank, /obj/item/customblank) i_type = "General" +/datum/anvil_recipe/tools/lockpicks + name = "Lockpicks x3" + req_bar = /obj/item/ingot/iron + created_item = list(/obj/item/lockpick, /obj/item/lockpick, /obj/item/lockpick) + i_type = "General" + +/datum/anvil_recipe/tools/lockpickring + name = "Lockpickrings x3" + req_bar = /obj/item/ingot/iron + created_item = list(/obj/item/lockpickring, /obj/item/lockpickring, /obj/item/lockpickring) + i_type = "General" + /datum/anvil_recipe/tools/thresher name = "Thresher (+1 Stick)" req_bar = /obj/item/ingot/iron diff --git a/icons/roguetown/items/lockpicks.dmi b/icons/roguetown/items/lockpicks.dmi new file mode 100644 index 000000000..aa0b4fbf1 Binary files /dev/null and b/icons/roguetown/items/lockpicks.dmi differ diff --git a/sound/items/pickbad.ogg b/sound/items/pickbad.ogg new file mode 100644 index 000000000..d087d052d Binary files /dev/null and b/sound/items/pickbad.ogg differ diff --git a/sound/items/pickbreak.ogg b/sound/items/pickbreak.ogg new file mode 100644 index 000000000..a76e4c252 Binary files /dev/null and b/sound/items/pickbreak.ogg differ diff --git a/sound/items/pickgood1.ogg b/sound/items/pickgood1.ogg new file mode 100644 index 000000000..0f5ec5bdd Binary files /dev/null and b/sound/items/pickgood1.ogg differ diff --git a/sound/items/pickgood2.ogg b/sound/items/pickgood2.ogg new file mode 100644 index 000000000..0cd7095ac Binary files /dev/null and b/sound/items/pickgood2.ogg differ