-
Notifications
You must be signed in to change notification settings - Fork 503
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
OneStar mobs small changes #8550
base: master
Are you sure you want to change the base?
Conversation
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.
If already_shooting
var only exists inside a single proc, then just move it there as /static/
.
code/modules/mob/living/carbon/superior_animal/stalker/stalker.dm
Outdated
Show resolved
Hide resolved
code/modules/mob/living/carbon/superior_animal/stalker/stalker.dm
Outdated
Show resolved
Hide resolved
code/modules/mob/living/carbon/superior_animal/stalker/stalker.dm
Outdated
Show resolved
Hide resolved
code/modules/mob/living/carbon/superior_animal/stalker/stalker.dm
Outdated
Show resolved
Hide resolved
code/modules/mob/living/carbon/superior_animal/stalker/stalker.dm
Outdated
Show resolved
Hide resolved
step_towards(A, target_location) | ||
step_towards(B, target_location) | ||
spawn(160 MILLISECONDS) | ||
spawn(1400 MILLISECONDS) |
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.
spawn(1400 MILLISECONDS) | |
spawn(14 SECONDS) |
@@ -557,7 +472,7 @@ Effects demand parent code, so ..() | |||
i-- | |||
shoot_minigun(A) | |||
shoot_minigun(B) | |||
sleep(500 MILLISECONDS) | |||
sleep(100 MILLISECONDS) |
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.
sleep(100 MILLISECONDS) | |
sleep(1 SECOND) |
@@ -600,6 +515,7 @@ Effects demand parent code, so ..() | |||
sparks.set_up(3, 0, get_turf(newmob.loc)) | |||
sparks.start() | |||
mobs_to_spawn-- | |||
playsound(src.loc, 'sound/effects/EMPulse.ogg', 50, 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.
playsound(src.loc, 'sound/effects/EMPulse.ogg', 50, 1) | |
playsound(loc, 'sound/effects/EMPulse.ogg', 50, 1) |
/mob/living/simple_animal/hostile/onestar_custodian/engineer/Life() | ||
if(!stasis && !AI_inactive) | ||
if(!stat) | ||
switch(stance) | ||
if(HOSTILE_STANCE_IDLE) | ||
target_mob = FindTarget() | ||
|
||
if(HOSTILE_STANCE_ATTACK) | ||
if(destroy_surroundings) | ||
DestroySurroundings() | ||
MoveToTarget() | ||
if(HOSTILE_STANCE_ATTACKING) | ||
if(destroy_surroundings) | ||
DestroySurroundings() | ||
MoveToTarget() |
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.
Lack of parent call can and will cause issues.
SEND_SIGNAL_OLD(src, COMSIG_MOB_LIFE)
, handle_stuff()
procs, and health checks are all missing.
/mob/living/simple_animal/hostile/onestar_custodian/engineer/MoveToTarget() | ||
if(!target_mob || SA_attackable(target_mob)) | ||
stance = HOSTILE_STANCE_IDLE | ||
if(target_mob in ListTargets(10)) | ||
OpenFire(target_mob) | ||
|
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.
/mob/living/simple_animal/hostile/onestar_custodian/engineer/MoveToTarget() | |
if(!target_mob || SA_attackable(target_mob)) | |
stance = HOSTILE_STANCE_IDLE | |
if(target_mob in ListTargets(10)) | |
OpenFire(target_mob) |
Literally identical to the proc it overrides.
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.
It overrides the parent proc:
/mob/living/simple_animal/hostile/proc/MoveToTarget()
stop_automated_movement = 1
if(!target_mob || SA_attackable(target_mob))
stance = HOSTILE_STANCE_IDLE
if(target_mob in ListTargets(10))
if(ranged)
if(get_dist(src, target_mob) <= 6 && !istype(src, /mob/living/simple_animal/hostile/megafauna))
OpenFire(target_mob)
else
set_glide_size(DELAY2GLIDESIZE(move_to_delay))
walk_to(src, target_mob, 1, move_to_delay)
if(ranged && istype(src, /mob/living/simple_animal/hostile/megafauna))
var/mob/living/simple_animal/hostile/megafauna/megafauna = src
sleep(rand(megafauna.megafauna_min_cooldown,megafauna.megafauna_max_cooldown))
if(istype(src, /mob/living/simple_animal/hostile/megafauna/one_star))
if(prob(rand(15,25)))
stance = HOSTILE_STANCE_ATTACKING
set_glide_size(DELAY2GLIDESIZE(move_to_delay))
walk_to(src, target_mob, 1, move_to_delay)
else
OpenFire(target_mob)
else
if(prob(45))
stance = HOSTILE_STANCE_ATTACKING
set_glide_size(DELAY2GLIDESIZE(move_to_delay))
walk_to(src, target_mob, 1, move_to_delay)
else
OpenFire(target_mob)
else
stance = HOSTILE_STANCE_ATTACKING
set_glide_size(DELAY2GLIDESIZE(move_to_delay))
walk_to(src, target_mob, 1, move_to_delay)
return 0`
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.
Okay, clearly I've been looking at /mob/living/simple_animal/hostile/megafauna/one_star/MoveToTarget()
at the time instead of /mob/living/simple_animal/hostile/proc/MoveToTarget()
.
Co-authored-by: SirRichardFrancis <[email protected]>
About The Pull Request
One Star faction:
Boss - Shotgun pattern doesnt aim at human directly, but instead fires in front of itself. Minigun behavior fixes. Addition of sounds for bot spawn action.
Stalker mk1 - became agile, small burst firing drone. Buffed HP, tested if its enough or too big. Walking sounds.
Stalker mk2 - big hp boy, slow, suppressing fire.
Engineer drone - cowardly, if you approach him it will stop shooting and will start running (or rather crawling) away, but will pursue if you are the one running away, yet will keep distance.
Custodial drone - shocks people, dealing agony damage, though is not very strong, but is very fast.
Why It's Good For The Game
Stalker not die 1 bullet = good
Enemy do unique stuff = good
Sounds = good
Testing
Tested Stalker's HPs with Wintermute and various melees. Tested Boss and other OS faction mobs. Haven't encountered bugs at the moment of merge.
Changelog
🆑
balance: Rebalanced One Star Stalkers.
fix: Fixed One Star boss attack patterns to be less clunky.
soundadd: Added some sounds to One Star mobs
/:cl: