/* * HalflingSkills.java 1.0 Oct 9, 2002 * * Copyright (c) 2002 Cabochon Technologies, L.L.C. All Rights Reserved. */ package wyvern.lib.skills; import wyvern.lib.*; import wyvern.lib.properties.AddRemoveNotify; /** * Implements the "hide" and "show" commands. * * @version 1.0, Oct 9, 2002 * @author Steve Yegge */ public class HalflingSkills implements AddRemoveNotify, Command { /** * Notifies the property that it's being added. * @param obj the GameObject whose property list we're being * added to (in this case, the rakshasa player) * @author rhialto */ public void notifyAdd ( PropertyList obj ) { if ( !(obj instanceof Player ) ) { return; } Player p = (Player) obj; p.registerCommand ( "hide", this ); p.registerCommand ( "unhide", this ); } // end notifyAdd /** * Notifies the property that it's being removed. * @param obj the GameObject whose property list we're being * removed from (in this case, the naga player) * @author rhialto */ public void notifyRemove ( PropertyList obj ) { if ( !(obj instanceof Player )) return; Player p = (Player) obj; p.unregisterCommand ( "hide", this ); p.unregisterCommand ( "unhide", this ); } // end notifyRemove /** * Returns true for our commands. * @author rhialto */ public boolean knowsCommand ( String cmd ) { return cmd.equals ( "hide" ) || cmd.equals ( "unhide" ); } // end of knowsCommand /** * Returns our event. * @author rhialto */ public CommandEvent createEvent ( CommandEvent initial ) { return initial; } // end of createEvent /** * Executes the event. * @author rhialto */ public boolean execute ( CommandEvent event ) { Commandable agent = event.getAgent(); String verb = event.getVerb(); if ( verb.equals ( "hide" )) { if ( agent.hasProperty ( "invisible" )) { agent.message ( "You are already invisible." ); return false; } agent.message ( "You blend into the shadows." ); agent.setIntProperty ( "alpha", 50 ); agent.adjustIntProperty ( "invisible", 1 ); agent.invalidate(); } else { if ( !agent.hasProperty ( "invisible" )) { agent.message ( "You are already visible." ); return false; } agent.adjustIntProperty ( "invisible", -1 ); if ( !agent.hasProperty ( "invisible" )) { agent.message ( "You emerge from the shadows." ); agent.removeProperty ( "alpha" ); } else { agent.message ( "You are still invisible." ); } agent.invalidate(); } return true; } // end of execute } // end class HalflingSkills |