-
-
Notifications
You must be signed in to change notification settings - Fork 447
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
replaces bubblegum's bloody knuckles loot with philosopher's tome #20578
Conversation
who let this man COOK |
god bless that fuckin portal execute |
What's this??? Interesting and unique items from mining that aren't just reskinned eswords???? |
just learned what easing was so gonna be redoing the animations while trying to use those instead |
… I'M GONNA FUCKING KILL MYSELF
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code is a nightmare to look at, but i realize you're doing something that byond isn't designed for
var/turf/front = get_step(L.loc, (src.dir)) | ||
if(ismineralturf(front)) | ||
var/turf/closed/mineral/M = front | ||
M.attempt_drill() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what happens if attempt_drill doesn't work for whatever reason?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
double checked and it stops wherever it currently is and returns false, ending the animation
replaced phase++ with phase+1 in addtimers var/phase into just phase added returns also fixed animating people past crit
found the thing that makes people ash storm resistant so no farming a billion charges in one storm
head dev found the guilty gear strive audio so this is no longer in the pr, it's so zatover bros |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
animation code makes me want to vomit, but it looks fine and you've shown it functions
i look forward to the bugfix prs
if(blocks == 0) | ||
icon_state = "grimoireempty" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be on update_icon_state
inflict(thrownby, M, 0, FALSE) | ||
|
||
/obj/item/bloodbook/proc/tenderize(mob/living/user, mob/living/target, var/damage = 10) | ||
var/obj/item/bodypart/limb_to_hit = target.get_bodypart(user.zone_selected) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You're not checking if they have said limb, it will cause runtimes
var/armor = target.run_armor_check(limb_to_hit, MELEE, armour_penetration = 10) | ||
target.apply_damage(damage, BRUTE, limb_to_hit, armor, wound_bonus=CANT_WOUND) | ||
|
||
/obj/item/bloodbook/proc/sceneend(mob/living/target, mob/living/user, var/die = FALSE) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no vars in args
var/mob/living/M = hit_atom | ||
inflict(thrownby, M, 0, FALSE) | ||
|
||
/obj/item/bloodbook/proc/tenderize(mob/living/user, mob/living/target, var/damage = 10) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no vars in args. there's more than just here so replace it everywhere else too.
var/normaldam = 10 | ||
var/otherwisedam = 40 | ||
COOLDOWN_DECLARE(last_bigfinish) | ||
var/list/orelist = list(/obj/item/stack/ore/iron, /obj/item/stack/ore/uranium, /obj/item/stack/ore/gold, /obj/item/stack/ore/silver, /obj/item/stack/ore/diamond, /obj/item/stack/ore/bluespace_crystal, /obj/item/stack/ore/glass, /obj/item/stack/ore/plasma, /obj/item/stack/ore/titanium) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This can be a static list and it should be multiline
for(L in view(9, user)) | ||
if(L != user) | ||
log_combat(user, L, "directed a counter towards", src) | ||
to_chat(user, span_warning("[user] redirects incoming damage towards [L]!")) | ||
to_chat(L, span_userdanger("[user] shifts their damage onto you!")) | ||
inflict(user, L, retaliatedam, FALSE) | ||
return |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is supposed to just damage a single random person within a 9 tile radius?
if(blocks < 1) | ||
icon_state = "grimoire" | ||
blocks++ | ||
return |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't need a return at the end of a proc
target.color = "#ff0000" | ||
target.alpha = 100 | ||
|
||
/obj/item/bloodbook/proc/shatter(mob/living/simple_animal/target) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
your new thing(loc)
should use drop_location()
|
||
/obj/item/bloodbook/proc/tantrum(mob/living/user, mob/living/target, phase = 1, obj/hand, list/slamming) | ||
switch(phase) | ||
if(1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These float numbers should be defines that you will undefine after this proc, same for the ones under.
switch(phase) | ||
if(1) | ||
var/list/wrecking = list() | ||
var/obj/structure/prop/killhand/B = new(target.loc) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
remove single-letter var please
a little late on the review sorry bros 🥲 |
Document the changes in your pull request
Replaces the bloody knuckles drop with a new item called philosopher's tome, which can
parry to deflect damage
cause "explosions" to mine
grant ore from killing most enemies
do a few animations
The book starts off with 3 parry charges, that each recharge after 10 seconds. They can be used to activate a shield that immobilizes the user for one second and lasts for half a second. If damage is taken while the shield is up, it's undone when it goes down and the user gets a bonus parry charge along with being healed for 5 brute and burn and whatever brute/burn/stamina damage they took in that time. Whatever damage they took while shielded is redirected towards the nearest target as brute damage, with damage to nonanimals capping at 20. Targets within melee range are shoved away from the user a la disarm.
When inflicting damage, nonanimals by default take 10 brute with 10ap, while animals take 40. When the damage dealt makes the target cross the 60%, 30%, and 0% thresholds, an "explosion" happens, dealing a tenth of the target's max hp to non-user mobs within a range determined by the target's (maxhp/150)+1, with rocks within this range being mined too. This damage can cause chain reactions. Additionally, if the damage is done with a direct melee attack from the book, an animation will play. Damaging targets at the 30% and 60% thresholds will apply twice the usual damage.
While parrying, the user is unable to drop the book, go into crit, and will leave most crowd control effects placed on them after the shield expires in addition to extinguishing themself. To mitigate free parries, they won't care about pressure damage or temperature damage for the half second the shield is active.
https://cdn.discordapp.com/attachments/987151374007537714/1160534002634068030/dreamseeker_XojdrATr6f.gif?ex=65350283&is=65228d83&hm=3b5d7044dff9be244fa925579333a24614a6cd5d535146fee81b63cb629911bc&
If the target is catatonic or an animal and reaches 0 hp, they gib when killed and drop a few sheets of an ore (iron, gold, uranium, titanium, silver, diamond, bluespace, glass, or plasma). Otherwise if it's a player they just go into crit and can't be gibbed with this.
oh also i changed the goat king code a bit so it dropping loot was more straightforward and added a new sound for one of the finishers
bubbleblender.mp4
Why is this good for the game?
I regret bloody knuckles because in hindsight they're essentially a forcestick with a weak gimmick attached that doesn't offer any interesting new way to play miner and I believe this does.
Testing
Don't wanna spoil them by posting them all here but i made sure all the animations work along with making sure loot drops correctly and that fauna resume their behavior after the animations.
Spriting
sprites for the new book
Wiki Documentation
https://wiki.yogstation.net/wiki/Megafauna#Loot_3
Replacing the bloody knuckles line with something like
"Philosopher's tome, a book that can parry incoming attacks and mine rocks near targets that take enough damage."
Changelog
🆑
rscadd: Added philospher's tome loot
rscdel: Removed bloody knuckles from bg loot
tweak: tweaked the way goat king drops its loot
soundadd: added bubbleblender.ogg
imageadd: added sprites for philospher's tome
/:cl:
huge thanks to @thegoldencat413 for testing, feedback, and spriting of the item. additionally, thanks to @Chubbygummibear for code help, and thanks to @solwashere for helping me figure out what i wanted the item to be thematically