package com.planet_ink.coffee_mud.Common.interfaces; import com.planet_ink.coffee_mud.core.interfaces.*; import com.planet_ink.coffee_mud.core.*; import com.planet_ink.coffee_mud.core.collections.*; import com.planet_ink.coffee_mud.Abilities.interfaces.*; import com.planet_ink.coffee_mud.Areas.interfaces.*; import com.planet_ink.coffee_mud.Behaviors.interfaces.*; import com.planet_ink.coffee_mud.CharClasses.interfaces.*; import com.planet_ink.coffee_mud.Commands.interfaces.*; import com.planet_ink.coffee_mud.Common.interfaces.*; import com.planet_ink.coffee_mud.Exits.interfaces.*; import com.planet_ink.coffee_mud.Items.interfaces.*; import com.planet_ink.coffee_mud.Libraries.interfaces.*; import com.planet_ink.coffee_mud.Locales.interfaces.*; import com.planet_ink.coffee_mud.MOBS.interfaces.*; import com.planet_ink.coffee_mud.Races.interfaces.*; import java.util.List; /** * Although at one time a simple public variable object, the Social became an environmental * when it became import to be able to pass it as a tool of a message for various purposes. * It still retains much of its original awkwardness as can be seen in the method names. * Today the social is still mostly a variable storage unit, with a few methods to make use * of those variables. * * A social object exists not simply as one for each social command (smile, wiggy) but one * for each social variation (smile, smile self, smile bob). The Name() field holds the * full unique name of each social object, with ID only having "DefaultSocial". * * @see com.planet_ink.coffee_mud.core.interfaces.Environmental#Name() * @see com.planet_ink.coffee_mud.core.interfaces.Environmental#setName(String) * * Managed by the SocialsList library. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social * @see com.planet_ink.coffee_mud.Libraries.interfaces.SocialsList */ public interface Social extends Environmental, CMCommon { /** * Base name is the name of the social's command word. It is NOT unique to a social * object however, since a socials name usually includes its target extension. * * @return the base name */ public String baseName(); /** * You_see: what the player themself sees when they use this social. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#setYou_see(String) * @return what the player themself sees when they use this social. */ public String You_see(); /** * You_see: what the player themself sees when they use this social. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#You_see() * @param str what the player themself sees when they use this social. */ public void setYou_see(String str); /** * Third_party_sees: what everyone but the player and their target * sees when a player uses this social. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#setThird_party_sees(String) * @return the string everyone else sees */ public String Third_party_sees(); /** * Third_party_sees: what everyone but the player and their target * sees when a player uses this social. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#Third_party_sees() * @param str the string everyone else sees */ public void setThird_party_sees(String str); /** * Target_sees: what the target of this social sees when social is used on them. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#setTarget_sees(String) * @return what the target of this social sees when social is used on them */ public String Target_sees(); /** * Target_sees: what the target of this social sees when social is used on them. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#Target_sees() * @param str what the target of this social sees when social is used on them */ public void setTarget_sees(String str); /** * See_when_no_target: what the player sees when this social is used targeted, but * the target is not available. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#setSee_when_no_target(String) * @return the string seen by the player when the target has left */ public String See_when_no_target(); /** * See_when_no_target: what the player sees when this social is used targeted, but * the target is not available. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#See_when_no_target() * @param str the string seen by the player when the target has left */ public void setSee_when_no_target(String str); /** * The official CoffeeMud message code used as the source code for this social, * which reflects what the player is doing. Only certain codes allowed. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#setSourceCode(int) * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_SPEAK * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_HANDS * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_NOISE * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_NOISYMOVEMENT * @return the CMMsg social code, fully formed */ public int sourceCode(); /** * Sets the official CoffeeMud message code used as the source code for this social, * which reflects what the player is doing. Only certain codes allowed. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#sourceCode() * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_SPEAK * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_HANDS * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_NOISE * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_NOISYMOVEMENT * @param code the CMMsg social code, fully formed */ public void setSourceCode(int code); /** * The official CoffeeMud message code used as the others code for this social, * which reflects what the player appears to be doing. Only certain codes allowed. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#setOthersCode(int) * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_SPEAK * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_HANDS * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_NOISE * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_NOISYMOVEMENT * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_OK_VISUAL * @return the CMMsg social code, fully formed */ public int othersCode(); /** * Sets the official CoffeeMud message code used as the others code for this social, * which reflects what the player appears to be doing. Only certain codes allowed. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#othersCode() * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_SPEAK * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_HANDS * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_NOISE * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_NOISYMOVEMENT * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_OK_VISUAL * * @param code the CMMsg social code, fully formed */ public void setOthersCode(int code); /** * The official CoffeeMud message code used as the target code for this social, * which reflects what is being done to the target. Only certain codes allowed. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#setTargetCode(int) * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_SPEAK * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_HANDS * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_NOISE * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_NOISYMOVEMENT * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_OK_VISUAL * @return the CMMsg social code, fully formed */ public int targetCode(); /** * Sets the official CoffeeMud message code used as the target code for this social, * which reflects what is being done to the target. Only certain codes allowed. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#targetCode() * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_SPEAK * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_HANDS * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_NOISE * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_NOISYMOVEMENT * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg#MSG_OK_VISUAL * @param code the CMMsg social code, fully formed */ public void setTargetCode(int code); /** * Whether this social variation can be targeted. Is determined by whether * there is a target parameter in the name. * * @see com.planet_ink.coffee_mud.core.interfaces.Environmental#Name() * @param E The object to check to see if this is targetable against. * @return true, if it can be targeted */ public boolean targetable(Environmental E); /** * Returns the name of the MSP sound file associated with this social. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#setMSPfile(String) * @return the msp sound file name */ public String MSPfile(); /** * Sets the name of the MSP sound file associated with this social. * * @see com.planet_ink.coffee_mud.Common.interfaces.Social#MSPfile() * @param newFile the msp sound file name */ public void setMSPfile(String newFile); /** * Executes this social by the given mob, using the target provided, with * help from the provided command line strings in a vector, * and with override message code flag. It will generate a proper message * and send it to the same room as the mob. * * @param mob the source of the social action * @param commands the vector of strings * @param target the target of the social * @param auto true to override physical constraints of the source or target * * @return true, if successful */ public boolean invoke(MOB mob, List<String> commands, Physical target, boolean auto); /** * Manufactures a proper channel message that represents executing this * social over a public chat channel. * * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg * @see com.planet_ink.coffee_mud.Common.interfaces.Social#makeMessage(MOB, String, String, int, int, List, String, boolean) * * @param mob the mob doing the social * @param channelInt the channel int representing which chat channel * @param channelName the channel name of the chat channel * @param commands the commands as a string vector entered by the user * @param makeTarget true to create a fake target, or false to find a real one. * * @return the CMMsg that can now be sent to the world as a chat channel message */ public CMMsg makeChannelMsg(MOB mob, int channelInt, String channelName, List<String> commands, boolean makeTarget); /** * Manufactures a proper message that represents executing this social as an action * * @see com.planet_ink.coffee_mud.Common.interfaces.CMMsg * @see com.planet_ink.coffee_mud.Common.interfaces.Social#makeChannelMsg(MOB, int, String, List, boolean) * * @param mob the mob doing the social * @param str the str an optional "header" string for the msg, usually mxp related * @param end the end an optional "trailer" string for the msg, usually mxp related * @param srcMask the src mask to logically OR with the generated message source code * @param fullCode the override target and others code from the one in this social * @param commands the commands as a string vector entered by the user * @param I3channelName the i3channel name or null if n/a * @param makeTarget true to manufacture a target, or false to use a real one * * @return the CMMsg that can now be sent to the world as a chat channel message */ public CMMsg makeMessage(MOB mob, String str, String end, int srcMask, int fullCode, List<String> commands, String I3channelName, boolean makeTarget); /** * Returns the number of actions required to completely * activate this social. A value of 0.0 means perform * instantly. This method only applies when the user * is not in combat. * @see Social#combatActionsCost(MOB, List) * @see Social#checkedActionsCost(MOB, List) * @param mob the mob executing the social, if any * @param cmds the parameters to be passed to the social, if any * @return the number of player free actions required to do this */ public double actionsCost(final MOB mob, final List<String> cmds); /** * Returns the number of actions required to completely * activate this social. A value of 0.0 means perform * instantly. This method only applies when the user * is fighting in social. * @see Social#actionsCost(MOB, List) * @see Social#checkedActionsCost(MOB, List) * @param mob the mob executing the social, if any * @param cmds the parameters to be passed to the social, if any * @return the number of player free actions required to do this */ public double combatActionsCost(final MOB mob, final List<String> cmds); /** * Returns the number of actions required to completely * activate this social. A value of 0.0 means perform * instantly. This method only should check whether the * user is in combat and return a proper value. * @see Social#combatActionsCost(MOB, List) * @see Social#actionsCost(MOB, List) * @param mob the mob executing the social, if any * @param cmds the parameters to be passed to the social, if any * @return the number of player free actions required to do this */ public double checkedActionsCost(final MOB mob, final List<String> cmds); }