Files
dsrc/sku.0/sys.server/compiled/game/script/library/event_perk.java
T
BloodCommando 1de8ba1ce4 Refinements to GMF Spooky Hand Adjustments
Removed variable declaration, duplicate playerLaugh and unneeded check if the player doesn't have the buff. Moved playerLaugh to play regardless as its what is intended.

Thanks to Aconite for helping me spot these.
2021-09-18 18:43:09 -04:00

381 lines
15 KiB
Java
Executable File

package script.library;
import script.location;
import script.obj_id;
import script.region;
import script.string_id;
public class event_perk extends script.base_script
{
public event_perk()
{
}
public static final String HALLOWEEN = new String("event/halloween");
public static final string_id STEALTHED = new string_id(HALLOWEEN, "stealthed");
public static final string_id TEN_COINS = new string_id(HALLOWEEN, "ten_coins");
public static final string_id TWELVE_COINS = new string_id(HALLOWEEN, "twelve_coins");
public static final string_id FIVE_COINS = new string_id(HALLOWEEN, "five_coins");
public static final string_id SIX_COINS = new string_id(HALLOWEEN, "six_coins");
public static final string_id STATIC_NPC = new string_id(HALLOWEEN, "static_npc");
public static final string_id REACHED_LIMIT = new string_id(HALLOWEEN, "reached_limit");
public static final string_id ZOZ = new string_id(HALLOWEEN, "zozpheratu");
public static final String COUNTER = new String("galacticCoinCounter.numberOfCoins");
public static final String COUNTER_TIMESTAMP = new String("galacticCoinCounter.timeStamp");
public static final String COUNTER_RESTARTTIME = new String("galacticCoinCounter.startTime");
public static final int COIN_LIMIT = 599;
public static final int COIN_AMOUNT_LOW = 5;
public static final int COIN_AMOUNT_HIGH = 10;
public static final int COIN_BONUS_LOW = 1;
public static final int COIN_BONUS_HIGH = 2;
public static final int LOCKOUT_LENGTH = 240;
public static final String LIST_VAR = new String("galacticMoonNpcList");
public static final string_id TOO_SOON = new string_id(HALLOWEEN, "too_soon");
public static final string_id SHAPECHANGE_SPACE = new string_id("spam", "shapechange_space");
public static final String DATATABLE = "datatables/event_perk/perk_data.iff";
public static final String STF_FILE = "event_perk";
public static final int COIN_LIMIT_OVERRIDE = utils.getIntConfigSetting("GameServer", "halloweenCoinLimit", event_perk.COIN_LIMIT);
public static boolean canPlaceEventPerkHere(obj_id self, obj_id player, location here) throws InterruptedException
{
if (!isIdValid(player) || (here == null))
{
return false;
}
if (isIdValid(here.cell))
{
sendSystemMessage(player, new string_id(STF_FILE, "not_inside"));
return false;
}
if (here.area.startsWith("space_"))
{
sendSystemMessage(player, new string_id(STF_FILE, "not_in_space"));
return false;
}
region bf = battlefield.getBattlefield(here);
if (bf != null)
{
sendSystemMessage(player, new string_id(STF_FILE, "not_in_battlefield"));
return false;
}
if (locations.isInMissionCity(here))
{
int city_id = getCityAtLocation(here, 0);
if (city_id == 0)
{
sendSystemMessage(player, new string_id(STF_FILE, "not_in_municipal_zone"));
return false;
}
if (cityExists(city_id) && city.isCityZoned(city_id) && isIdValid(player))
{
if (!city.hasZoningRights(player, city_id))
{
sendSystemMessage(player, new string_id(STF_FILE, "no_zoning_rights"));
return false;
}
}
}
if (tooCloseToSomething(here, player, self))
{
return false;
}
if (tooManyPerks(here, player))
{
return false;
}
return true;
}
public static boolean tooCloseToSomething(location here, obj_id player, obj_id self) throws InterruptedException
{
if (here == null || !isIdValid(player))
{
return true;
}
int numEventObjects = 0;
int deedNumber = getIntObjVar(self, "event_perk.deedNumber");
float range = dataTableGetFloat(DATATABLE, deedNumber, "RANGE");
if (range < 0)
{
return false;
}
obj_id[] objs = getNonCreaturesInRange(here, range);
if ((objs == null) || (objs.length == 0))
{
return false;
}
else
{
sendSystemMessage(player, new string_id(STF_FILE, "too_close_something"));
return true;
}
}
public static boolean tooManyPerks(location here, obj_id player) throws InterruptedException
{
int numPerkObjects = 0;
float range = 256;
obj_id[] objNPCs = getNPCsInRange(here, range);
obj_id[] objs = getNonCreaturesInRange(here, range);
if ((objs == null || objs.length == 0) && (objNPCs == null || objNPCs.length == 0))
{
return false;
}
else
{
for (obj_id item : objs) {
if (hasObjVar(item, "event_perk.lifeSpan")) {
numPerkObjects++;
if (numPerkObjects > 25) {
sendSystemMessage(player, new string_id(STF_FILE, "too_many_perks"));
return true;
}
}
}
for (obj_id item : objNPCs) {
if (hasObjVar(item, "event_perk.lifeSpan")) {
numPerkObjects++;
if (numPerkObjects > 25) {
sendSystemMessage(player, new string_id(STF_FILE, "too_many_perks"));
return true;
}
}
}
}
return false;
}
public static boolean canCallShuttle(obj_id self, obj_id player) throws InterruptedException
{
if (hasObjVar(self, "event_perk.shuttle.shuttle"))
{
sendSystemMessage(player, new string_id(STF_FILE, "already_have_shuttle"));
return false;
}
else
{
return true;
}
}
public static void increaseDailyCoinCounter(obj_id player) throws InterruptedException
{
if (!hasObjVar(player, COUNTER))
{
setObjVar(player, COUNTER, COIN_AMOUNT_LOW);
}
else
{
int currentCoinLimit = getIntObjVar(player, COUNTER);
int newCoinLimit = currentCoinLimit + COIN_AMOUNT_LOW;
setObjVar(player, COUNTER, newCoinLimit);
if (COIN_LIMIT_OVERRIDE != -1 && newCoinLimit > COIN_LIMIT_OVERRIDE)
{
buff.applyBuff(player, "event_halloween_coin_limit");
}
}
}
public static void playerLaugh(obj_id player) throws InterruptedException
{
if (buff.hasBuff(player, "event_halloween_costume_jawa"))
{
play2dNonLoopingSound(player, "sound/utinni.snd");
}
if (buff.hasBuff(player, "event_halloween_costume_droid"))
{
play2dNonLoopingSound(player, "sound/voc_dro_ig106_emote.snd");
}
if (buff.hasBuff(player, "event_halloween_costume_kowakian"))
{
play2dNonLoopingSound(player, "sound/voc_kowakian_laugh.snd");
}
if (buff.hasBuff(player, "event_halloween_costume_hutt_female"))
{
play2dNonLoopingSound(player, "sound/halloween_jabba.snd");
}
if (buff.hasBuff(player, "event_halloween_costume_toydarian"))
{
play2dNonLoopingSound(player, "sound/halloween_toydarian_laugh.snd");
}
}
public static void giveTreat(obj_id player, int quality) throws InterruptedException
{
obj_id pInv = utils.getInventoryContainer(player);
obj_id halloweenCoins = utils.getStaticItemInInventory(player, "item_event_halloween_coin");
if (quality == 2)
{
if (isIdValid(halloweenCoins))
{
int currentCoins = getCount(halloweenCoins);
setCount(halloweenCoins, currentCoins + COIN_AMOUNT_HIGH);
increaseDailyCoinCounter(player);
}
else
{
obj_id coins = static_item.createNewItemFunction("item_event_halloween_coin", pInv, COIN_AMOUNT_HIGH);
increaseDailyCoinCounter(player);
}
if (buff.hasBuff(player, "scary_halloween_hand"))
{
static_item.createNewItemFunction("item_event_halloween_coin", pInv, COIN_BONUS_HIGH);
increaseDailyCoinCounter(player);
sendSystemMessage(player, TWELVE_COINS);
}
else
{
sendSystemMessage(player, TEN_COINS);
}
playerLaugh(player);
}
if (quality == 1)
{
if (isIdValid(halloweenCoins))
{
int currentCoins = getCount(halloweenCoins);
setCount(halloweenCoins, currentCoins + COIN_AMOUNT_LOW);
increaseDailyCoinCounter(player);
}
else
{
obj_id coins = static_item.createNewItemFunction("item_event_halloween_coin", pInv, COIN_AMOUNT_LOW);
increaseDailyCoinCounter(player);
}
if (buff.hasBuff(player, "scary_halloween_hand"))
{
obj_id coins = static_item.createNewItemFunction("item_event_halloween_coin", pInv, COIN_BONUS_LOW);
increaseDailyCoinCounter(player);
playerLaugh(player);
sendSystemMessage(player, SIX_COINS);
}
if (!buff.hasBuff(player, "scary_halloween_hand"))
{
playerLaugh(player);
sendSystemMessage(player, FIVE_COINS);
}
}
if (!hasObjVar(player, event_perk.COUNTER_RESTARTTIME))
{
int now = getCalendarTime();
int secondsUntil = secondsUntilNextDailyTime(10, 0, 0);
int then = now + secondsUntil;
setObjVar(player, event_perk.COUNTER_RESTARTTIME, then);
}
}
public static void handlePayout(obj_id player, obj_id npc) throws InterruptedException
{
int trickTreatDialogue = rand(1, 5);
int trickOrTreat = rand(1, 100);
if (trickOrTreat < 51)
{
faceTo(npc, player);
doAnimationAction(npc, "shiver");
chat.chat(npc, player, chat.CHAT_STUTTER, new string_id(HALLOWEEN, "treat_" + trickTreatDialogue), chat.ChatFlag_targetOnly);
buff.applyBuff(npc, "event_halloween_trick_cooldown");
giveTreat(player, 1);
}
else
{
faceTo(npc, player);
doAnimationAction(npc, "laugh");
chat.chat(npc, player, chat.CHAT_SAY, new string_id(HALLOWEEN, "trick_" + trickTreatDialogue), chat.ChatFlag_targetOnly);
buff.applyBuff(npc, "event_halloween_trick_cooldown");
utils.setScriptVar(npc, "readyForTrickFromPlayer." + player, player);
}
}
public static boolean newDayOrNot(obj_id player) throws InterruptedException
{
if (hasObjVar(player, event_perk.COUNTER_TIMESTAMP))
{
int now = getCalendarTime();
int then = getIntObjVar(player, event_perk.COUNTER_TIMESTAMP);
if (now > then)
{
return true;
}
else
{
return false;
}
}
if (hasObjVar(player, event_perk.COUNTER_RESTARTTIME))
{
int now = getCalendarTime();
int then = getIntObjVar(player, event_perk.COUNTER_RESTARTTIME);
if (now > then)
{
return true;
}
else
{
return false;
}
}
return true;
}
public static boolean timeStampCheck(obj_id player) throws InterruptedException
{
if (newDayOrNot(player))
{
if (buff.hasBuff(player, "event_halloween_coin_limit"))
{
buff.removeBuff(player, "event_halloween_coin_limit");
if (hasObjVar(player, event_perk.COUNTER))
{
removeObjVar(player, event_perk.COUNTER);
}
if (hasObjVar(player, event_perk.COUNTER_TIMESTAMP))
{
removeObjVar(player, event_perk.COUNTER_TIMESTAMP);
}
if (hasObjVar(player, event_perk.COUNTER_RESTARTTIME))
{
removeObjVar(player, event_perk.COUNTER_RESTARTTIME);
}
return true;
}
else if (hasObjVar(player, event_perk.COUNTER))
{
if (hasObjVar(player, event_perk.COUNTER_RESTARTTIME))
{
int now = getCalendarTime();
int then = getIntObjVar(player, event_perk.COUNTER_RESTARTTIME);
if (now > then)
{
removeObjVar(player, event_perk.COUNTER_RESTARTTIME);
removeObjVar(player, event_perk.COUNTER);
return true;
}
}
int currentCoinCount = getIntObjVar(player, event_perk.COUNTER);
if (COIN_LIMIT_OVERRIDE != -1 && currentCoinCount > COIN_LIMIT_OVERRIDE)
{
buff.applyBuff(player, "event_halloween_coin_limit");
sendSystemMessage(player, event_perk.REACHED_LIMIT);
return false;
}
}
return true;
}
if (!newDayOrNot(player))
{
if (hasObjVar(player, event_perk.COUNTER))
{
int currentCoinCount = getIntObjVar(player, event_perk.COUNTER);
if (COIN_LIMIT_OVERRIDE != -1 && currentCoinCount > COIN_LIMIT_OVERRIDE)
{
if (!buff.hasBuff(player, "event_halloween_coin_limit"))
{
sendSystemMessage(player, event_perk.REACHED_LIMIT);
buff.applyBuff(player, "event_halloween_coin_limit");
return false;
}
sendSystemMessage(player, event_perk.REACHED_LIMIT);
return false;
}
}
return true;
}
sendSystemMessage(player, event_perk.REACHED_LIMIT);
if (!buff.hasBuff(player, "event_halloween_coin_limit"))
{
buff.applyBuff(player, "event_halloween_coin_limit");
}
return false;
}
}