Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes, QoL, Classes additions #97

Merged
merged 14 commits into from
Dec 19, 2024
22 changes: 22 additions & 0 deletions code/game/objects/items/rogueitems/natural.dm
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,28 @@
user.visible_message("[user] removes [F] from [src]")
update_bundle()

/obj/item/natural/bundle/attack_turf(turf/T, mob/living/user)
var/list/obj/item/stackables = list()
for(var/obj/I in T.contents)
if(I.type == stacktype)
stackables += I
if(stackables.len)
if(amount >= maxamount)
to_chat(user, span_info("[src] can't hold any more without falling apart."))
return
to_chat(user, span_info("I begin filling [src]..."))
for(var/obj/I in stackables)
if(amount >= maxamount)
break
if(I.type == stacktype)
if(!do_after(user, 5, TRUE, src))
break
if(!(I in T.contents))
continue
qdel(I)
src.amount++
update_bundle()

/obj/item/natural/bundle/examine(mob/user)
. = ..()
to_chat(user, span_notice("There are [amount] [stackname] in this bundle."))
Expand Down
34 changes: 34 additions & 0 deletions code/game/objects/items/rogueitems/natural/clothfibersthorn.dm
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,40 @@
icon2step = 7
icon3 = "stickbundle3"

/obj/item/natural/bundle/stick/attackby(obj/item/W, mob/living/user)
. = ..()
user.changeNext_move(CLICK_CD_MELEE)
if(user.used_intent?.blade_class == BCLASS_CUT)
playsound(get_turf(src.loc), 'sound/items/wood_sharpen.ogg', 100)
user.visible_message(span_info("[user] starts sharpening the sticks in [src]..."), span_info("I start sharpening the sticks in [src]...."))
for(var/i in 1 to (amount - 1))
if(!do_after(user, 20))
break
var/turf/T = get_turf(user.loc)
var/obj/item/grown/log/tree/stake/S = new /obj/item/grown/log/tree/stake(T)
amount--
// If there's only one stick left in the bundle...
if (amount == 1)
// Replace the bundle with a single stick
var/obj/item/ST = new stacktype(T)
if(user.is_holding(src))
user.doUnEquip(src, TRUE, T, silent = TRUE)
qdel(src)
var/holding = user.put_in_hands(ST)
// And automatically have us try and carve the last new stick, assuming we're still holding it!
if(!do_after(user, 20))
break
S = new /obj/item/grown/log/tree/stake(T)
if(holding)
user.doUnEquip(ST, TRUE, T, silent = TRUE)
qdel(ST)
else
update_bundle()
user.put_in_hands(S)
S.pixel_x = rand(-3, 3)
S.pixel_y = rand(-3, 3)
return

/obj/item/natural/bundle/bone
name = "stack of bones"
icon_state = "bonestack1"
Expand Down
34 changes: 29 additions & 5 deletions code/game/objects/structures/mineral_doors.dm
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
var/kickthresh = 15
var/swing_closed = TRUE
var/lock_strength = 100
var/mob/last_bumper = null

damage_deflection = 10

Expand Down Expand Up @@ -152,6 +153,9 @@
user.visible_message(span_warning("[user] smashes through [src]!"))
return
if(locked)
if(istype(user.get_active_held_item(), /obj/item/key) || istype(user.get_active_held_item(), /obj/item/storage/keyring))
src.attackby(user.get_active_held_item(), user, TRUE)
return
door_rattle()
return
if(TryToSwitchState(AM))
Expand Down Expand Up @@ -245,7 +249,7 @@
if(close_delay != -1)
addtimer(CALLBACK(src, PROC_REF(Close)), close_delay)

/obj/structure/mineral_door/proc/Close(silent = FALSE)
/obj/structure/mineral_door/proc/Close(silent = FALSE, autobump = FALSE)
if(isSwitchingStates || !door_opened)
return
var/turf/T = get_turf(src)
Expand All @@ -264,6 +268,10 @@
air_update_turf(1)
update_icon()
isSwitchingStates = FALSE
if(autobump && src.Adjacent(last_bumper))
if(istype(last_bumper.get_active_held_item(), /obj/item/key) || istype(last_bumper.get_active_held_item(), /obj/item/storage/keyring))
src.attack_right(last_bumper)
last_bumper = null

/obj/structure/mineral_door/update_icon()
icon_state = "[base_state][door_opened ? "open":""]"
Expand All @@ -275,14 +283,19 @@
animate(pixel_x = oldx-1, time = 0.5)
animate(pixel_x = oldx, time = 0.5)

/obj/structure/mineral_door/attackby(obj/item/I, mob/user)
/obj/structure/mineral_door/attackby(obj/item/I, mob/user, autobump = FALSE)
user.changeNext_move(CLICK_CD_FAST)
if(istype(I, /obj/item/roguekey) || istype(I, /obj/item/storage/keyring))
if(!locked)
to_chat(user, span_warning("It won't turn this way. Try turning to the right."))
door_rattle()
return
trykeylock(I, user)
if(autobump == TRUE) //Attackby passes UI coordinate onclick stuff, so forcing check to TRUE
trykeylock(I, user, autobump)
return
else
trykeylock(I, user)
return
if(istype(I, /obj/item/lockpick))
trypicklock(I, user)
if(istype(I,/obj/item/lockpickring))
Expand All @@ -306,7 +319,7 @@
else
return ..()

/obj/structure/mineral_door/proc/trykeylock(obj/item/I, mob/user)
/obj/structure/mineral_door/proc/trykeylock(obj/item/I, mob/user, autobump = FALSE)
if(door_opened || isSwitchingStates)
return
if(!keylock)
Expand All @@ -325,17 +338,28 @@
break
if(K.lockhash == lockhash)
lock_toggle(user)
break
if(autobump && !locked)
src.Open()
addtimer(CALLBACK(src, PROC_REF(Close), FALSE, TRUE), 25)
src.last_bumper = user
return
else
if(user.cmode)
door_rattle()
to_chat(user, span_warning("None of the keys on my keyring go to this door."))
door_rattle()
return
else
var/obj/item/roguekey/K = I
if(K.lockhash == lockhash)
lock_toggle(user)
if(autobump)
src.Open()
addtimer(CALLBACK(src, PROC_REF(Close), FALSE, TRUE), 25)
src.last_bumper = user
return
else
to_chat(user, span_warning("This is not the correct key that goes to this door."))
door_rattle()
return

Expand Down
2 changes: 2 additions & 0 deletions code/modules/antagonists/roguetown/villain/vampirelord.dm
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ GLOBAL_LIST_EMPTY(vampire_objects)
icon_state = "vrobe"
item_state = "vrobe"
resistance_flags = FIRE_PROOF | ACID_PROOF
flags_inv = HIDECROTCH|HIDEBOOB|HIDEBUTT

/obj/item/clothing/head/roguetown/vampire
name = "crown of darkness"
Expand All @@ -220,6 +221,7 @@ GLOBAL_LIST_EMPTY(vampire_objects)
body_parts_covered = CHEST|GROIN|VITALS
armor_class = 2
resistance_flags = FIRE_PROOF | ACID_PROOF
flags_inv = HIDEBOOB

/obj/item/clothing/suit/roguetown/armor/plate/vampire
slot_flags = ITEM_SLOT_ARMOR
Expand Down
2 changes: 1 addition & 1 deletion code/modules/cargo/packsrogue/Sellsword.dm
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@
/datum/supply_pack/rogue/Sellsword/Bevor
name = "Bevor"
cost = 20
contains = /obj/item/clothing/neck/roguetown/bevor
contains = list(/obj/item/clothing/neck/roguetown/bevor)


/datum/supply_pack/rogue/Sellsword/gorget
Expand Down
15 changes: 14 additions & 1 deletion code/modules/clothing/rogueclothes/armor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
drop_sound = 'sound/foley/dropsound/armor_drop.ogg'
experimental_onhip = TRUE
nodismemsleeves = TRUE
flags_inv = HIDEBOOB|HIDECROTCH
flags_inv = HIDEBOOB|HIDECROTCH|HIDEBUTT

/obj/item/clothing/suit/roguetown/armor/chainmail
slot_flags = ITEM_SLOT_ARMOR|ITEM_SLOT_SHIRT
Expand Down Expand Up @@ -87,6 +87,7 @@
allowed_race = CLOTHED_RACES_TYPES
body_parts_covered = CHEST|GROIN
armor_class = ARMOR_CLASS_LIGHT
flags_inv = HIDEBOOB|HIDECROTCH

/obj/item/clothing/suit/roguetown/armor/plate
slot_flags = ITEM_SLOT_ARMOR
Expand All @@ -107,6 +108,7 @@
unequip_delay_self = 4 SECONDS
armor_class = ARMOR_CLASS_HEAVY
smelt_bar_num = 3
flags_inv = HIDEBOOB // Sprite stops just at the waist line

/obj/item/clothing/suit/roguetown/armor/plate/bikini
name = "half-plate bikini"
Expand All @@ -118,6 +120,7 @@
allowed_sex = list(MALE, FEMALE)
armor_class = ARMOR_CLASS_MEDIUM
smelt_bar_num = 2
flags_inv = HIDEBOOB|HIDECROTCH

/obj/item/clothing/suit/roguetown/armor/plate/half
slot_flags = ITEM_SLOT_ARMOR
Expand All @@ -136,6 +139,7 @@
smeltresult = /obj/item/ingot/steel
armor_class = ARMOR_CLASS_MEDIUM
smelt_bar_num = 2
flags_inv = HIDEBOOB

/obj/item/clothing/suit/roguetown/armor/plate/full
name = "plate armor"
Expand All @@ -160,6 +164,7 @@
equip_delay_other = 3 SECONDS
strip_delay = 6 SECONDS
smelt_bar_num = 3
flags_inv = HIDEBOOB|HIDECROTCH

/obj/item/clothing/suit/roguetown/armor/plate/half/iron
name = "iron breastplate"
Expand All @@ -169,6 +174,7 @@
smeltresult = /obj/item/ingot/iron
armor_class = ARMOR_CLASS_MEDIUM
smelt_bar_num = 2
flags_inv = HIDEBOOB

/obj/item/clothing/suit/roguetown/armor/plate/half/elven
name = "elven guardian cuirass"
Expand Down Expand Up @@ -401,6 +407,7 @@
max_integrity = 150
sellprice = 20
armor_class = ARMOR_CLASS_LIGHT
flags_inv = HIDECROTCH|HIDEBOOB

/obj/item/clothing/suit/roguetown/armor/leather/hide
name = "hide armor"
Expand Down Expand Up @@ -433,6 +440,7 @@
mob_overlay_icon = 'modular_causticcove/icons/roguetown/clothing/onmob/armor.dmi'
allowed_sex = list(MALE, FEMALE)
allowed_race = CLOTHED_RACES_TYPES
flags_inv = HIDEBOOB|HIDECROTCH

/obj/item/clothing/suit/roguetown/armor/leather/studded/bikini
name = "studded leather bikini"
Expand All @@ -443,6 +451,7 @@
mob_overlay_icon = 'modular_causticcove/icons/roguetown/clothing/onmob/armor.dmi'
allowed_sex = list(MALE, FEMALE)
allowed_race = CLOTHED_RACES_TYPES
flags_inv = HIDEBOOB|HIDECROTCH

/obj/item/clothing/suit/roguetown/armor/leather/hide/bikini
name = "hide bikini"
Expand All @@ -453,6 +462,7 @@
mob_overlay_icon = 'modular_causticcove/icons/roguetown/clothing/onmob/armor.dmi'
allowed_sex = list(MALE, FEMALE)
allowed_race = CLOTHED_RACES_TYPES
flags_inv = HIDEBOOB|HIDECROTCH

/obj/item/clothing/suit/roguetown/armor/leather/vest
name = "leather vest"
Expand Down Expand Up @@ -481,6 +491,7 @@
slot_flags = ITEM_SLOT_ARMOR
sleeved = 'icons/roguetown/clothing/onmob/helpers/sleeves_armor.dmi'
sleevetype = "shirt"
flags_inv = HIDEBOOB|HIDEBUTT

/obj/item/clothing/suit/roguetown/armor/leather/vest/white
color = CLOTHING_WHITE
Expand Down Expand Up @@ -509,6 +520,7 @@
sleeved = 'icons/roguetown/clothing/onmob/armor.dmi'
allowed_sex = list(MALE, FEMALE)
allowed_race = NON_DWARVEN_RACE_TYPES
flags_inv = HIDEBOOB|HIDEBUTT


/obj/item/clothing/suit/roguetown/armor/leather/vest/hand
Expand Down Expand Up @@ -630,6 +642,7 @@
smeltresult = /obj/item/ingot/blacksteel
armor_class = ARMOR_CLASS_MEDIUM
smelt_bar_num = 2
flags_inv = HIDEBOOB

/obj/item/clothing/suit/roguetown/armor/gambeson/hierophant
name = "hierophant's shawl"
Expand Down
14 changes: 12 additions & 2 deletions code/modules/clothing/rogueclothes/cloaks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,10 @@
GLOB.lordcolor -= src
return ..()

/obj/item/clothing/cloak/tabard/musketeer
detail_tag = "_psy"
color = CLOTHING_BLUE
detail_color = CLOTHING_WHITE

//////////////////////////
/// SOLDIER TABARD
Expand All @@ -307,7 +311,7 @@
sleevetype = "shirt"
nodismemsleeves = TRUE
slot_flags = ITEM_SLOT_ARMOR|ITEM_SLOT_CLOAK
flags_inv = HIDECROTCH|HIDEBOOB
flags_inv = HIDECROTCH|HIDEBOOB|HIDEBUTT
var/picked

/obj/item/clothing/cloak/stabard/attack_right(mob/user)
Expand Down Expand Up @@ -591,6 +595,7 @@
allowed_race = NON_DWARVEN_RACE_TYPES
detail_tag = "_det"
detail_color = CLOTHING_AZURE
flags_inv = HIDEBOOB

/obj/item/clothing/cloak/lordcloak/update_icon()
cut_overlays()
Expand Down Expand Up @@ -768,6 +773,7 @@
inhand_mod = TRUE
hoodtype = /obj/item/clothing/head/hooded/rainhood
toggle_icon_state = FALSE
flags_inv = HIDEBOOB

/obj/item/clothing/wash_act(clean)
. = ..()
Expand Down Expand Up @@ -936,6 +942,7 @@
allowed_sex = list(MALE, FEMALE)
allowed_race = NON_DWARVEN_RACE_TYPES
nodismemsleeves = TRUE
flags_inv = HIDECROTCH|HIDEBOOB|HIDEBUTT


/obj/item/clothing/cloak/stole
Expand Down Expand Up @@ -978,6 +985,7 @@
allowed_race = NON_DWARVEN_RACE_TYPES
sellprice = 50
nodismemsleeves = TRUE
flags_inv = HIDEBOOB

/obj/item/clothing/cloak/half
name = "halfcloak"
Expand All @@ -996,7 +1004,7 @@
toggle_icon_state = FALSE
color = CLOTHING_BLACK
allowed_sex = list(MALE, FEMALE)
flags_inv = null
flags_inv = HIDEBOOB // Put this here, since the covered boob otherwise clips through

/obj/item/clothing/cloak/half/ComponentInitialize()
. = ..()
Expand Down Expand Up @@ -1042,6 +1050,7 @@
allowed_sex = list(MALE, FEMALE)
allowed_race = NON_DWARVEN_RACE_TYPES
inhand_mod = FALSE
flags_inv = null

/obj/item/clothing/cloak/half/vet/Initialize()
. = ..()
Expand Down Expand Up @@ -1328,6 +1337,7 @@
detail_color = CLOTHING_WHITE
icon_state = "guard_hood"
body_parts_covered = CHEST
flags_inv = HIDEBOOB

/obj/item/clothing/cloak/stabard/guardhood/attack_right(mob/user)
if(picked)
Expand Down
Loading
Loading