Mafia's Code

From Kolmafia
Revision as of 17:24, 1 February 2010 by imported>Bumcheekcity (→‎See if we are under the effects of Ode or Got Milk)
Jump to navigation Jump to search

Character

Under Hardcore or Ronin

KoLCharacter.canInteract();

This function returns true if the character is out of Hardcore or Ronin, false otherwise. It is essentially used to check mall access.

Items

Check if we have a certain Item

We can either use:

InventoryManager.hasItem( final int itemId )	
InventoryManager.hasItem( final int itemId, boolean shouldCreate )
InventoryManager.hasItem( final AdventureResult item )
InventoryManager.hasItem( final AdventureResult item, final boolean shouldCreate )

InventoryManager.hasItem( 1650, true );
InventoryManager.hasItem( ItemPool.MILK_OF_MAGNESIUM, true );

Essentially the top three overloaded functions call the bottom function, telling it NOT to create the item.

Setting "shouldCreate" to true will NOT create the item, instead it will find out if you COULD create the item.

hasItem() will return true if you have the item, or could create it and specify shouldCreate to be true.

The Item Pool

The Item Pool, at /objectpool/itempool/ItemPool.java is primarily a list of items, mapped to their item number. Its purpose is to make code more readable. ItemPool.UNDERWORLD_ACORN is much more obvious than "4274".

Effects

See if we are under the effects of Ode or Got Milk

KoLConstants.activeEffects.contains( ItemDatabase.ODE );
KoLConstants.activeEffects.contains( ItemDatabase.MILK );

Both of these are boolean variables.

See if we are under any effect

KoLConstants.activeEffects.contains( EffectPool.get( "Half-Astral"  ) );

Or we could add "Half-Astral" to the /objectpool/EffectPool.java file, and then use:

KoLConstants.activeEffects.contains( EffectPool.get( EffectPool.HALF_ASTRAL ) );

AdventureResult astral = EffectPool.get( EffectPool.HALF_ASTRAL );
KoLConstants.activeEffects.contains( astral );

This would have the advantage of only needing a single change should Jick ever decide to change the name of an effect.

Iteracting with the Player

A Yes/No dialogue box

if ( !InputFieldUtilities.confirm( "Are you sure you want to drink without ode?" ) )
{
	return false;
}

Is the Script being run unattended?

If Mafia is being run from the command line, or similar, a user may not be able to see, let alone answer, dialogue boxes. In this case:

StaticEntity.isHeadless()

returns true if the user can not respond to dialogue boxes.