Ok I have some code solution candidates for review:
Gas immunity bones message bug
Fixed but needs testing (thanks Pent, Eagle V)
in game.cpp:
if(Name == PlayerName)
ADD_MESSAGE("This place is oddly familiar. Like you had been here in one of your past lives.");
else if(Player->StateIsActivated(GAS_IMMUNITY))
ADD_MESSAGE("You feel the cool breeze of death.");
else
ADD_MESSAGE("You smell the stench of death.");
The shop door creation bug
In room script file for dungeon shop in ELPURI_CAVE, wrote the following:
AllowLockedDoors = false;
AllowBoobyTrappedDoors = false;
Elite guard taming
Add the following to char.dat under elite guard:
TamingDifficulty = 30;
(need to check if this works satisfactorily, should it be 30 or 40?)
(can still tame it, but it is more difficult)
Wishing for ommel cerumen
Has been previously attended to; in material.dat:
CommonFlags = Base|IS_VALUABLE&~(CAN_BE_WISHED|CAN_BE_MIRRORED);
Library exploit
A missing logical inversion.
In rooms.cpp:
change:
truth library::AllowKick(ccharacter* Char, const lsquare* LSquare) const
{
return (!LSquare->GetStack()->GetItems()
|| !MasterIsActive() || Char == GetMaster()
|| GetMaster()->GetRelation(Char) == HOSTILE
|| LSquare->CanBeSeenBy(GetMaster()));
}
to:
truth library::AllowKick(ccharacter* Char, const lsquare* LSquare) const
{
return (!LSquare->GetStack()->GetItems()
|| !MasterIsActive() || Char == GetMaster()
|| GetMaster()->GetRelation(Char) == HOSTILE
|| !LSquare->CanBeSeenBy(GetMaster()));
}
The banana room exploit
As above, but more difficult to find.
In rooms.cpp:
Replace:
void bananadroparea::KickSquare(character* Kicker, lsquare* Square)
{
if(AllowKick(Kicker, Square) && Kicker->IsPlayer()
&& game::GetTeam(NEW_ATTNAM_TEAM)->GetRelation(Kicker->GetTeam())
!= HOSTILE)
with:
void bananadroparea::KickSquare(character* Kicker, lsquare* Square)
{
if(!AllowKick(Kicker, Square) && Kicker->IsPlayer()
&& game::GetTeam(NEW_ATTNAM_TEAM)->GetRelation(Kicker->GetTeam())
!= HOSTILE)
Mustard gas hostility bug (this is a darned tricky one)
Any suggestions?