mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-21 15:01:52 +00:00
* datumized spells * finished * last changes * conflict * Update code/datums/spells/alien_spells/transfer_plasma.dm * conflicts * shitty runtime fix until i get to this tomorrow * Update code/datums/spell.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spell_handler/alien_spell_handler.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/alien_spells/regurgitate.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/alien_spells/regurgitate.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/bloodcrawl.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/bloodcrawl.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/modules/antagonists/vampire/vampire_powers/hemomancer_powers.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/modules/antagonists/vampire/vampire_powers/vampire_powers.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/modules/awaymissions/mission_code/ruins/wizardcrash.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/modules/research/xenobiology/xenobiology.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/modules/mob/living/carbon/superheroes.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/conjure.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/ethereal_jaunt.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/emplosion.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/turf_teleport.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/wizard_spells.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/wizard_spells.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/game/dna/mutations/mutation_powers.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/wizard_spells.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/datums/spells/wizard_spells.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/game/dna/mutations/mutation_powers.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * Update code/game/gamemodes/miniantags/revenant/revenant_abilities.dm Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> * guess who just rework the entire malf ai actionsf ai * gc better --------- Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
38 lines
1.4 KiB
Plaintext
38 lines
1.4 KiB
Plaintext
/**
|
|
* A click based spell targeting system. The clicked atom will be used to determine who/what to target
|
|
*/
|
|
/datum/spell_targeting/click
|
|
use_intercept_click = TRUE
|
|
try_auto_target = TRUE
|
|
/// How big the radius around the clicked atom is to find clicked_atom suitable target. -1 is only the selected atom is considered
|
|
var/click_radius = 1
|
|
var/random_target_priority = SPELL_TARGET_CLOSEST
|
|
|
|
|
|
/datum/spell_targeting/click/choose_targets(mob/user, datum/spell/spell, params, atom/clicked_atom)
|
|
var/list/targets = list()
|
|
if(valid_target(clicked_atom, user, spell))
|
|
targets.Add(clicked_atom)
|
|
|
|
if(length(targets) >= max_targets || click_radius < 0)
|
|
return targets
|
|
|
|
var/list/found_others = list()
|
|
for(var/atom/target in range(click_radius, clicked_atom) - clicked_atom)
|
|
if(valid_target(target, user, spell))
|
|
found_others += target
|
|
|
|
if(max_targets >= length(found_others) + length(targets))
|
|
targets.Add(found_others)
|
|
else
|
|
switch(random_target_priority) //Add in the rest
|
|
if(SPELL_TARGET_RANDOM)
|
|
while(length(targets) < max_targets && length(found_others)) // Add the others
|
|
targets.Add(pick_n_take(found_others))
|
|
if(SPELL_TARGET_CLOSEST)
|
|
// Take the first X. Byond's view/range procs already keep distance in mind. Will have a bias towards the left targets due to this
|
|
targets += found_others.Copy(1, max_targets - length(targets) + 1)
|
|
|
|
return targets
|
|
|