include library.buff; include library.callable; include library.utils; include library.vehicle; include library.pet_lib; include library.jedi; include library.combat; include library.performance; inherits systems.combat.combat_base; trigger OnExitedCombat() { combat.clearCombatDebuffs(self); // GET RID OF ANY LINGERING BATTLE FATIGUE int fatigue = getShockWound(self); if(fatigue > 0) { setShockWound(self, 0); } setState(self, STATE_PEACE, false); obj_id objMount = getMountId(self); if(isIdValid(objMount)) { obj_id objControlDevice = callable.getCallableCD(objMount); if(!pet_lib.isGalloping(objMount)) { // set normal move rate pet_lib.setMountedMovementRate(self, objMount); } else { // set the burst run rate (which is the same as an unmounted move rate) pet_lib.setUnmountedMovementRate(self, objMount); } } utils.setScriptVar( self, pet_lib.COMBAT_ENDED, getGameTime() ); return SCRIPT_CONTINUE; } trigger OnEnteredCombat() { // Clear glowie state if (utils.hasScriptVar(self, "holoMessageTime")) { performance.holographicCleanup(self); } // Stop all Performances now if(hasScript(self, performance.DANCE_HEARTBEAT_SCRIPT) || (hasScript(self, performance.MUSIC_HEARTBEAT_SCRIPT)) ) { performance.stopDance(self); performance.stopPlaying(self); performance.stopEntertainingPlayer(self); } if (getState(self, STATE_GLOWING_JEDI) > 0) { setState(self, STATE_GLOWING_JEDI, false); } combat.doCombatDebuffs(self); if(vehicle.isRidingVehicle(self)) return SCRIPT_CONTINUE; obj_id objL = getObjectInSlot(self, "hold_l"); obj_id objR = getObjectInSlot(self, "hold_r"); if(isIdValid(objL) && (getGameObjectType(objL) == GOT_misc_instrument)) { obj_id inv = utils.getInventoryContainer(self); putInOverloaded(objL, inv); } if(isIdValid(objR) && (getGameObjectType(objR) == GOT_misc_instrument)) { obj_id inv = utils.getInventoryContainer(self); putInOverloaded(objR, inv); } obj_id objMount = getMountId(self); if(isIdValid(objMount)) { if(!pet_lib.isGalloping(objMount)) { pet_lib.setMountCombatMoveSpeed(self, objMount); } } return SCRIPT_CONTINUE; } commandHandler combatModeCheck() { obj_id objTarget = getTarget(self); if(isIdValid(objTarget)) { sendSystemMessageTestingOnly(self, "target is "+objTarget); } obj_id[] objEnemies = getWhoIsTargetingMe(self); for(int intI = 0; intI 0 && riposte > rand(0,99)) { queueCommand(self, ##"fs_riposte", objAttacker, "", COMMAND_PRIORITY_DEFAULT); } } return SCRIPT_CONTINUE; } trigger OnAboutToReceiveItem(obj_id objContainer, obj_id objTransferer, obj_id objItem) { if(isWeapon(objItem)) { if(jedi.isLightsaber(getWeaponType(objItem))) { if(!utils.isProfession(self, utils.FORCE_SENSITIVE)) { string_id strSpam = new string_id("jedi_spam", "no_equip_lightsaber"); sendSystemMessage(self, strSpam); return SCRIPT_OVERRIDE; } else { if(!jedi.hasColorCrystal(objItem)) { string_id strSpam = new string_id("jedi_spam", "lightsaber_no_color"); sendSystemMessage(self, strSpam); return SCRIPT_OVERRIDE; } } } } return SCRIPT_CONTINUE; } trigger OnReceivedItem(obj_id objSrcContainer, obj_id objTransferer, obj_id objItem) { if(isWeapon(objItem)) { int weaponType = getWeaponType(objItem); if (weaponType != WEAPON_TYPE_LIGHT_RIFLE) { int onslaughtBuff = buff.getBuffOnTargetFromGroup(self, "bh_relentless_onslaught"); if(onslaughtBuff !=0) buff.removeBuff(self, onslaughtBuff); } if(!combat.hasCertification(self, objItem)) { string_id strSpam = new string_id("combat_effects", "no_proficiency"); sendSystemMessage(objTransferer, strSpam); } } return SCRIPT_CONTINUE; } trigger OnDeath(obj_id killer, obj_id corpseId) { if(hasSkill(self, "expertise_of_last_words_1") ) buff.applyBuff(self, "exclude_self_exclusive_proxy_of_last_words"); return SCRIPT_CONTINUE; } commandHandler target() { if(isIdValid(target)) { setLookAtTarget(self, target); } return SCRIPT_CONTINUE; }