@Override public void onMapLoad(MapleCharacter chr) { super.onMapLoad(chr); if (chr.getMapId() == type.mapids[0] && !chr.isGM()) { chr.canTalk(false); } }
public static void doFishing(client.MapleCharacter chr) { int mesoMultiplier = 1; int expMultiplier = 1; switch (chr.getWorld()) { case 0: mesoMultiplier = 40000; expMultiplier = 20000; break; } int mesoAward = (int) (1400.0 * Math.random() + 1201) * mesoMultiplier + (6 * chr.getLevel() / 5); int expAward = (int) ((645.0 * Math.random()) * expMultiplier + (15 * chr.getLevel() / 2) / 6) * chr.getFishingLevel(); if (chr.getReborns() >= 5 && chr.getMapId() == 970020001 && chr.haveItem(3011000) && chr.getChair() == 3011000) { int rand = (int) (3.0 * Math.random()); int fishingexp = (int) (7.0 * Math.random()) + 1; switch (rand) { case 0: chr.gainMeso(mesoAward, true, true, true); chr.gainFishingEXP(fishingexp); chr.getClient() .getSession() .write(MaplePacketCreator.catchMonster(9500336, 2000017, (byte) 1)); chr.getMap() .broadcastMessage( chr, MaplePacketCreator.catchMonster(9500336, 2000017, (byte) 1), false); break; case 1: chr.gainExp(expAward, true, true); chr.gainFishingEXP(fishingexp); chr.getClient() .getSession() .write(MaplePacketCreator.catchMonster(9500336, 2000017, (byte) 1)); chr.getMap() .broadcastMessage( chr, MaplePacketCreator.catchMonster(9500336, 2000017, (byte) 1), false); break; case 2: chr.gainFishingEXP(fishingexp * 2); chr.getClient() .getSession() .write(MaplePacketCreator.catchMonster(9500336, 2000017, (byte) 1)); chr.getMap() .broadcastMessage( chr, MaplePacketCreator.catchMonster(9500336, 2000017, (byte) 1), false); break; } } else { chr.dropMessage("Please sit on your fishing chair at the fishing lagoon to fish."); } }
public void copy() { while (type.queue.get(ch).size() > 0 && ChannelServer.getInstance(ch).getMapleSquad(type) == null) { int index = 0; long lowest = 0; for (int i = 0; i < type.queue.get(ch).size(); i++) { if (lowest == 0 || type.queue.get(ch).get(i).right < lowest) { index = i; lowest = type.queue.get(ch).get(i).right; } } final String nextPlayerId = type.queue.get(ch).remove(index).left; final int theirCh = World.Find.findChannel(nextPlayerId); if (theirCh > 0) { final MapleCharacter lead = ChannelServer.getInstance(theirCh).getPlayerStorage().getCharacterByName(nextPlayerId); if (lead != null && lead.getMapId() == beginMapId && lead.getClient().getChannel() == ch) { final MapleSquad squad = new MapleSquad(ch, type.name(), lead, expiration, toSay); if (ChannelServer.getInstance(ch).addMapleSquad(squad, type.name())) { getBeginMap().broadcastMessage(CField.getClock(expiration / 1000)); getBeginMap().broadcastMessage(CWvsContext.serverNotice(6, nextPlayerId + toSay)); type.queuedPlayers.get(ch).add(new Pair<String, String>(nextPlayerId, "Success")); } else { squad.clear(); type.queuedPlayers.get(ch).add(new Pair<String, String>(nextPlayerId, "Skipped")); } break; } else { if (lead != null) { lead.dropMessage( 6, "Your squad has been skipped due to you not being in the right channel and map."); } getBeginMap() .broadcastMessage( CWvsContext.serverNotice( 6, nextPlayerId + "'s squad has been skipped due to the player not being in the right channel and map.")); type.queuedPlayers.get(ch).add(new Pair<String, String>(nextPlayerId, "Not in map")); } } else { getBeginMap() .broadcastMessage( CWvsContext.serverNotice( 6, nextPlayerId + "'s squad has been skipped due to the player not being online.")); type.queuedPlayers.get(ch).add(new Pair<String, String>(nextPlayerId, "Not online")); } } }
public MapleSquad( final int ch, final String type, final MapleCharacter leader, final int expiration, final String toSay) { this.leader = new WeakReference<MapleCharacter>(leader); this.members.put(leader.getName(), MapleCarnivalChallenge.getJobBasicNameById(leader.getJob())); this.leaderName = leader.getName(); this.ch = ch; this.toSay = toSay; this.type = MapleSquadType.valueOf(type.toLowerCase()); this.status = 1; this.beginMapId = leader.getMapId(); leader.getMap().setSquad(this.type); if (this.type.queue.get(ch) == null) { this.type.queue.put(ch, new ArrayList<Pair<String, Long>>()); this.type.queuedPlayers.put(ch, new ArrayList<Pair<String, String>>()); } this.startTime = System.currentTimeMillis(); this.expiration = expiration; }
/** * 角色快照数据 * * @param chr */ public CharacterTransfer(MapleCharacter chr) { this.characterid = chr.getId(); this.accountid = chr.getAccountID(); this.accountname = chr.getClient().getAccountName(); this.channel = (byte) chr.getClient().getChannel(); this.ACash = chr.getCSPoints(1); this.MaplePoints = chr.getCSPoints(2); this.vpoints = chr.getVPoints(); this.name = chr.getName(); this.fame = chr.getFame(); this.love = chr.getLove(); this.gender = chr.getClient().getGender(); this.level = chr.getLevel(); this.str = chr.getStat().getStr(); this.dex = chr.getStat().getDex(); this.int_ = chr.getStat().getInt(); this.luk = chr.getStat().getLuk(); this.hp = chr.getStat().getHp(); this.mp = chr.getStat().getMp(); this.maxhp = chr.getStat().getMaxHp(); this.maxmp = chr.getStat().getMaxMp(); this.exp = chr.getExp(); this.hpApUsed = chr.getHpApUsed(); this.remainingAp = chr.getRemainingAp(); this.remainingSp = chr.getRemainingSp(); this.meso = chr.getMeso(); this.pvpExp = chr.getTotalBattleExp(); this.pvpPoints = chr.getBattlePoints(); this.skinColor = chr.getSkinColor(); this.job = chr.getJob(); this.hair = chr.getHair(); this.face = chr.getFace(); this.mapid = chr.getMapId(); this.initialSpawnPoint = chr.getInitialSpawnpoint(); this.marriageId = chr.getMarriageId(); this.world = chr.getWorld(); this.guildid = chr.getGuildId(); this.guildrank = chr.getGuildRank(); this.guildContribution = chr.getGuildContribution(); this.alliancerank = chr.getAllianceRank(); this.gmLevel = (byte) chr.getGMLevel(); this.points = chr.getPoints(); this.fairyExp = chr.getFairyExp(); this.petStore = chr.getPetStores(); this.subcategory = chr.getSubcategory(); this.imps = chr.getImps(); this.fatigue = chr.getFatigue(); this.currentrep = chr.getCurrentRep(); this.totalrep = chr.getTotalRep(); this.totalWins = chr.getTotalWins(); this.totalLosses = chr.getTotalLosses(); this.gachexp = chr.getGachExp(); this.boxed = chr.getBoxed(); this.familiars = chr.getFamiliars(); this.tempIP = chr.getClient().getTempIP(); this.decorate = chr.getDecorate(); this.dollars = chr.getDollars(); this.shareLots = chr.getShareLots(); this.apstorage = chr.getAPS(); this.cardStack = chr.getCardStack(); this.morphCount = chr.getMorphCount(); this.powerCount = chr.getPowerCount(); this.playerPoints = chr.getPlayerPoints(); this.playerEnergy = chr.getPlayerEnergy(); this.runningDark = chr.getDarkType(); this.runningDarkSlot = chr.getDarkTotal(); this.runningLight = chr.getLightType(); this.runningLightSlot = chr.getLightTotal(); boolean uneq = false; MaplePet pet = chr.getSpawnPet(); if (this.petStore == 0) { this.petStore = -1; } if (pet != null) { uneq = true; this.petStore = (byte) Math.max(this.petStore, pet.getInventoryPosition()); } if (uneq) { chr.unequipAllSpawnPets(); } if (chr.getSidekick() != null) { this.sidekick = chr.getSidekick().getId(); } else { this.sidekick = 0; } for (BuddylistEntry qs : chr.getBuddylist().getBuddies()) { this.buddies.put( new CharacterNameAndId(qs.getCharacterId(), qs.getName(), qs.getGroup()), qs.isVisible()); } this.buddysize = chr.getBuddyCapacity(); this.partyid = (chr.getParty() == null ? -1 : chr.getParty().getId()); if (chr.getMessenger() != null) { this.messengerid = chr.getMessenger().getId(); } else { this.messengerid = 0; } this.finishedAchievements = chr.getFinishedAchievements(); this.KeyValue = chr.getKeyValue_Map(); this.InfoQuest = chr.getInfoQuest_Map(); for (Map.Entry qs : chr.getQuest_Map().entrySet()) { this.Quest.put(((MapleQuest) qs.getKey()).getId(), qs.getValue()); } this.inventorys = chr.getInventorys(); for (Entry<Skill, SkillEntry> qs : chr.getSkills().entrySet()) { this.Skills.put(((Skill) qs.getKey()).getId(), qs.getValue()); } this.BlessOfFairy = chr.getBlessOfFairyOrigin(); this.BlessOfEmpress = chr.getBlessOfEmpressOrigin(); this.chalkboard = chr.getChalkboard(); this.keymap = chr.getKeyLayout().Layout(); this.quickslot = chr.getQuickSlot().Layout(); this.savedlocation = chr.getSavedLocations(); this.wishlist = chr.getWishlist(); this.regrocks = chr.getRegRocks(); this.famedcharacters = chr.getFamedCharacters(); this.lastfametime = chr.getLastFameTime(); this.storage = chr.getStorage(); this.cs = chr.getCashInventory(); MapleMount mount = chr.getMount(); this.mount_itemid = mount.getItemId(); this.mount_Fatigue = mount.getFatigue(); this.mount_level = mount.getLevel(); this.mount_exp = mount.getExp(); this.battlers = chr.getBattlers(); this.lastLoveTime = chr.getLastLoveTime(); this.loveCharacters = chr.getLoveCharacters(); this.TranferTime = System.currentTimeMillis(); }
/** * 可以创建定时技能 * * @param chr * @param numTimes * @param hurt * @param now */ public static void handleCooldowns(MapleCharacter chr, int numTimes, boolean hurt, long now) { if (chr == null) { return; } if (chr.getCooldownSize() > 0) { for (MapleCoolDownValueHolder m : chr.getCooldowns()) { if (m.startTime + m.length < now) { int skillId = m.skillId; chr.removeCooldown(skillId); chr.getClient().getSession().write(MaplePacketCreator.skillCooldown(skillId, 0)); } } } if (chr.isAlive()) { if (((chr.getJob() == 131) || (chr.getJob() == 132)) && (chr.canBlood(now))) { chr.doDragonBlood(); } if (chr.canRecover(now)) { chr.doRecovery(); } if (chr.canHPRecover(now)) { chr.addHP((int) chr.getStat().getHealHP()); } if (chr.canMPRecover(now)) { chr.addMP((int) chr.getStat().getHealMP()); if ((chr.getJob() == 3111) || (chr.getJob() == 3112)) { chr.addDemonMp((int) chr.getStat().getHealMP()); } } if (chr.canFairy(now)) { chr.doFairy(); } if (chr.canFish(now)) { chr.doFish(now); } if (chr.canDOT(now)) { chr.doDOT(); } if (chr.canExpiration(now)) { chr.expirationTask(); } } if (chr.getDiseaseSize() > 0) { for (MapleDiseaseValueHolder m : chr.getAllDiseases()) { if ((m != null) && (m.startTime + m.length < now)) { chr.dispelDebuff(m.disease); } } } if ((numTimes % 7 == 0) && (chr.getMount() != null) && (chr.getMount().canTire(now))) { chr.getMount().increaseFatigue(); } if (numTimes % 13 == 0) { chr.doFamiliarSchedule(now); for (MaplePet pet : chr.getSummonedPets()) { if ((pet.getPetItemId() == 5000054) && (pet.getSecondsLeft() > 0)) { pet.setSecondsLeft(pet.getSecondsLeft() - 1); if (pet.getSecondsLeft() <= 0) { chr.unequipSpawnPet(pet, true, true); return; } } int newFullness = pet.getFullness() - PetDataFactory.getHunger(pet.getPetItemId()); if (newFullness <= 5) { pet.setFullness(15); chr.unequipSpawnPet(pet, true, true); } else { pet.setFullness(newFullness); chr.getClient() .getSession() .write( PetPacket.updatePet( pet, chr.getInventory(MapleInventoryType.CASH).getItem(pet.getInventoryPosition()), false)); } } } if ((hurt) && (chr.isAlive())) { if (chr.getInventory(MapleInventoryType.EQUIPPED).findById(chr.getMap().getHPDecProtect()) == null) { if ((chr.getMapId() == 749040100) && (chr.getInventory(MapleInventoryType.CASH).findById(5451000) == null)) { chr.addHP(-chr.getMap().getHPDec()); } else if (chr.getMapId() != 749040100) { chr.addHP(-(chr.getMap().getHPDec())); } } } }