Skip to content

Commit

Permalink
Fedhas rework part 1: piety gain
Browse files Browse the repository at this point in the history
Fedhas is a plant-themed god originally intended to support range
combat. The god gives you plant allies that you can move and fire
through allows you to create water to impede monster movement.
Unfortunately the current design gives access to too many allies that
are strong enough to carry the player through much of the game. These
are either permanent or long-lived yet are stationary or have movement
limitations, things that together encourage the player to lure monsters
to specific locations. As a result, Fedhas has a tedious play-style, and
this is reflected in the god's usage rate among players.

This commit is the first in a set that rework the god but in a way that
retains some of idea of supporting ranged combat. New Fedhas will use
only summoned allies and will allow less unfettered use of allies in
general. A github wiki page describing remaining and potential issues
with the rework is available here:

https://github.com/crawl/crawl/wiki/Fedhas-Rework

Part 1 removes Fedhas' appreciation of corpse decay as well as the
Fungal Bloom ability. I haven't touched the corpse violation, necromancy
conducts, and species restrictions for now, although those all need
addressing.
  • Loading branch information
gammafunk committed Sep 14, 2019
1 parent 9a1d66b commit 0bcac68
Show file tree
Hide file tree
Showing 13 changed files with 8 additions and 439 deletions.
1 change: 0 additions & 1 deletion crawl-ref/source/ability-type.h
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,6 @@ enum ability_type
ABIL_FEDHAS_PLANT_RING,
ABIL_FEDHAS_SPAWN_SPORES,
ABIL_FEDHAS_EVOLUTION,
ABIL_FEDHAS_FUNGAL_BLOOM,
// Cheibriados
ABIL_CHEIBRIADOS_TIME_STEP = 1151,
ABIL_CHEIBRIADOS_TIME_BEND,
Expand Down
6 changes: 0 additions & 6 deletions crawl-ref/source/ability.cc
Original file line number Diff line number Diff line change
Expand Up @@ -514,8 +514,6 @@ static const ability_def Ability_List[] =
0, 0, 0, 15, {fail_basis::invo}, abflag::none },

// Fedhas
{ ABIL_FEDHAS_FUNGAL_BLOOM, "Fungal Bloom",
0, 0, 0, 0, {fail_basis::invo}, abflag::none },
{ ABIL_FEDHAS_SUNLIGHT, "Sunlight",
2, 0, 50, 0, {fail_basis::invo, 30, 6, 20}, abflag::none },
{ ABIL_FEDHAS_EVOLUTION, "Evolution",
Expand Down Expand Up @@ -2864,10 +2862,6 @@ static spret _do_ability(const ability_def& abil, bool fail)
end_recall();
break;

case ABIL_FEDHAS_FUNGAL_BLOOM:
fedhas_fungal_bloom();
return spret::success;

case ABIL_FEDHAS_SUNLIGHT:
return fedhas_sunlight(fail);

Expand Down
1 change: 0 additions & 1 deletion crawl-ref/source/conduct-type.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ enum conduct_type
DID_HASTY, // Cheibriados
DID_CORPSE_VIOLATION, // Fedhas (Necromancy involving
// corpses/chunks).
DID_ROT_CARRION, // Fedhas (a corpse rotted)
DID_SOULED_FRIEND_DIED, // Zin
DID_ATTACK_IN_SANCTUARY, // Zin
DID_KILL_NONLIVING,
Expand Down
8 changes: 0 additions & 8 deletions crawl-ref/source/dat/descript/ability.txt
Original file line number Diff line number Diff line change
Expand Up @@ -481,14 +481,6 @@ Bring an orc corpse back to life. The orc will be an ally, even if it was not
already one before it died.
%%%%
# Fedhas
Fungal Bloom ability

Call up Fedhas to accelerate the natural process of decay, transforming all
corpses nearby into fast-growing, short-lived toadstools. Zombies, ghouls,
and necrophages are considered walking corpses, and are affected accordingly;
zombies rot into skeletons, and ghouls and necrophages rot away entirely,
granting no experience.
%%%%
Sunlight ability

Calls sunlight down over a small area of the dungeon. Monsters illuminated by
Expand Down
45 changes: 0 additions & 45 deletions crawl-ref/source/files.cc
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
#include "act-iter.h"
#include "areas.h"
#include "branch.h"
#include "butcher.h" // for fedhas_rot_all_corpses
#include "chardump.h"
#include "cloud.h"
#include "coordit.h"
Expand All @@ -45,7 +44,6 @@
#include "food.h" //for HUNGER_MAXIMUM
#include "ghost.h"
#include "god-abil.h"
#include "god-conduct.h" // for fedhas_rot_all_corpses
#include "god-companions.h"
#include "god-passive.h"
#include "hints.h"
Expand All @@ -70,7 +68,6 @@
#include "species.h"
#include "spl-summoning.h"
#include "stairs.h"
#include "stash.h" // for fedhas_rot_all_corpses
#include "state.h"
#include "stringutil.h"
#include "syscalls.h"
Expand Down Expand Up @@ -1130,45 +1127,6 @@ static void _do_lost_items()
item_was_lost(item);
}

/// Rot all corpses remaining on the level, giving Fedhas piety for doing so.
static void _fedhas_rot_all_corpses(const level_id& old_level)
{
bool messaged = false;
for (size_t mitm_index = 0; mitm_index < mitm.size(); ++mitm_index)
{
item_def &item = mitm[mitm_index];
if (!item.defined()
|| !item.is_type(OBJ_CORPSES, CORPSE_BODY)
|| item.props.exists(CORPSE_NEVER_DECAYS))
{
continue;
}

if (mons_skeleton(item.mon_type))
ASSERT(turn_corpse_into_skeleton(item));
else
{
item_was_destroyed(item);
destroy_item(mitm_index);
}

if (!messaged)
{
simple_god_message("'s fungi set to work.");
messaged = true;
}

const int piety = x_chance_in_y(2, 5) ? 2 : 1; // match fungal_bloom()
// XXX: deduplicate above ^
did_god_conduct(DID_ROT_CARRION, piety);
}

// assumption: CORPSE_NEVER_DECAYS is never set for seen corpses
LevelStashes *ls = StashTrack.find_level(old_level);
if (ls) // assert?
ls->rot_all_corpses();
}

/**
* Perform cleanup when leaving a level.
*
Expand All @@ -1187,9 +1145,6 @@ static bool _leave_level(dungeon_feature_type stair_taken,
{
bool popped = false;

if (you.religion == GOD_FEDHAS)
_fedhas_rot_all_corpses(old_level);

if (!you.level_stack.empty()
&& you.level_stack.back().id == level_id::current())
{
Expand Down
Loading

0 comments on commit 0bcac68

Please sign in to comment.