git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9855 c06c8d41-db1a-0410-9941-cceddc491573
R4TQ3M6GL77RCITERZWQKMEMM3YAGJJE5J2MYOQPH26O5STVKSGAC
MRUMXF3YPJCHAW4DC7DHJR5O77LXAJLMA53IOJP4YEMAOZRNWNKAC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
VBRYPOHVS4GLHSQ5CE6K6GJTPK7FQE5VLRC5WLSOWKLQEDNPR7ZAC
3ZWALZFSTSIVYXY4BAY6ANGINTDACZC6RSSJTEMQSTSUIE66YOBQC
VXSORUQOM2VZA4CAZDC6KPAY373NQIN3UT7CXQXTRCYXO2WM62DAC
2U7VFZ3242P22EPRQKCIHFZRRWHHBZGOEEN2WJNMCXV5BEI67NNAC
JJULXW764V5C2HJKZNWQAEWB6QM5YZADD7ZCE35LYTBFEM6PMYCAC
C2PRXJYHDRF2642VDAUY76HJKCPQFGWDI6AM3SMCMYCHGWYDQXQQC
2NCKGJDDPPGP2NXYYPEPVRJIIWEP6M7HE6WYMQN3UNNN3C2JIRFQC
5OVWAD2MGK2NT6Q546KW7HZHELVDBBRC2CQX6VZMZF2YVRC7CPVAC
SG76BPJKTQGDFNP5QFMAVR6H72FMMAYCECVGSWWSCLMAVQX7E3FQC
}
// Returns the movement speed for a player ghost. Note that this is a real
// speed, not a movement cost, so higher is better.
int player_ghost_base_movement_speed()
{
int speed = (you.species == SP_NAGA ? 8 : 10);
if (player_mutation_level(MUT_FAST))
speed += player_mutation_level(MUT_FAST) + 1;
if (player_equip_ego_type(EQ_BOOTS, SPARM_RUNNING))
speed += 2;
// Cap speeds.
if (speed < 6)
speed = 6;
if (speed > 13)
speed = 13;
return (speed);
if (stricmp(you.your_name, "con") == 0
|| stricmp(you.your_name, "nul") == 0
|| stricmp(you.your_name, "prn") == 0
|| strnicmp(you.your_name, "LPT", 3) == 0)
if (stricmp(name, "con") == 0
|| stricmp(name, "nul") == 0
|| stricmp(name, "prn") == 0
|| strnicmp(name, "LPT", 3) == 0)
if (player_mutation_level(MUT_FAST))
speed += player_mutation_level(MUT_FAST) + 1;
if (player_equip_ego_type(EQ_BOOTS, SPARM_RUNNING))
speed += 2;
// Cap speeds.
if (speed < MIN_GHOST_SPEED)
speed = MIN_GHOST_SPEED;
else if (speed > MAX_GHOST_SPEED)
speed = MAX_GHOST_SPEED;
return (speed);
}
// Values greater than the allowed maximum signalize bugginess.
if (ghost.damage > MAX_GHOST_DAMAGE)
// Values greater than the allowed maximum or less then the allowed
// minimum signalize bugginess.
if (ghost.damage < 0 || ghost.damage > MAX_GHOST_DAMAGE)
return (false);
if (ghost.speed < MIN_GHOST_SPEED || ghost.speed > MAX_GHOST_SPEED)
return (false);
if (ghost.resists.fire < -3 || ghost.resists.fire > 3)
return (false);
if (ghost.resists.cold < -3 || ghost.resists.cold > 3)
return (false);
if (ghost.resists.elec < 0)
return (false);
if (ghost.brand < SPWPN_NORMAL || ghost.brand > MAX_PAN_LORD_BRANDS)
if (ghost.species < SP_HUMAN || ghost.species >= NUM_SPECIES)
return (false);
if (ghost.job < JOB_FIGHTER || ghost.job >= NUM_JOBS)
return (false);
if (ghost.best_skill < SK_FIGHTING || ghost.best_skill >= NUM_SKILLS)
return (false);
if (ghost.best_skill_level < 0 || ghost.best_skill_level > 27)
return (false);
if (ghost.religion < GOD_NO_GOD || ghost.religion >= NUM_GODS)
return (false);
if (ghost.brand == SPWPN_HOLY_WRATH || is_good_god(ghost.religion))
return (false);
// Only Pandemonium lords cycle colours.
if (ghost.cycle_colours)
return (false);
// Name validation.
if (!validate_player_name(ghost.name.c_str(), false))
return (false);
if (ghost.name.length() > (kNameLen - 1) || ghost.name.length() == 0)
return (false);
if (ghost.name != trimmed_string(ghost.name))
return (false);