|
693 | 693 |
|
694 | 694 | /datum/action/cooldown/spell/pointed/null_burst/proc/spawn_ground(turf/target) |
695 | 695 | new /obj/effect/temp_visual/darkspawn/chasm(target) |
| 696 | + |
| 697 | +////////////////////////////////////////////////////////////////////////// |
| 698 | +//----------------------I stole genetics fire breath--------------------// |
| 699 | +////////////////////////////////////////////////////////////////////////// |
| 700 | +/datum/action/cooldown/spell/cone/staggered/shadowflame |
| 701 | + name = "Fire Breath" |
| 702 | + desc = "You breathe a cone of fire directly in front of you." |
| 703 | + button_icon_state = "fireball" |
| 704 | + sound = 'sound/magic/demon_dies.ogg' //horrifying lizard noises |
| 705 | + |
| 706 | + school = SCHOOL_EVOCATION |
| 707 | + cooldown_time = 40 SECONDS |
| 708 | + invocation_type = INVOCATION_NONE |
| 709 | + spell_requirements = NONE |
| 710 | + antimagic_flags = NONE |
| 711 | + |
| 712 | + cone_levels = 3 |
| 713 | + respect_density = TRUE |
| 714 | + /// The range our user is thrown backwards after casting the spell |
| 715 | + var/self_throw_range = 1 |
| 716 | + /// The max point-blank damage dealt by the cone |
| 717 | + var/max_damage = 25 |
| 718 | + |
| 719 | +/datum/action/cooldown/spell/cone/staggered/shadowflame/do_turf_cone_effect(turf/target_turf, atom/caster, level) |
| 720 | + new /obj/effect/abstract/turf_fire/shadow(target_turf, power, fire_color) |
| 721 | + // Further turfs experience less exposed_temperature and exposed_volume |
| 722 | + new /obj/effect/hotspot(target_turf) // for style |
| 723 | + target_turf.hotspot_expose(max(500, 900 - (100 * level)), max(50, 200 - (50 * level)), 1) |
| 724 | + |
| 725 | +/datum/action/cooldown/spell/cone/staggered/shadowflame/do_mob_cone_effect(mob/living/target_mob, atom/caster, level) |
| 726 | + target_mob.adjust_fire_stacks(20, /datum/status_effect/fire_handler/fire_stacks/shadowflame) |
| 727 | + target_mob.ignite_mob() |
| 728 | + |
| 729 | + |
| 730 | +/// Cold purple turf fire |
| 731 | +/obj/effect/abstract/turf_fire/shadow |
| 732 | + light_power = -1.5 |
| 733 | + light_color = COLOR_VELVET |
| 734 | + interact_with_atmos = FALSE //we don't interact with atmos, but we do lose power over time, despite technically being magical |
| 735 | + hex_color = COLOR_VELVET |
| 736 | + |
| 737 | + |
| 738 | +//might be WAY too dark |
| 739 | +/particles/embers/shadow |
| 740 | + gradient = list(COLOR_VELVET, COLOR_DARKSPAWN_PSI, COLOR_BLACK) |
| 741 | + |
| 742 | + |
| 743 | +////////////////////////////////////////////////////////////////////////// |
| 744 | +//--------------------------Cold Fire instead of hot--------------------// |
| 745 | +////////////////////////////////////////////////////////////////////////// |
| 746 | +/obj/effect/dummy/lighting_obj/moblight/shadowflame |
| 747 | + name = "fire" |
| 748 | + light_color = COLOR_VELVET |
| 749 | + light_range = LIGHT_RANGE_FIRE |
| 750 | + light_power = -1 |
| 751 | + |
| 752 | +/datum/status_effect/fire_handler/fire_stacks/shadowflame |
| 753 | + particle_type = /particles/embers/shadow |
| 754 | + moblight_type = /obj/effect/dummy/lighting_obj/moblight/shadowflame |
| 755 | + //how cold this fire is |
| 756 | + var/temperature = 0 |
| 757 | + |
| 758 | +//no hotspot |
| 759 | +/datum/status_effect/fire_handler/fire_stacks/shadowflame/deal_damage(seconds_per_tick) |
| 760 | + if(is_team_darkspawn(owner)) |
| 761 | + return |
| 762 | + owner.on_fire_stack(seconds_per_tick, src) |
| 763 | + |
| 764 | +/datum/status_effect/fire_handler/fire_stacks/shadowflame/harm_human(seconds_per_tick, no_protection = FALSE) |
| 765 | + var/mob/living/carbon/human/victim = owner |
| 766 | + var/thermal_multiplier = 1 - victim.get_cold_protection(temperature) |
| 767 | + |
| 768 | + var/calculated_cooling = (BODYTEMP_COOLING_MAX - (stacks * 12)) * 0.5 * seconds_per_tick * thermal_multiplier |
| 769 | + victim.adjust_bodytemperature(calculated_cooling, temperature) |
| 770 | + |
| 771 | + if(HAS_TRAIT(victim, TRAIT_RESISTCOLD) || !calculated_cooling) |
| 772 | + SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "on_fire") |
| 773 | + else |
| 774 | + SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire) |
0 commit comments