-
Notifications
You must be signed in to change notification settings - Fork 814
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
Shrike primo rework - Psychic Vortex #13123
Shrike primo rework - Psychic Vortex #13123
Conversation
Do you have a vid of it in action? Just wanna see it |
|
if(livingtarget.stat == DEAD) | ||
addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, update_icons)), 1 SECONDS) | ||
var/mob/living/carbon/xenomorph/xeno = owner | ||
owner.icon_state = "[xeno.xeno_caste.caste_name][xeno.is_a_rouny ? " rouny" : ""] Screeching" |
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 should be doing this on the mob instead iirc, taake a look at how queen charge and so works
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.
still no handle_special_state?
playsound(owner, 'sound/effects/seedling_chargeup.ogg', 60) | ||
ADD_TRAIT(owner, TRAIT_IMMOBILE, VORTEX_ABILITY_TRAIT) | ||
if(!do_after(owner, VORTEX_PULL_WINDUP_TIME, FALSE, owner, BUSY_ICON_DANGER)) | ||
for(var/atom/movable/victim in view(VORTEX_RANGE, owner.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.
use AS
for(var/turf/affected_tile in range(VORTEX_RANGE, owner.loc)) | ||
affected_tile.Shake(3, 3, 1 SECONDS) |
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.
RANGE_TURF + AS
for(var/i in affected_tile) | ||
var/atom/movable/affected = i |
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.
AS
if(!ishuman(affected) && !istype(affected, /obj/item) && !isdroid(affected)) | ||
affected.Shake(3, 3, 10) | ||
continue | ||
victim.throw_at(src, 5, 1, null, TRUE) | ||
qdel(src) | ||
if(ishuman(affected)) | ||
var/mob/living/carbon/human/H = affected |
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.
Why not check
if(human)
stuf()
continue
if(isitem), isdroid)
continue
stuf()
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.
ps use isitem()
if(do_after(owner, VORTEX_PUSH_WINDUP_TIME, FALSE, owner, BUSY_ICON_DANGER)) | ||
for(var/atom/movable/victim in range(VORTEX_RANGE, owner.loc)) | ||
if(victim == owner) | ||
continue | ||
if(victim.anchored) | ||
continue | ||
if(isliving(victim)) | ||
var/mob/living_target = victim | ||
if(living_target.stat == DEAD) | ||
continue | ||
victim.throw_at(targetturf, 3, 1, owner, 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.
Are you copy pasting the same code here 3 times?
Why not just use a while loop?
|
||
/datum/action/xeno_action/activable/psychic_vortex/proc/vortex_push() |
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.
autodoc
|
||
/datum/action/xeno_action/activable/psychic_vortex/proc/finish_charging() |
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.
ditto
|
||
/datum/action/xeno_action/activable/psychic_vortex/proc/vortex_pull() |
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.
ditto
if(livingtarget.stat == DEAD) | ||
addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, update_icons)), 1 SECONDS) | ||
var/mob/living/carbon/xenomorph/xeno = owner | ||
owner.icon_state = "[xeno.xeno_caste.caste_name][xeno.is_a_rouny ? " rouny" : ""] Screeching" |
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.
still no handle_special_state?
/datum/action/xeno_action/activable/psychic_vortex/proc/vortex_pull() | ||
playsound(owner, 'sound/effects/seedling_chargeup.ogg', 60) | ||
for(var/atom/movable/victim in range(VORTEX_RANGE, owner.loc)) | ||
if(victim.anchored) | ||
continue | ||
if(isliving(victim)) | ||
var/mob/living_target = victim | ||
if(living_target.stat == DEAD) | ||
continue | ||
victim.throw_at(owner, 3, 1, owner, FALSE) | ||
|
||
/obj/item/explosive/grenade/gravity | ||
name = "gravity grenade" | ||
desc = "A fleshy mass that seems way too heavy for its size. It seems to be vibrating." | ||
arm_sound = 'sound/voice/predalien_roar.ogg' | ||
greyscale_colors = "#3aaacc" | ||
greyscale_config = /datum/greyscale_config/xenogrenade | ||
det_time = 20 | ||
for(var/turf/affected_tile AS in RANGE_TURFS(VORTEX_RANGE, owner.loc)) | ||
affected_tile.Shake(3, 3, 1 SECONDS) | ||
for(var/atom/movable/affected AS in affected_tile) | ||
if(ishuman(affected)) | ||
var/mob/living/carbon/human/H = affected | ||
if(H.stat == DEAD) | ||
continue | ||
H.apply_effects(1,1) | ||
H.adjust_stagger(2) | ||
shake_camera(H, 2, 1) | ||
H.Shake(3, 3, 10) | ||
affected.Shake(3, 3, 10) | ||
continue | ||
if(isitem(affected) && isdroid(affected)) | ||
affected.Shake(3, 3, 10) | ||
continue |
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 super wack with the 3 for loops.
Do a single loop and check for everything there.
This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being auto closed in ~ 3 days, please address any outstanding review items and ensure your PR is finished, if these are all true and you are auto-staled anyway, you need to actively ask maintainers if your PR will be merged. Once you have done any of the previous actions then you should request a maintainer remove the stale label on your PR, to reset the stale timer. If you feel no maintainer will respond in that time, you may wish to close this PR youself, while you seek maintainer comment, as you will then be able to reopen the PR yourself |
vortex_pull() | ||
QDEL_NULL(particle_holder) | ||
REMOVE_TRAIT(owner, TRAIT_IMMOBILE, VORTEX_ABILITY_TRAIT) | ||
return fail_activate() |
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.
Why is this triggering fail, after successfully casting
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.
Good enough to merge I guess
About The Pull Request
Reworks primo ability entirely into an AOE pull and throw that is separated into three phases.
Why It's Good For The Game
Shrike primo was always underpowered, and for being a t4 it feels wrong! it is one of the most useless out there, this should hopefully make it a more competitive choice and give more thought into buying the t4 primo sooner rather then usually at the end of rounds and such.
Changelog
🆑
add: Replaces gravity greande with Psychic Vortex, a 3 stage channel ability to pull in objects and people.
balance: Rework Shrike primo into Psychic Vortex
sprites: Adds ability icon for Vortex
/:cl: