-
Notifications
You must be signed in to change notification settings - Fork 55
Reimplements Visceratika #739
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
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -9,146 +9,253 @@ | |||||||||||||||||||||||||||||
| name = "Visceratika power name" | ||||||||||||||||||||||||||||||
| desc = "Visceratika power description" | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| activate_sound = 'modular_darkpack/modules/deprecated/sounds/visceratika.ogg' | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| //WHISPERS OF THE CHAMBER | ||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/whispers_of_the_chamber | ||||||||||||||||||||||||||||||
| name = "Whispers of the Chamber" | ||||||||||||||||||||||||||||||
| desc = "Sense everyone in the same area as you." | ||||||||||||||||||||||||||||||
| activate_sound = 'modular_darkpack/modules/powers/sounds/visceratika.ogg' | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline/visceratika/post_gain() | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| // it is rumored that, if a non-gargoyle kindred were to learn Visceratika, their skin would turn stony | ||||||||||||||||||||||||||||||
| owner.skin_tone = "albino" | ||||||||||||||||||||||||||||||
| owner.set_body_sprite("gargoyle") | ||||||||||||||||||||||||||||||
| owner.update_body_parts() | ||||||||||||||||||||||||||||||
| owner.update_body() | ||||||||||||||||||||||||||||||
| // since dot 4 is always active and requires no roll | ||||||||||||||||||||||||||||||
| if(level >= 4) | ||||||||||||||||||||||||||||||
| owner.physiology.brute_mod *= 0.8 | ||||||||||||||||||||||||||||||
| owner.physiology.heat_mod *= 0.5 | ||||||||||||||||||||||||||||||
| //owner.physiology.clone_mod *= 0.9 | ||||||||||||||||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. agg_mod? |
||||||||||||||||||||||||||||||
| //ADD_TRAIT(owner, TRAIT_IGNOREDAMAGESLOWDOWN, TRAIT_GENERIC) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_NOSOFTCRIT, DISCIPLINE_TRAIT) | ||||||||||||||||||||||||||||||
| if(!(owner.is_clan(/datum/subsplat/vampire_clan/gargoyle))) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_MASQUERADE_VIOLATING_FACE, DISCIPLINE_TRAIT) | ||||||||||||||||||||||||||||||
|
Comment on lines
+22
to
+29
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In most code rn this is done on the gain of the disc power instead...
Comment on lines
+28
to
+29
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I dont see a reason to have a check for gargy here. The point of trait sources is so we can apply them with overlap like this. |
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| //SKIN OF THE CHAMELEON | ||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/skin_of_the_chameleon | ||||||||||||||||||||||||||||||
| name = "Skin of the Chameleon" | ||||||||||||||||||||||||||||||
| desc = "Change your skin to become a reasonable fascimile of whatever your surroundings are, allowing you increased stealth." | ||||||||||||||||||||||||||||||
| level = 1 | ||||||||||||||||||||||||||||||
| check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | ||||||||||||||||||||||||||||||
| cooldown_length = 2 SCENES | ||||||||||||||||||||||||||||||
| duration_length = 1 SCENES | ||||||||||||||||||||||||||||||
| cancelable = TRUE | ||||||||||||||||||||||||||||||
| vitae_cost = 1 | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| cooldown_length = 5 SECONDS | ||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/skin_of_the_chameleon/activate() | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| skin_chameleon_run() | ||||||||||||||||||||||||||||||
| RegisterSignal(owner, COMSIG_MOVE_INTENT_TOGGLED, PROC_REF(skin_chameleon_run)) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/whispers_of_the_chamber/activate() | ||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/skin_of_the_chameleon/deactivate(atom/target, direct) | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| for(var/mob/living/player in GLOB.player_list) | ||||||||||||||||||||||||||||||
| if(get_area(player) == get_area(owner)) | ||||||||||||||||||||||||||||||
| var/their_name = player.name | ||||||||||||||||||||||||||||||
| if(ishuman(player)) | ||||||||||||||||||||||||||||||
| var/mob/living/carbon/human/human_player = player | ||||||||||||||||||||||||||||||
| their_name = human_player.real_name | ||||||||||||||||||||||||||||||
| to_chat(owner, "- [their_name]") | ||||||||||||||||||||||||||||||
| UnregisterSignal(owner, COMSIG_MOVE_INTENT_TOGGLED) | ||||||||||||||||||||||||||||||
| owner.alpha = 255 | ||||||||||||||||||||||||||||||
| remove_wibbly_filters(owner) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/skin_of_the_chameleon/proc/skin_chameleon_run() | ||||||||||||||||||||||||||||||
| SIGNAL_HANDLER | ||||||||||||||||||||||||||||||
| if(owner.move_intent == MOVE_INTENT_RUN) | ||||||||||||||||||||||||||||||
| owner.alpha = 40 | ||||||||||||||||||||||||||||||
| apply_wibbly_filters(owner) | ||||||||||||||||||||||||||||||
| else | ||||||||||||||||||||||||||||||
| owner.alpha = 10 | ||||||||||||||||||||||||||||||
| remove_wibbly_filters(owner) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| //SCRY THE HEARTHSTONE | ||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/scry_the_hearthstone | ||||||||||||||||||||||||||||||
| name = "Scry the Hearthstone" | ||||||||||||||||||||||||||||||
| desc = "Sense the exact locations of individuals around you." | ||||||||||||||||||||||||||||||
| willpower_cost = 1 | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| level = 2 | ||||||||||||||||||||||||||||||
| check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_SEE | ||||||||||||||||||||||||||||||
| toggled = TRUE | ||||||||||||||||||||||||||||||
| var/area/starting_area | ||||||||||||||||||||||||||||||
| var/datum/storyteller_roll/scry_the_hearthstone/scry_roll | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| cancelable = TRUE | ||||||||||||||||||||||||||||||
| duration_length = 15 SECONDS | ||||||||||||||||||||||||||||||
| cooldown_length = 10 SECONDS | ||||||||||||||||||||||||||||||
| /datum/storyteller_roll/scry_the_hearthstone | ||||||||||||||||||||||||||||||
| bumper_text = "scry the hearthstone" | ||||||||||||||||||||||||||||||
| difficulty = 6 | ||||||||||||||||||||||||||||||
| applicable_stats = list(STAT_PERCEPTION, STAT_AWARENESS) | ||||||||||||||||||||||||||||||
|
Comment on lines
+74
to
+77
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 6 is default
Suggested change
Comment on lines
+74
to
+77
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/scry_the_hearthstone/activate() | ||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/scry_the_hearthstone/pre_activation_checks() | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_THERMAL_VISION, "Visceratika Scry the Hearthstone") | ||||||||||||||||||||||||||||||
| if(!scry_roll) | ||||||||||||||||||||||||||||||
| scry_roll = new() | ||||||||||||||||||||||||||||||
| if(scry_roll.st_roll(owner, owner) == ROLL_SUCCESS) | ||||||||||||||||||||||||||||||
| return TRUE | ||||||||||||||||||||||||||||||
| else | ||||||||||||||||||||||||||||||
| return FALSE | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/scry_the_hearthstone/deactivate() | ||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/scry_the_hearthstone/activate() | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_THERMAL_VISION, "Visceratika Scry the Hearthstone") | ||||||||||||||||||||||||||||||
| for(var/mob/living/player in GLOB.player_list) | ||||||||||||||||||||||||||||||
| if(get_area(player) == get_area(owner)) | ||||||||||||||||||||||||||||||
| var/their_name = player.name | ||||||||||||||||||||||||||||||
| if(ishuman(player)) | ||||||||||||||||||||||||||||||
| var/mob/living/carbon/human/human_player = player | ||||||||||||||||||||||||||||||
| their_name = human_player.real_name | ||||||||||||||||||||||||||||||
| to_chat(owner, "- [their_name]") | ||||||||||||||||||||||||||||||
|
Comment on lines
+90
to
+96
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This seems a little unneeded and is represented fine with thermal vision. its also based on area and shows real name for little reason..
Comment on lines
+90
to
+96
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This seems a little redundant with the existence of the thermal vision and it doesn't play super well with the fact areas aren't super consistent, dont normally represent a full building. |
||||||||||||||||||||||||||||||
| starting_area = get_area(owner) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_THERMAL_VISION, DISCIPLINE_TRAIT) | ||||||||||||||||||||||||||||||
| owner.update_sight() | ||||||||||||||||||||||||||||||
| //visceratika 2 gives a gargoyle a heatmap of all living people in a building. if they leave the building, they need to re-cast it. | ||||||||||||||||||||||||||||||
| RegisterSignal(owner, COMSIG_EXIT_AREA, PROC_REF(on_area_exited)) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/scry_the_hearthstone/proc/on_area_exited(atom/movable/source, area/old_area) | ||||||||||||||||||||||||||||||
| SIGNAL_HANDLER | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| to_chat(owner, span_warning("You lose your connection to the stone as you leave the area.")) | ||||||||||||||||||||||||||||||
| starting_area = null | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_THERMAL_VISION, DISCIPLINE_TRAIT) | ||||||||||||||||||||||||||||||
| owner.update_sight() | ||||||||||||||||||||||||||||||
| UnregisterSignal(owner, COMSIG_EXIT_AREA) | ||||||||||||||||||||||||||||||
| try_deactivate() | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| //BOND WITH THE MOUNTAIN | ||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/bond_with_the_mountain | ||||||||||||||||||||||||||||||
| name = "Bond with the Mountain" | ||||||||||||||||||||||||||||||
| desc = "Merge with your surroundings and become difficult to see." | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| level = 3 | ||||||||||||||||||||||||||||||
| check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_LYING | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | ||||||||||||||||||||||||||||||
| vitae_cost = 2 | ||||||||||||||||||||||||||||||
| cancelable = TRUE | ||||||||||||||||||||||||||||||
| duration_length = 15 SECONDS | ||||||||||||||||||||||||||||||
| toggled = TRUE | ||||||||||||||||||||||||||||||
| duration_length = 0 | ||||||||||||||||||||||||||||||
| cooldown_length = 10 SECONDS | ||||||||||||||||||||||||||||||
| var/turf/exit_turf | ||||||||||||||||||||||||||||||
| var/turf/stone_turf | ||||||||||||||||||||||||||||||
|
Comment on lines
+125
to
+126
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. with how these are used. they could both be weakrefed pretty easy |
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/bond_with_the_mountain/pre_activation_checks() | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| for(var/turf/closed/adjacent in orange(1, owner)) | ||||||||||||||||||||||||||||||
| stone_turf = adjacent | ||||||||||||||||||||||||||||||
| break | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| if(!stone_turf) | ||||||||||||||||||||||||||||||
| to_chat(owner, span_warning("You must be adjacent to a stone surface to bond with the mountain.")) | ||||||||||||||||||||||||||||||
| return FALSE | ||||||||||||||||||||||||||||||
| return TRUE | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/bond_with_the_mountain/activate() | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| owner.alpha = 10 | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/bond_with_the_mountain/deactivate() | ||||||||||||||||||||||||||||||
| exit_turf = get_turf(owner) | ||||||||||||||||||||||||||||||
| to_chat(owner, span_purple("You begin to sink into the stone...")) | ||||||||||||||||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. span_purple seems kinda random.
Suggested change
|
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| if(!do_after(owner, 2 TURNS)) | ||||||||||||||||||||||||||||||
| to_chat(owner, span_warning("Your bond with the nearby stone is interrupted!")) | ||||||||||||||||||||||||||||||
| exit_turf = null | ||||||||||||||||||||||||||||||
| return FALSE | ||||||||||||||||||||||||||||||
| owner.forceMove(stone_turf) | ||||||||||||||||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In theory if our code works as intended you can do this after you add the trait and just step normally (which might make it look smoother?)
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. if code works u could step after u add the trait. |
||||||||||||||||||||||||||||||
| owner.alpha = 30 | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_BOND_WITHIN_THE_MOUNTAIN, DISCIPLINE_TRAIT) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_IMMOBILIZED, DISCIPLINE_TRAIT) | ||||||||||||||||||||||||||||||
| owner.density = FALSE | ||||||||||||||||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What does setting density even do here? |
||||||||||||||||||||||||||||||
| owner.damage_deflection = 3 TTRPG_DAMAGE | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/bond_with_the_mountain/deactivate(forced = TRUE) | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| owner.alpha = 255 | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_IMMOBILIZED, DISCIPLINE_TRAIT) | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_BOND_WITHIN_THE_MOUNTAIN, DISCIPLINE_TRAIT) | ||||||||||||||||||||||||||||||
| owner.density = TRUE | ||||||||||||||||||||||||||||||
| owner.damage_deflection = 0 | ||||||||||||||||||||||||||||||
| if(forced) //only false when using visceratika 5. we inherit the alpha from this ability and when visceratika 5 deactivates, return to 255 | ||||||||||||||||||||||||||||||
| if(exit_turf) | ||||||||||||||||||||||||||||||
| owner.forceMove(exit_turf) | ||||||||||||||||||||||||||||||
| owner.alpha = 255 | ||||||||||||||||||||||||||||||
| exit_turf = null | ||||||||||||||||||||||||||||||
| stone_turf = null | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| //ARMOR OF TERRA | ||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/armor_of_terra | ||||||||||||||||||||||||||||||
| name = "Armor of Terra" | ||||||||||||||||||||||||||||||
| desc = "Solidify into stone and become invulnerable." | ||||||||||||||||||||||||||||||
| desc = "This power requires no roll and is always active. Your stony skin has hardened to the point where nearly all damage against you is lessened." | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| level = 4 | ||||||||||||||||||||||||||||||
| check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_LYING | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| violates_masquerade = TRUE | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| toggled = TRUE | ||||||||||||||||||||||||||||||
| cooldown_length = 1 MINUTES | ||||||||||||||||||||||||||||||
| duration_length = 1 MINUTES | ||||||||||||||||||||||||||||||
| vitae_cost = 0 | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/armor_of_terra/activate() | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| addtimer(CALLBACK(src, PROC_REF(try_deactivate), null, TRUE), duration_length * 2) //failsafe (no, you can't stay in statue mode forever, 2 mins is enough) | ||||||||||||||||||||||||||||||
| to_chat(owner, span_warning("You harden your skin far more than you're able to take for long!")) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_STUNIMMUNE, MAGIC) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_PUSHIMMUNE, MAGIC) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_NOBLEED, MAGIC_TRAIT) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_MUTE, STATUE_MUTE) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_IMMOBILIZED, MAGIC_TRAIT) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_HANDS_BLOCKED, MAGIC_TRAIT) | ||||||||||||||||||||||||||||||
| to_chat(owner, span_danger("This is a passive ability. The effects are already active!")) | ||||||||||||||||||||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. if we are gonna have a untoggleable passive it might be worth making the code skip these when building actions.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. might be better as just a toggle. otherwise we really need code to just not add true passives to the hud like this. |
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| owner.name_override = "Statue of [owner.real_name]" | ||||||||||||||||||||||||||||||
| owner.status_flags |= GODMODE | ||||||||||||||||||||||||||||||
| var/newcolor = list(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) | ||||||||||||||||||||||||||||||
| owner.add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| for(var/obj/stuff in owner.contents) //no stealing | ||||||||||||||||||||||||||||||
| ADD_TRAIT(stuff, TRAIT_NODROP, MAGIC) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/armor_of_terra/deactivate() | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| to_chat(owner, span_warning("You soften your skin, to your normal hardness.")) | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_STUNIMMUNE, MAGIC) | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_PUSHIMMUNE, MAGIC) | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_NOBLEED, MAGIC_TRAIT) | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_MUTE, STATUE_MUTE) | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_IMMOBILIZED, MAGIC_TRAIT) | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_HANDS_BLOCKED, MAGIC_TRAIT) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| owner.name_override = null | ||||||||||||||||||||||||||||||
| owner.status_flags &= GODMODE | ||||||||||||||||||||||||||||||
| owner.remove_atom_colour(FIXED_COLOUR_PRIORITY) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| for(var/obj/item/stuff in owner.contents) | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(stuff, TRAIT_NODROP, MAGIC) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| //FLOW WITHIN THE MOUNTAIN | ||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/flow_within_the_mountain | ||||||||||||||||||||||||||||||
| name = "Flow Within the Mountain" | ||||||||||||||||||||||||||||||
| desc = "Merge with solid stone, and move through it without disturbing it." | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| level = 5 | ||||||||||||||||||||||||||||||
| check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | ||||||||||||||||||||||||||||||
| vitae_cost = 2 | ||||||||||||||||||||||||||||||
| violates_masquerade = TRUE | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| cancelable = TRUE | ||||||||||||||||||||||||||||||
| duration_length = 15 SECONDS | ||||||||||||||||||||||||||||||
| duration_length = 1 SCENES // might be too long... | ||||||||||||||||||||||||||||||
| cooldown_length = 10 SECONDS | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/flow_within_the_mountain/try_activate() | ||||||||||||||||||||||||||||||
| // placed in try_activate instead of pre_activation_checks so as to not consume blood while running this check | ||||||||||||||||||||||||||||||
| if(!HAS_TRAIT(owner, TRAIT_BOND_WITHIN_THE_MOUNTAIN)) | ||||||||||||||||||||||||||||||
| to_chat(owner, span_notice("You must cast Bond with the Mountain first before using Flow within the Mountain")) | ||||||||||||||||||||||||||||||
| return FALSE | ||||||||||||||||||||||||||||||
| ..() | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/flow_within_the_mountain/activate() | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_PASS_THROUGH_WALLS, "Visceratika Flow Within the Mountain") | ||||||||||||||||||||||||||||||
| owner.alpha = 10 | ||||||||||||||||||||||||||||||
| var/datum/discipline_power/visceratika/bond_with_the_mountain/bond = discipline.get_power(/datum/discipline_power/visceratika/bond_with_the_mountain) | ||||||||||||||||||||||||||||||
| bond.deactivate(forced = FALSE) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_PASS_THROUGH_WALLS, DISCIPLINE_TRAIT) | ||||||||||||||||||||||||||||||
| apply_wibbly_filters(owner) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/flow_within_the_mountain/deactivate() | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| owner.alpha = 255 | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_PASS_THROUGH_WALLS, "Visceratika Flow Within the Mountain") | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_PASS_THROUGH_WALLS, DISCIPLINE_TRAIT) | ||||||||||||||||||||||||||||||
| remove_wibbly_filters(owner) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| // there has to be a better way to do this | ||||||||||||||||||||||||||||||
| /turf/closed/Enter(atom/movable/mover, atom/oldloc) | ||||||||||||||||||||||||||||||
| if(isliving(mover)) | ||||||||||||||||||||||||||||||
| var/mob/living/moving_mob = mover | ||||||||||||||||||||||||||||||
| if(HAS_TRAIT(moving_mob, TRAIT_PASS_THROUGH_WALLS) && (get_area(moving_mob) == get_area(src))) | ||||||||||||||||||||||||||||||
| if(HAS_TRAIT(moving_mob, TRAIT_PASS_THROUGH_WALLS)/* && (get_area(moving_mob) == get_area(src))*/) | ||||||||||||||||||||||||||||||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not sure if the area check (gargoyles passing thru walls can only travel thru walls within a particular area, not go from area to area, for ex, they cant go from the sewers into the chantry) is a lore thing or a balance thing so might need a ruling on that...
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Balance. It also prevents people from walking out into space/unintended parts of the map. Its kinda required unless we map better. |
||||||||||||||||||||||||||||||
| return TRUE | ||||||||||||||||||||||||||||||
| return ..() | ||||||||||||||||||||||||||||||
|
Comment on lines
+218
to
224
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Comment on lines
219
to
224
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /* | ||||||||||||||||||||||||||||||
| //ROCKHEART | ||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/rockheart | ||||||||||||||||||||||||||||||
| name = "Rockheart" | ||||||||||||||||||||||||||||||
| desc = "Solidify your innermost organs to prevent damage" | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| level = 6 | ||||||||||||||||||||||||||||||
| check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_LYING | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| violates_masquerade = FALSE | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| toggled = TRUE | ||||||||||||||||||||||||||||||
| cooldown_length = 1 MINUTES | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/rockheart/activate() | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| to_chat(owner, span_warning("You harden your internal organs, protecting you against many forms of damage and stakes!")) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_STUNIMMUNE, MAGIC) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_PUSHIMMUNE, MAGIC) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_NOBLEED, MAGIC_TRAIT) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_PIERCEIMMUNE, MAGIC_TRAIT) | ||||||||||||||||||||||||||||||
| ADD_TRAIT(owner, TRAIT_NEVER_WOUNDED, MAGIC_TRAIT) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| owner.stakeimmune = TRUE | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| /datum/discipline_power/visceratika/rockheart/deactivate() | ||||||||||||||||||||||||||||||
| . = ..() | ||||||||||||||||||||||||||||||
| to_chat(owner, span_warning("You soften your internal organs, to their normal durability.")) | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_STUNIMMUNE, MAGIC) | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_PUSHIMMUNE, MAGIC) | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_NOBLEED, MAGIC_TRAIT) | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_PIERCEIMMUNE, MAGIC_TRAIT) | ||||||||||||||||||||||||||||||
| REMOVE_TRAIT(owner, TRAIT_NEVER_WOUNDED, MAGIC_TRAIT) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| owner.stakeimmune = 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.