Skip to content

Commit

Permalink
Xeno fix for event (shiptest-ss13#2823)
Browse files Browse the repository at this point in the history
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

A ton of small tweaks, fixes, and balances to xenos for the event

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game

Bug fixes and makes xenos a little less powerful

<!-- Please add a short description of why you think these changes would
benefit the game. If you can't justify it in words, it might not be
worth adding. -->

## Changelog

:cl:
balance: some xeno stuff needed nerfs
fix: fixed a bunch of xeno issues
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

---------

Signed-off-by: FalloutFalcon <[email protected]>
Co-authored-by: thgvr <[email protected]>
  • Loading branch information
2 people authored and MysticalFaceLesS committed May 25, 2024
1 parent 9da0eee commit f974e5c
Show file tree
Hide file tree
Showing 8 changed files with 54 additions and 63 deletions.
4 changes: 4 additions & 0 deletions code/modules/mob/living/carbon/alien/alien.dm
Original file line number Diff line number Diff line change
Expand Up @@ -180,3 +180,7 @@
/mob/living/carbon/alien/on_standing_up()
. = ..()
update_icons()

/mob/living/carbon/alien/examine(mob/user)
. = ..()
. += "It's a strange creature."
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ Doesn't work on other aliens/AI.*/

/obj/effect/proc_holder/alien/sneak/fire(mob/living/carbon/alien/humanoid/user)
if(!active)
user.alpha = 25
user.alpha = 150
user.sneaking = TRUE
active = TRUE
to_chat(user, "<span class='noticealien'>You blend into the shadows...</span>")
Expand Down
6 changes: 2 additions & 4 deletions code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,7 @@
return

else //Maybe uses plasma in the future, although that wouldn't make any sense...
leaping = 1
weather_immunities += "lava"
leaping = TRUE
update_icons()
throw_at(leap_target, MAX_ALIEN_LEAP_DIST, 2, src, FALSE, TRUE, callback = CALLBACK(src, PROC_REF(leap_end)))

Expand All @@ -115,7 +114,6 @@
* the icons of the hunter.
*/
/mob/living/carbon/alien/humanoid/hunter/proc/leap_end()
leaping = 0
LAZYREMOVE(weather_immunities, "lava")
leaping = FALSE
update_icons()

3 changes: 2 additions & 1 deletion code/modules/mob/living/carbon/alien/special/alien_embryo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,8 @@

if(gib_on_success)
new_xeno.visible_message("<span class='danger'>[new_xeno] bursts out of [owner] in a shower of gore!</span>", "<span class='userdanger'>You exit [owner], your previous host.</span>", "<span class='hear'>You hear organic matter ripping and tearing!</span>")
owner.gib()
owner.adjustBruteLoss(200)
owner.cut_overlay(overlay)
else
new_xeno.visible_message("<span class='danger'>[new_xeno] wriggles out of [owner]!</span>", "<span class='userdanger'>You exit [owner], your previous host.</span>")
owner.adjustBruteLoss(40)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/alien/special/facehugger.dm
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
/// Whether or not this facehugger can actually impregnate targets
var/sterile = FALSE
/// How long it takes for a facehugger to impregnate a target once attached
var/pregnation_time = 10 SECONDS
var/pregnation_time = 5 SECONDS
/// How long it takes between coupling attempts
var/couple_retry_time = 15 SECONDS
/// The mob's internal mask version, stored within the mob when the facehugger isn't being used as an item.
Expand Down
48 changes: 24 additions & 24 deletions code/modules/mob/living/carbon/human/human_defense.dm
Original file line number Diff line number Diff line change
Expand Up @@ -284,30 +284,30 @@
return TRUE
apply_damage(damage, BRUTE, affecting, armor_block)

if(M.a_intent == INTENT_DISARM) //Always drop item in hand on first go. If no item exists, try to shove them back. If you share the tile with the target, slam them directly into the ground to stun them and slightly damage them.
var/obj/item/I = get_active_held_item()
if(I && dropItemToGround(I))
playsound(loc, 'sound/weapons/slash.ogg', 25, TRUE, -1)
visible_message("<span class='danger'>[M] disarms [src]!</span>", \
"<span class='userdanger'>[M] disarms you!</span>", "<span class='hear'>You hear aggressive shuffling!</span>", null, M)
to_chat(M, "<span class='danger'>You disarm [src]!</span>")
else if(get_dist(src, M) != 0)
playsound(loc, 'sound/weapons/pierce.ogg', 25, TRUE, -1)
var/shovetarget = get_edge_target_turf(M, get_dir(M, get_step_away(src, M)))
Knockdown(0.3 SECONDS)
throw_at(shovetarget, 4, 2, M, force = MOVE_FORCE_OVERPOWERING)
log_combat(M, src, "shoved")
visible_message("<span class='danger'>[M] tackles [src] down!</span>", \
"<span class='userdanger'>[M] shoves you with great force!</span>", "<span class='hear'>You hear aggressive shuffling followed by a loud thud!</span>", null, M)
to_chat(M, "<span class='danger'>You shove [src] with great force!</span>")
else
Paralyze(3 SECONDS)
adjustBruteLoss(5)
playsound(loc, 'sound/weapons/punch3.ogg', 25, TRUE, -1)
visible_message("<span class='danger'>[M] slams [src] into the floor!</span>", \
"<span class='userdanger'>[M] slams you into the ground!</span>", "<span class='hear'>You hear something slam loudly onto the floor!</span>", null, M)
to_chat(M, "<span class='danger'>You slam [src] into the floor beneath you!</span>")
log_combat(M, src, "slammed into the ground")
if(M.a_intent == INTENT_DISARM) //Always drop item in hand on first go. If no item exists, try to shove them back. If you share the tile with the target, slam them directly into the ground to stun them and slightly damage them.
var/obj/item/I = get_active_held_item()
if(I && dropItemToGround(I) && prob(50))
playsound(loc, 'sound/weapons/slash.ogg', 25, TRUE, -1)
visible_message("<span class='danger'>[M] disarms [src]!</span>", \
"<span class='userdanger'>[M] disarms you!</span>", "<span class='hear'>You hear aggressive shuffling!</span>", null, M)
to_chat(M, "<span class='danger'>You disarm [src]!</span>")
else if(get_dist(src, M) != 0)
playsound(loc, 'sound/weapons/pierce.ogg', 25, TRUE, -1)
var/shovetarget = get_edge_target_turf(M, get_dir(M, get_step_away(src, M)))
Knockdown(0.3 SECONDS)
throw_at(shovetarget, 4, 2, M, force = MOVE_FORCE_OVERPOWERING)
log_combat(M, src, "shoved")
visible_message("<span class='danger'>[M] tackles [src] down!</span>", \
"<span class='userdanger'>[M] shoves you with great force!</span>", "<span class='hear'>You hear aggressive shuffling followed by a loud thud!</span>", null, M)
to_chat(M, "<span class='danger'>You shove [src] with great force!</span>")
else
Paralyze(1 SECONDS)
adjustBruteLoss(5)
playsound(loc, 'sound/weapons/punch3.ogg', 25, TRUE, -1)
visible_message("<span class='danger'>[M] slams [src] into the floor!</span>", \
"<span class='userdanger'>[M] slams you into the ground!</span>", "<span class='hear'>You hear something slam loudly onto the floor!</span>", null, M)
to_chat(M, "<span class='danger'>You slam [src] into the floor beneath you!</span>")
log_combat(M, src, "slammed into the ground")

/mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L)

Expand Down
2 changes: 1 addition & 1 deletion code/modules/spells/spell.dm
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
smoke.start()


/obj/effect/proc_holder/spell/proc/cast(list/targets,mob/user = usr)
/obj/effect/proc_holder/spell/proc/cast(list/targets, mob/user = usr)
return

/obj/effect/proc_holder/spell/proc/view_or_range(distance = world.view, center=usr, type="view")
Expand Down
50 changes: 19 additions & 31 deletions code/modules/spells/spell_types/wizard.dm
Original file line number Diff line number Diff line change
Expand Up @@ -242,46 +242,34 @@
sound = 'sound/magic/repulse.ogg'
var/maxthrow = 5
var/sparkle_path = /obj/effect/temp_visual/gravpush
var/anti_magic_check = TRUE
var/repulse_force = MOVE_FORCE_EXTREMELY_STRONG

var/stun_amt = 5
action_icon_state = "repulse"

/obj/effect/proc_holder/spell/aoe_turf/repulse/cast(list/targets,mob/user = usr, stun_amt = 5)
/obj/effect/proc_holder/spell/aoe_turf/repulse/cast(list/hit_turfs, mob/user = usr)
var/list/thrownatoms = list()
var/atom/throwtarget
var/distfromcaster
playMagSound()
for(var/atom/movable/hit_target as anything in targets) //Done this way so things don't get thrown all around hilariously.
thrownatoms += hit_target

for(var/am in thrownatoms)
var/atom/movable/AM = am
for(var/turf/T in hit_turfs)
for(var/atom/movable/hit_target in T.contents)
thrownatoms += hit_target

for(var/thrown_atom in thrownatoms)
if(!ismovable(thrown_atom))
continue
var/atom/movable/AM = thrown_atom
if(AM == user || AM.anchored)
continue

if(ismob(AM))
var/mob/M = AM
if(M.anti_magic_check(anti_magic_check, FALSE))
continue

throwtarget = get_edge_target_turf(user, get_dir(user, get_step_away(AM, user)))
distfromcaster = get_dist(user, AM)
if(distfromcaster == 0)
if(isliving(AM))
var/mob/living/M = AM
M.Paralyze(40)
M.adjustBruteLoss(5)
shake_camera(AM, 2, 1)
to_chat(M, "<span class='userdanger'>You're slammed into the floor by [user]!</span>")
else
new sparkle_path(get_turf(AM), get_dir(user, AM)) //created sparkles will disappear on their own
if(isliving(AM))
var/mob/living/M = AM
shake_camera(AM, 2, 1)
var/atom/throwtarget = get_edge_target_turf(user, get_dir(user, get_step_away(AM, user)))
new sparkle_path(get_turf(AM), get_dir(user, AM)) //created sparkles will disappear on their own
if(isliving(AM))
var/mob/living/M = AM
shake_camera(AM, 2, 1)
if(stun_amt)
M.Paralyze(stun_amt)
to_chat(M, "<span class='userdanger'>You're thrown back by [user]!</span>")
AM.safe_throw_at(throwtarget, ((clamp((maxthrow - (clamp(distfromcaster - 2, 0, distfromcaster))), 3, maxthrow))), 1,user, force = repulse_force)//So stuff gets tossed around at the same time.
to_chat(M, "<span class='userdanger'>You're thrown back by [user]!</span>")
AM.safe_throw_at(throwtarget, ((clamp((maxthrow - (clamp(distfromcaster - 2, 0, distfromcaster))), 3, maxthrow))), 1,user, force = repulse_force)//So stuff gets tossed around at the same time.

/obj/effect/proc_holder/spell/aoe_turf/repulse/xeno //i fixed conflicts only to find out that this is in the WIZARD file instead of the xeno file?!
name = "Tail Sweep"
Expand All @@ -297,7 +285,7 @@
action_icon = 'icons/mob/actions/actions_xeno.dmi'
action_icon_state = "tailsweep"
action_background_icon_state = "bg_alien"
anti_magic_check = FALSE
stun_amt = 0

/obj/effect/proc_holder/spell/aoe_turf/repulse/xeno/cast(list/targets,mob/user = usr)
if(iscarbon(user))
Expand Down

0 comments on commit f974e5c

Please sign in to comment.