mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-10-12 03:13:00 -04:00
Fixed issue with level rewards. Added new Golden Ticket event.
This commit is contained in:
@@ -1009,6 +1009,12 @@ public class ai extends script.base_script
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
boolean hasLoot = loot.addLoot(self);
|
||||
String goldenTicketActive = getConfigSetting("EventTeam", "goldenTicket");
|
||||
if(goldenTicketActive != null && goldenTicketActive.equals("true")) {
|
||||
for (obj_id killer : killers) {
|
||||
loot.addGoldenTicket(killer, self);
|
||||
}
|
||||
}
|
||||
boolean hasChanceToDropChroniclesLoot = false;
|
||||
if (hasObjVar(self, xp.VAR_TOP_GROUP))
|
||||
{
|
||||
|
||||
Regular → Executable
+42
@@ -174,6 +174,48 @@ public class loot extends script.base_script
|
||||
}
|
||||
return hasLoot;
|
||||
}
|
||||
public static boolean addGoldenTicket(obj_id player, obj_id corpse) throws InterruptedException{
|
||||
String goldenTicketActive = getConfigSetting("EventTeam", "goldenTicket");
|
||||
if(goldenTicketActive != null && goldenTicketActive.equals("true")
|
||||
&& !hasObjVar(player, "lottery.looted")
|
||||
&& getIntObjVar(player, "lottery.availableTickets") > 0) {
|
||||
obj_id broker = getObjIdObjVar(player, "lottery.broker");
|
||||
if(!isValidId(broker)) return false;
|
||||
Vector qualifiers = getResizeableIntArrayObjVar(broker, "lottery.qualifiers");
|
||||
if(qualifiers != null && qualifiers.contains(getPlayerStationId(player))) return false;
|
||||
int rng = rand(1,100);
|
||||
sendSystemMessage(player, "Rolled a " + rng, null);
|
||||
int dropChance = 2;
|
||||
try {
|
||||
dropChance = Integer.parseInt(getConfigSetting("EventTeam", "goldenTicketDropChance"));
|
||||
}
|
||||
catch(Exception e){}
|
||||
|
||||
if(rng <= dropChance) {
|
||||
String goldenTicket = "object/tangible/travel/travel_ticket/dungeon_ticket.iff";
|
||||
obj_id[] items = utils.getAllItemsInBankAndInventory(player);
|
||||
for (obj_id item : items){
|
||||
if (getTemplateName(item).equals(goldenTicket)){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
obj_id lootItem = createObject(goldenTicket, utils.getInventoryContainer(player), "");
|
||||
setName(lootItem, "A Golden Ticket");
|
||||
if(isValidId(lootItem)){
|
||||
setObjVar(player, "lottery.looted", 1);
|
||||
if(ai_lib.isHumanoid(corpse)){
|
||||
chat.chat(corpse, "...you... you've won, Charlie...");
|
||||
}
|
||||
play2dNonLoopingSound(player, "sound/utinni.snd");
|
||||
sendSystemMessage(player, "A particularly shiny Golden Ticket has been placed in your inventory!", null);
|
||||
LOG("live-lottery","Player " + getFirstName(player) + " (" + player + ") has looted a lottery ticket.");
|
||||
obj_id inv = utils.getInventoryContainer(corpse);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public static int getCashForLevel(String mobType, int level) throws InterruptedException
|
||||
{
|
||||
if (mobType == null || mobType.equals("") || level < 1)
|
||||
|
||||
@@ -492,6 +492,7 @@ public class base_player extends script.base_script
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public void grantLevelSpecificRewards(obj_id player, int newCombatLevel) throws InterruptedException{
|
||||
if(hasObjVar(player, "level.reward." + newCombatLevel)) return;
|
||||
obj_id inv = utils.getInventoryContainer(player);
|
||||
switch(newCombatLevel){
|
||||
case 20:
|
||||
@@ -508,6 +509,7 @@ public class base_player extends script.base_script
|
||||
String playerName = getName(player);
|
||||
obj_id reward = createObjectInInventoryAllowOverload(template, player);
|
||||
if(isIdValid(reward)){
|
||||
setObjVar(player, "level.reward." + level, true);
|
||||
sendSystemMessage(player, "A " + name + " has been placed in your inventory.", null);
|
||||
CustomerServiceLog("LevelItemRewards", "Player " + playerName + " (" + player + ") has been awarded the " + name + " for reaching Level " + level + ".");
|
||||
}
|
||||
@@ -12643,6 +12645,19 @@ public class base_player extends script.base_script
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public int setupLotteryListener(obj_id self, dictionary params) throws InterruptedException{
|
||||
listenToMessage(getObjIdObjVar(self, "lottery.broker"), "updateLotteryStatus");
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public int removeLotteryListener(obj_id self, dictionary params) throws InterruptedException{
|
||||
stopListeningToMessage(getObjIdObjVar(self, "lottery.broker"), "updateLotteryStatus");
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public int updateLotteryStatus(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
setObjVar(self, "lottery.availableTickets", params.getInt("available"));
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public boolean blog(String txt) throws InterruptedException
|
||||
{
|
||||
if (LOGGING_ON)
|
||||
|
||||
@@ -839,12 +839,12 @@ public class terminal_character_builder extends script.base_script
|
||||
"Mustafarian Injector",
|
||||
"Naboo Signaling Unit",
|
||||
};
|
||||
public static final String[] STELLA_OPTIONS =
|
||||
public static String[] stella_options =
|
||||
{
|
||||
"Spec-Ops Pack",
|
||||
"Buff me",
|
||||
"Healing Stims",
|
||||
"Toggle Chronicles Loot"
|
||||
"Toggle Chronicles Loot"
|
||||
};
|
||||
public static final String[] MEDICINE_OPTIONS =
|
||||
{
|
||||
@@ -1504,6 +1504,17 @@ public class terminal_character_builder extends script.base_script
|
||||
1,
|
||||
2
|
||||
};
|
||||
public int OnInitialize(obj_id self) throws InterruptedException{
|
||||
String goldenTicketActive = getConfigSetting("EventTeam", "goldenTicket");
|
||||
Vector<String> opts = new Vector<String>(Arrays.asList(stella_options));
|
||||
if(goldenTicketActive != null && goldenTicketActive.equals("true")){
|
||||
Vector qualifiers = new Vector();
|
||||
opts.add(0,"Lottery Status");
|
||||
setObjVar(self, "lottery.qualifiers", qualifiers);
|
||||
}
|
||||
stella_options = opts.toArray(new String[opts.size()]);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public boolean checkConfigSetting(String configString) throws InterruptedException
|
||||
{
|
||||
String enabled = toLower(getConfigSetting("CharacterBuilder", configString));
|
||||
@@ -6361,10 +6372,25 @@ public class terminal_character_builder extends script.base_script
|
||||
}
|
||||
refreshMenu(player, "Select the desired armor option", "Character Builder Terminal", HEROIC_JEWELRY_LIST, "handleHeroicJewelrySelect", false);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public void manageStellaOptions(obj_id player) throws InterruptedException{
|
||||
obj_id self = getSelf();
|
||||
|
||||
String goldenTicketActive = getConfigSetting("EventTeam", "goldenTicket");
|
||||
if(goldenTicketActive != null && goldenTicketActive.equals("true")) {
|
||||
if (!hasObjVar(player, "lottery.broker") && !hasObjVar(self, "lottery.over")) {
|
||||
stella_options[0] = "Start Lottery";
|
||||
} else if (hasObjVar(player, "lottery.looted") && !hasObjVar(player, "lottery.position") && !hasObjVar(self, "lottery.over")) {
|
||||
stella_options[0] = "Turn In Ticket";
|
||||
} else {
|
||||
stella_options[0] = "Lottery Status";
|
||||
}
|
||||
}
|
||||
}
|
||||
public void handleStellaOption(obj_id player) throws InterruptedException
|
||||
{
|
||||
refreshMenu(player, "Select the desired thingie", "Character Builder Terminal", STELLA_OPTIONS, "handleStellaOptions", false);
|
||||
manageStellaOptions(player);
|
||||
refreshMenu(player, "Select the desired thingie", "Character Builder Terminal", stella_options, "handleStellaOptions", false);
|
||||
}
|
||||
public int handleStellaOptions(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
@@ -6387,7 +6413,7 @@ public class terminal_character_builder extends script.base_script
|
||||
closeOldWindow(player);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
if (idx == -1 || idx > STELLA_OPTIONS.length)
|
||||
if (idx == -1 || idx > stella_options.length)
|
||||
{
|
||||
cleanScriptVars(player);
|
||||
return SCRIPT_CONTINUE;
|
||||
@@ -6410,14 +6436,90 @@ public class terminal_character_builder extends script.base_script
|
||||
cleanScriptVars(player);
|
||||
return SCRIPT_OVERRIDE;
|
||||
}
|
||||
String goldenTicketActive = getConfigSetting("EventTeam", "goldenTicket");
|
||||
if(goldenTicketActive == null || !goldenTicketActive.equals("true")) idx++;
|
||||
|
||||
switch (idx)
|
||||
{
|
||||
case 0:
|
||||
Vector qualifiers = getResizeableIntArrayObjVar(self, "lottery.qualifiers");
|
||||
|
||||
int maxTickets = 1000;
|
||||
try {
|
||||
maxTickets = Integer.parseInt(getConfigSetting("EventTeam", "goldenTicketsAvailable"));
|
||||
}
|
||||
catch(Exception e){}
|
||||
|
||||
int availableTickets = maxTickets;
|
||||
if(hasObjVar(self, "lottery.availableTickets")){
|
||||
availableTickets = getIntObjVar(self, "lottery.availableTickets");
|
||||
}
|
||||
else{
|
||||
setObjVar(self, "lottery.availableTickets", maxTickets);
|
||||
}
|
||||
dictionary tickets = new dictionary();
|
||||
if(!hasObjVar(player, "lottery.broker")){
|
||||
if(qualifiers != null && qualifiers.contains(getPlayerStationId(player))) break;
|
||||
// Start the lottery.
|
||||
setObjVar(player, "lottery.broker", self);
|
||||
setObjVar(player, "lottery.availableTickets", availableTickets);
|
||||
messageTo(player, "setupLotteryListener", params, 1.0f, true);
|
||||
tickets.put("availableTickets", availableTickets);
|
||||
}
|
||||
else if(hasObjVar(player, "lottery.looted") && !hasObjVar(player, "lottery.position")) {
|
||||
if(qualifiers != null && qualifiers.contains(getPlayerStationId(player))) break;
|
||||
// turn in the ticket
|
||||
String template = "object/tangible/travel/travel_ticket/dungeon_ticket.iff";
|
||||
obj_id inv = utils.getInventoryContainer(player);
|
||||
obj_id[] items = utils.getAllItemsInContainerByTemplate(inv, template, true);
|
||||
obj_id goldenTicket = null;
|
||||
for (obj_id item : items){
|
||||
if (getTemplateName(item).equals(template)) {
|
||||
goldenTicket = item;
|
||||
}
|
||||
}
|
||||
// destroy the ticket if the player has it in their inventory.
|
||||
if (isValidId(goldenTicket)) destroyObject(goldenTicket);
|
||||
int position = (maxTickets - availableTickets) + 1;
|
||||
if (position <= maxTickets) {
|
||||
// congrats you have earned a spot
|
||||
availableTickets--;
|
||||
setObjVar(self, "lottery.availableTickets", availableTickets);
|
||||
if(availableTickets <= 0 && !hasObjVar(self, "lottery.over")){
|
||||
setObjVar(self, "lottery.over", 1);
|
||||
sendSystemMessageGalaxyTestingOnly("Congratulations to " + getName(player) + "! They have just secured the final position in the live lottery!");
|
||||
sendSystemMessageGalaxyTestingOnly("All tickets have been claimed for the live release! Thank you for playing!");
|
||||
LOG("live-lottery","Player " + getFirstName(player) + " (" + player + ") has secured the final position in the live lottery.");
|
||||
}
|
||||
else{
|
||||
sendSystemMessageGalaxyTestingOnly("Congratulations to " + getName(player) + "! They have just secured position #" + position + " in the live lottery!");
|
||||
LOG("live-lottery","Player " + getFirstName(player) + " (" + player + ") with station id (" + getPlayerStationId(player) + ") has secured position #" + position + " in the live lottery.");
|
||||
}
|
||||
if(qualifiers == null) qualifiers = new Vector();
|
||||
qualifiers.add(getPlayerStationId(player));
|
||||
sendSystemMessage(player, "Congratulations! You have secured a position! Your position is #" + position + " in line.", null);
|
||||
setObjVar(self, "lottery.qualifiers", qualifiers);
|
||||
setObjVar(player, "lottery.position", position);
|
||||
tickets.put("available", availableTickets);
|
||||
broadcastMessage("updateLotteryStatus", tickets);
|
||||
messageTo(player, "removeLotteryListener", null, 1f, false);
|
||||
} else {
|
||||
sendSystemMessage(player, "We're sorry, but there are no more slots available. Thank you for participating!", null);
|
||||
}
|
||||
}
|
||||
else{
|
||||
// checking status
|
||||
sendSystemMessage(player, "There are currently " + (availableTickets > 0 ? availableTickets : "NO") + " available tickets left.", null);
|
||||
if(hasObjVar(player, "lottery.position")){
|
||||
sendSystemMessage(player, "You secured position #" + getIntObjVar(player, "lottery.position") + " in the lottery.", null);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
createObject("object/tangible/wearables/backpack/backpack_s06.iff", pInv, "");
|
||||
sendSystemMessageTestingOnly(player, "Spec-Ops Pack Issued.");
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
|
||||
buff.applyBuff((player), "me_buff_health_2", 14400);
|
||||
buff.applyBuff((player), "me_buff_action_3", 14400);
|
||||
@@ -6440,11 +6542,11 @@ public class terminal_character_builder extends script.base_script
|
||||
buff.applyBuff((player), "vr_familiar_defense_8", 14400);
|
||||
buff.applyBuff((player), "drink_flameout", 14400);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
// createObject("object/tangible/medicine/instant_stimpack/stimpack_generic_e.iff", pInv, "");
|
||||
static_item.createNewItemFunction("item_off_temp_stimpack_02_06", pInv);
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
if(hasObjVar(player, "chroniclesLoot_toggledOff")){
|
||||
removeObjVar(player, "chroniclesLoot_toggledOff");
|
||||
sendSystemMessageTestingOnly(player, "Chronicles Loot is now ON.");
|
||||
@@ -6457,7 +6559,8 @@ public class terminal_character_builder extends script.base_script
|
||||
cleanScriptVars(player);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
refreshMenu(player, "Select the desired option", "Character Builder Terminal", STELLA_OPTIONS, "handleStellaOptions", false);
|
||||
manageStellaOptions(player);
|
||||
refreshMenu(player, "Select the desired option", "Character Builder Terminal", stella_options, "handleStellaOptions", false);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public void handleMiscOption(obj_id player) throws InterruptedException
|
||||
|
||||
Reference in New Issue
Block a user