Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/main' into kills-lavaland-ruins
Browse files Browse the repository at this point in the history
  • Loading branch information
AMyriad committed Apr 18, 2024
2 parents 3cdb592 + 6562703 commit 98a3f1d
Show file tree
Hide file tree
Showing 17 changed files with 108 additions and 64 deletions.
1 change: 1 addition & 0 deletions code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_XENO_IMMUNE "xeno_immune"//prevents xeno huggies implanting skeletons
#define TRAIT_NOPAIN "no_pain"
#define TRAIT_DRUQK "druqk"
#define TRAIT_BURIED_COIN_GIVEN "buried_coin_given" // prevents a human corpse from being used for a corpse multiple times

//non-mob traits
#define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it
Expand Down
3 changes: 1 addition & 2 deletions code/_onclick/other_mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,7 @@
//addtimer(CALLBACK(src, TYPE_PROC_REF(/mob/living/carbon/human, werewolf_infect)), 3 MINUTES)
if(user.mind.has_antag_datum(/datum/antagonist/zombie))
if(!src.mind.has_antag_datum(/datum/antagonist/zombie))
if(prob(25)) // Delay is handled in zombie_infect anyways
H.zombie_infect()
H.zombie_infect_attempt()
//addtimer(CALLBACK(src, TYPE_PROC_REF(/mob/living/carbon/human, zombie_infect)), 3 MINUTES)

var/obj/item/grabbing/bite/B = new()
Expand Down
8 changes: 4 additions & 4 deletions code/datums/components/crafting/crafting.dm
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@
return FALSE
return TRUE

/atom/proc/OnCrafted(dirin)
/atom/proc/OnCrafted(dirin, user)
return

/obj/item/OnCrafted(dirin)
Expand Down Expand Up @@ -261,16 +261,16 @@
for(var/IT in L)
var/atom/movable/I = new IT(T)
I.CheckParts(parts, R)
I.OnCrafted(user.dir)
I.OnCrafted(user.dir, user)
else
if(ispath(R.result, /turf))
var/turf/X = T.PlaceOnTop(R.result)
if(X)
X.OnCrafted(user.dir)
X.OnCrafted(user.dir, user)
else
var/atom/movable/I = new R.result (T)
I.CheckParts(parts, R)
I.OnCrafted(user.dir)
I.OnCrafted(user.dir, user)
user.visible_message("<span class='notice'>[user] [R.verbage] \a [R.name]!</span>", \
"<span class='notice'>I [R.verbage] \a [R.name]!</span>")
if(user.mind && R.skillcraft)
Expand Down
2 changes: 2 additions & 0 deletions code/game/objects/items/rogueitems/coins.dm
Original file line number Diff line number Diff line change
Expand Up @@ -134,11 +134,13 @@
desc = initial(desc)
icon_state = "[base_type][heads_tails]"
dropshrink = 0.2
slot_flags = ITEM_SLOT_MOUTH
return

name = plural_name
desc = ""
dropshrink = 1
slot_flags = null
switch(quantity)
if(2)
dropshrink = 0.2 // this is just like the single coin, gotta shrink it
Expand Down
4 changes: 1 addition & 3 deletions code/game/objects/items/rogueweapons/melee/axes.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/obj/item/rogueweapon/stoneaxe
slot_flags = ITEM_SLOT_HIP
slot_flags = ITEM_SLOT_HIP | ITEM_SLOT_BACK
force = 12
possible_item_intents = list(/datum/intent/axe/chop/stone)
name = "stone axe"
Expand Down Expand Up @@ -95,7 +95,6 @@
swingdelay = 10

/obj/item/rogueweapon/stoneaxe/battle
slot_flags = ITEM_SLOT_HIP
force = 33
possible_item_intents = list(/datum/intent/axe/cut,/datum/intent/axe/chop)
name = "battle axe"
Expand All @@ -118,7 +117,6 @@
return ..()

/obj/item/rogueweapon/stoneaxe/woodcut
slot_flags = ITEM_SLOT_HIP
force = 18
possible_item_intents = list(/datum/intent/axe/cut,/datum/intent/axe/chop)
name = "axe"
Expand Down
3 changes: 1 addition & 2 deletions code/game/objects/items/rogueweapons/melee/blunt.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
//dropshrink = 0.75
wlength = WLENGTH_NORMAL
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_HIP
slot_flags = ITEM_SLOT_HIP | ITEM_SLOT_BACK
associated_skill = /datum/skill/combat/axesmaces
smeltresult = /obj/item/ingot/iron
gripped_intents = list(/datum/intent/mace/strike,/datum/intent/mace/smash)
Expand Down Expand Up @@ -250,7 +250,6 @@
//dropshrink = 0.75
wlength = WLENGTH_LONG
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_BACK
associated_skill = /datum/skill/combat/axesmaces
smeltresult = /obj/item/ash
parrysound = "parrywood"
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/rogueweapons/melee/flail.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
//dropshrink = 0.75
wlength = WLENGTH_NORMAL
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_HIP
slot_flags = ITEM_SLOT_HIP | ITEM_SLOT_BACK
associated_skill = /datum/skill/combat/whipsflails
smeltresult = /obj/item/ingot/iron
parrysound = list('sound/combat/parry/parrygen.ogg')
Expand Down Expand Up @@ -55,4 +55,4 @@
force = 40
icon_state = "flail"
smeltresult = /obj/item/ingot/steel
minstr = 5
minstr = 5
9 changes: 1 addition & 8 deletions code/game/objects/items/rogueweapons/melee/swords.dm
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

/obj/item/rogueweapon/sword
slot_flags = ITEM_SLOT_HIP
slot_flags = ITEM_SLOT_HIP | ITEM_SLOT_BACK
force = 18
force_wielded = 25
possible_item_intents = list(/datum/intent/sword/cut, /datum/intent/sword/thrust)
Expand Down Expand Up @@ -101,7 +101,6 @@
associated_skill = /datum/skill/combat/swords
throwforce = 15
thrown_bclass = BCLASS_CUT
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_HIP
dropshrink = 0.75
smeltresult = /obj/item/ingot/steel

Expand Down Expand Up @@ -143,7 +142,6 @@
associated_skill = /datum/skill/combat/swords
throwforce = 15
thrown_bclass = BCLASS_CUT
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_HIP
dropshrink = 0.75
smeltresult = /obj/item/ingot/steel

Expand Down Expand Up @@ -182,7 +180,6 @@
associated_skill = /datum/skill/combat/swords
throwforce = 15
thrown_bclass = BCLASS_CUT
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_HIP
dropshrink = 0.75
smeltresult = /obj/item/ingot/steel
sellprice = 363
Expand Down Expand Up @@ -222,7 +219,6 @@
associated_skill = /datum/skill/combat/swords
throwforce = 15
thrown_bclass = BCLASS_CUT
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_HIP
dropshrink = 0.75
smeltresult = /obj/item/ingot/steel
sellprice = 363
Expand Down Expand Up @@ -262,7 +258,6 @@
associated_skill = /datum/skill/combat/swords
throwforce = 15
thrown_bclass = BCLASS_CUT
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_HIP
dropshrink = 0.75
smeltresult = /obj/item/ingot/steel

Expand Down Expand Up @@ -302,7 +297,6 @@
associated_skill = /datum/skill/combat/swords
throwforce = 15
thrown_bclass = BCLASS_CUT
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_HIP
dropshrink = 0.75
minstr = 6
sellprice = 42
Expand Down Expand Up @@ -349,7 +343,6 @@
name = "execution sword"
desc = ""
minstr = 10
slot_flags = ITEM_SLOT_BACK

/obj/item/rogueweapon/sword/long/exe/getonmobprop(tag)
. = ..()
Expand Down
60 changes: 36 additions & 24 deletions code/modules/antagonists/roguetown/villain/zombie.dm
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,17 @@
for(var/X in H.bodyparts)
var/obj/item/bodypart/BP = X
BP.update_disabled()
H.STASTR = rand(12,18)
H.STASPD = rand(5,7)

if(prob(8))
H.STASTR = 18
else
H.STASTR = rand(8,11)

if(prob(8))
H.STASPD = 7
else
H.STASPD = rand(2,4)

H.STAINT = 1


Expand Down Expand Up @@ -176,26 +185,29 @@

//This occurs when one zombie infects a living human, going into instadeath from here is kind of shit and confusing
//We instead just transform at the end
/mob/living/carbon/human/proc/zombie_infect()
if(!mind)
return
if(mind.has_antag_datum(/datum/antagonist/vampirelord))
return
if(mind.has_antag_datum(/datum/antagonist/zombie))
return
if(mind.has_antag_datum(/datum/antagonist/werewolf))
/mob/living/carbon/human/proc/zombie_infect_attempt()
if(prob(7)) // Do you prefer if(prob(93)) return?
if(!mind)
return
if(mind.has_antag_datum(/datum/antagonist/vampirelord))
return
if(mind.has_antag_datum(/datum/antagonist/zombie))
return
if(mind.has_antag_datum(/datum/antagonist/werewolf))
return
var/datum/antagonist/zombie/new_antag = new /datum/antagonist/zombie()
mind.add_antag_datum(new_antag)
if(stat != DEAD)
to_chat(src, "<span class='danger'>I feel horrible... REALLY horrible after that...</span>")
if(getToxLoss() >= 75 && blood_volume)
mob_timers["puke"] = world.time
vomit(1, blood = TRUE)
sleep(1 MINUTES) //you get a minute
flash_fullscreen("redflash3")
to_chat(src, "<span class='danger'>It hurts... Is this really the end for me...</span>")
emote("scream") // heres your warning to others bro
Knockdown(1)
new_antag.wake_zombie(TRUE)
//death()
else
return
var/datum/antagonist/zombie/new_antag = new /datum/antagonist/zombie()
mind.add_antag_datum(new_antag)
if(stat != DEAD)
to_chat(src, "<span class='danger'>I feel horrible... REALLY horrible after that...</span>")
if(getToxLoss() >= 75 && blood_volume)
mob_timers["puke"] = world.time
vomit(1, blood = TRUE)
sleep(1 MINUTES) //you get a minute
flash_fullscreen("redflash3")
to_chat(src, "<span class='danger'>It hurts... Is this really the end for me...</span>")
emote("scream") // heres your warning to others bro
Knockdown(1)
new_antag.wake_zombie(TRUE)
//death()
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,6 @@
ADD_TRAIT(H, RTRAIT_HEAVYARMOR, TRAIT_GENERIC)
var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.PATRON)
C.holder_mob = H
C.update_devotion(50)
C.update_devotion(50, 50)
C.grant_spells(H)
H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray)
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.PATRON)
//Max devotion limit - Paladins are stronger but cannot pray to gain more abilities
C.max_devotion = 200
C.update_devotion(50)
C.update_devotion(50, 50)
C.holder_mob = H
C.grant_spells(H)
H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray)
3 changes: 2 additions & 1 deletion code/modules/jobs/job_types/roguetown/church/monk.dm
Original file line number Diff line number Diff line change
Expand Up @@ -69,5 +69,6 @@

var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.PATRON)
C.holder_mob = H
H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray)
C.update_devotion(50, 50)
C.grant_spells(H)
H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray)
2 changes: 1 addition & 1 deletion code/modules/jobs/job_types/roguetown/church/templar.dm
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,6 @@
var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.PATRON)
//Max devotion limit - Templars are stronger but cannot pray to gain more abilities
C.max_devotion = 200
C.update_devotion(50)
C.update_devotion(50, 50)
C.holder_mob = H
H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray)
15 changes: 15 additions & 0 deletions code/modules/mob/living/carbon/spirit/spirit.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
bodyparts = list(/obj/item/bodypart/chest/spirit, /obj/item/bodypart/head/spirit, /obj/item/bodypart/l_arm/spirit,
/obj/item/bodypart/r_arm/spirit, /obj/item/bodypart/r_leg/spirit, /obj/item/bodypart/l_leg/spirit)
hud_type = /datum/hud/spirit
density = FALSE // ghosts can pass through other mobs
var/paid = FALSE
var/beingmoved = FALSE
var/livingname = null
Expand Down Expand Up @@ -54,6 +55,20 @@
var/L = new /obj/item/flashlight/lantern/shrunken(src.loc)
put_in_hands(L)
AddComponent(/datum/component/footstep, FOOTSTEP_MOB_BAREFOOT, 1, 2)
addtimer(CALLBACK(src, PROC_REF(give_patron_toll)), 15 MINUTES)

/mob/living/carbon/spirit/proc/give_patron_toll()
if(QDELETED(src) || paid)
return
for(var/item in held_items)
if(istype(item, /obj/item/underworld/coin))
return
put_in_hands(new /obj/item/underworld/coin/notracking(get_turf(src)))
if(PATRON)
to_chat(src, "<span class='danger'>Your suffering has not gone unnoticed, [PATRON] has rewarded you with your toll.</span>")
else
to_chat(src, "<span class='danger'>Your suffering has not gone unnoticed, your patron has rewarded you with your toll.</span>")
playsound(src, 'sound/combat/caught.ogg', 80, TRUE, -1)

/mob/living/carbon/spirit/create_internal_organs()
internal_organs += new /obj/item/organ/lungs
Expand Down
3 changes: 1 addition & 2 deletions code/modules/mob/living/grabbing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -412,8 +412,7 @@
//addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon/human, werewolf_infect)), 3 MINUTES)
if(user.mind.has_antag_datum(/datum/antagonist/zombie))
var/mob/living/carbon/human/H = C
if(prob(25)) //Delay is handled in zombie infect anyways
H.zombie_infect()
H.zombie_infect_attempt()
//addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon/human, zombie_infect)), 3 MINUTES)
if(C.stat)
if(istype(limb_grabbed, /obj/item/bodypart/head))
Expand Down
35 changes: 26 additions & 9 deletions code/modules/roguetown/roguejobs/gravedigger/gravemarker.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,29 +45,46 @@
to_chat(src, "<span class='rose'>My soul finds peace buried in creation.</span>")


/obj/structure/gravemarker/OnCrafted(dir)
/obj/structure/gravemarker/OnCrafted(dir, user)
icon_state = "gravemarker[rand(1,3)]"
for(var/obj/structure/closet/dirthole/D in loc)
bodysearch(D)
bodysearch(D, user)
for(var/obj/structure/closet/burial_shroud/B in D)
bodysearch(B)
bodysearch(B, user)
..()

/obj/structure/gravemarker/proc/bodysearch(atom/movable/AM)
/obj/structure/gravemarker/proc/bodysearch(atom/movable/AM, mob/user)
if(!AM)
return
for(var/mob/living/L in AM)
if(L.stat == DEAD)
if(ishuman(L) && !HAS_TRAIT(L, TRAIT_BURIED_COIN_GIVEN))
var/mob/living/carbon/human/H = L
if(istype(H.mouth, /obj/item/roguecoin))
var/obj/item/roguecoin/coin = H.mouth
if(coin.quantity == 1) // no fucking stuffing their mouth full of a fuck ton of coins
for(var/obj/effect/landmark/underworld/A in GLOB.landmarks_list)
var/turf/T = get_turf(A)
T = locate(T.x + rand(-3, 3), T.y + rand(-3, 3), T.z)
new /obj/item/underworld/coin/notracking(T)
T.visible_message("<span class='warning'>A coin falls from above.</span>")
ADD_TRAIT(H, TRAIT_BURIED_COIN_GIVEN, TRAIT_GENERIC)
if(user?.ckey)
adjust_playerquality(0.1, user.ckey)
qdel(H.mouth)
H.update_inv_mouth()
break
if(L.mind && L.mind.has_antag_datum(/datum/antagonist/zombie))
L.mind.remove_antag_datum(/datum/antagonist/zombie)
var/mob/dead/observer/O
//We probably went to the underworld
if(!L.client)
var/client/friendo = GLOB.directory[lowertext(L.mind.key)]
if(friendo && istype(friendo.mob, /mob/living/carbon/spirit))
var/mob/living/carbon/spirit/lost_soul = friendo.mob
lost_soul = L.ghostize(force_respawn = TRUE)
qdel(lost_soul)
if(L.mind)
var/client/friendo = GLOB.directory[lowertext(L.mind.key)]
if(friendo && istype(friendo.mob, /mob/living/carbon/spirit))
var/mob/living/carbon/spirit/lost_soul = friendo.mob
lost_soul = L.ghostize(force_respawn = TRUE)
qdel(lost_soul)
else
O = L.ghostize(force_respawn = TRUE)
if(O)
Expand Down
Loading

0 comments on commit 98a3f1d

Please sign in to comment.