public PassiveEffect hasPassiveEffectForTime(EWhenToApply aTimeToApply,float aTargetHPVal,float aMyHP,ElementalType aAttackerType,ElementalType aDefendentType,BetterList<BattleMonster> aAllies,BetterList<BattleMonster> aOpponents,ERangedStatus aRange,BattleMonster aAttacker,ElementalType aAttackingMoveElement,EStatusEffects aStatusEffectInduced = EStatusEffects.None) { for(int i = 0;i<_effects.size;i++) { if(_effects[i].applyAt==aTimeToApply) { if((_effects[i].applyAt==EWhenToApply.AtEndOfMoveQueue)|| (_effects[i].applyAt==EWhenToApply.BattleStart)|| (_effects[i].applyAt==EWhenToApply.WhenHit) ) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenAttackingWithMoveType)&&(aAttackingMoveElement==_effects[i].whenMoveElementType)) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenTheirHPHigherThan)&&(aTargetHPVal>_effects[i].HPPercentage)) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenTheirHPLowerThan)&&(aTargetHPVal<_effects[i].HPPercentage)) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenMyHPHigherThan)&&(aMyHP>(1/_effects[i].HPPercentage))) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenMyHPLowerThan)&&(aMyHP<(1/_effects[i].HPPercentage))) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenAttackerIsType)&&(aAttackerType==_effects[i].whenMoveElementType)) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenDefendentIsType)&&(aDefendentType==_effects[i].whenMoveElementType)) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenAlliesAreType)&&(listContainsElement(_effects[i].whenMoveElementType,aAllies).size>0)) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenDefendentIsType)&&(listContainsElement(_effects[i].whenMoveElementType,aOpponents).size>0)) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenOneOpponentisSameAsEffectOwner)&&(listContainsElement(aAttackerType,aOpponents).size>0)) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenHitByMoveType)&&(aAttackerType==_effects[i].whenMoveElementType)) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenHitByRangeType)&&(aRange==_effects[i].whenRangeType)) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenOpponentHasStatusEffect)&&(listContainsStatusEffect(_effects[i].whenStatusEffects,aOpponents).size>0)) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenStatusEffectsSuffered)&&((_effects[i].whenStatusEffects&aAttacker.statusEffects)!=EStatusEffects.None)) { return _effects[i]; } if((_effects[i].applyAt==EWhenToApply.WhenHitByMoveTypeAtEndOfMoveQueue)&&(_effects[i].whenMoveElementType==aAttackingMoveElement)) { return _effects[i]; } } } return null; }
public float getEffectOnAttackPower(ERangedStatus aRangedStatus,ElementalType aElementType) { bool elementPassed = false; if(this.moveRef.elementType==ElementalLibrary.REF.getElement("Normal")) { elementPassed = true; } else { if(this.moveRef.elementType==aElementType) { elementPassed = true; } } if(elementPassed) { if(aRangedStatus==ERangedStatus.Melee) { return this.moveRef.meleeAttackMultiplier; } if(aRangedStatus==ERangedStatus.Ranged) { return this.moveRef.rangeAttackMultiplier; } } return 1.0f; }
public PassiveEffect (PassiveEffectsRow aRow) { id = aRow._ID; name = aRow._EffectName; elementType = ElementalLibrary.REF.getElement(aRow._EffectType); description = aRow._Description; moveRef = MovesLib.REF.getMove(aRow._TakeEffectsFromMove); switch(aRow._EffectClass) { case("Class 1"):effectClass = 1;break; case("Class 2"):effectClass = 2;break; case("Class 3"):effectClass = 4;break; case("Class 4"):effectClass = 8;break; } weighting = aRow._Weighting; switch(aRow._ApplyWhen) { case("At battle start"):applyAt = EWhenToApply.BattleStart;break; case("When hit by %FIELDMOVETYPE%"):applyAt = EWhenToApply.WhenHitByMoveType;break; case("When using move of type %FIELDMOVETYPE%"):applyAt = EWhenToApply.WhenAttackingWithMoveType;break; case("When %STATUSEFFECTSUFFERED%"):applyAt = EWhenToApply.WhenStatusEffectsSuffered;break; case("When defendant is same type"):applyAt = EWhenToApply.WhenDefendentIsType;break; case("When allies are of type %FIELDMOVETYPE%"):applyAt = EWhenToApply.WhenAlliesAreType;break; case("When hit"):applyAt = EWhenToApply.WhenHit;break; case("When HP Higher than %HPPERCENTAGE%"):applyAt = EWhenToApply.WhenMyHPHigherThan;break; case("When HP Lower than %HPPERCENTAGE%"):applyAt = EWhenToApply.WhenMyHPLowerThan;break; case("When defendant HP Lower than %HPPERCENTAGE%"):applyAt = EWhenToApply.WhenTheirHPLowerThan;break; case("When defendant HP Higher than %HPPERCENTAGE%"):applyAt = EWhenToApply.WhenTheirHPHigherThan;break; case("When hit by %MOVERANGETYPE%"):applyAt = EWhenToApply.WhenHitByRangeType;break; case("At end of move queue"):applyAt = EWhenToApply.AtEndOfMoveQueue;break; case("When hit by %FIELDMOVETYPE% at end of move queue"):applyAt = EWhenToApply.WhenHitByMoveTypeAtEndOfMoveQueue;break; case("When one opponent is %FIELDMOVETYPE%"):applyAt = EWhenToApply.WhenOneOpponentisType;break; case("When one opponent is same as effect owner"):applyAt = EWhenToApply.WhenOneOpponentisSameAsEffectOwner;break; } whenMoveElementType = ElementalLibrary.REF.getElement(aRow._MoveElementType); switch(aRow._MoveRangeType) { default: this.whenRangeType = ERangedStatus.MeleeAndRanged;break; case("Melee"):this.whenRangeType = ERangedStatus.Melee;break; case("Ranged"):this.whenRangeType = ERangedStatus.Ranged;break; } whenStatusEffects = (EStatusEffects) aRow._StatusEffectSuffered; HPPercentage = aRow._HPPercentage; }
public MoveLibItem(MoveDataRow aInitData) { this._id = aInitData._ID; this._name = aInitData._MoveName; this._moveSpeedMultiplier = aInitData._MoveSpeedMultiplier; switch (aInitData._PowerApplicationType) { case("Normal"):this._powerApplicationType = EPowerApplicationTypes.Normal;break; case("Power is HP"): this._powerApplicationType = EPowerApplicationTypes.PowerIsHP;break; case("Power is Percentage of HP"): this._powerApplicationType = EPowerApplicationTypes.PowerIsPercentOfHP;break; } this._description = aInitData._Description; oneHitKillInvulnerable = aInitData._AddsOneHitKOInvulnerability; decisiveBlowsImmunity = aInitData._DecisiveBlowsImmunity; this._elementalType = ElementalLibrary.REF.getElement (aInitData._ElementalType); switch (aInitData._MeleeRangedStatus) { case("Melee"):this._meleeRangedStatus = ERangedStatus.Melee;break; case("Ranged"):this._meleeRangedStatus = ERangedStatus.Ranged;break; } this._effort = aInitData._Effort; this._power = aInitData._Power; this._splashpercent = aInitData._SplashPercent; cameraShake = aInitData._CameraShake; switch (aInitData._SplashRange) { case("Hit 1 Only"):this._splashRange = ESplashRange.Hit1Only;break; case("Hit All"):this._splashRange = ESplashRange.HitAll;break; case("Splash Range 1"):this._splashRange = ESplashRange.SplashRange1;break; case("Boost Me"):this._splashRange = ESplashRange.BoostMe;break; case("Boost 1"):this._splashRange = ESplashRange.Boost1;break; case("Boost 1 And Me"):this._splashRange = ESplashRange.Boost1AndMe;break; case("Boost All"):this._splashRange = ESplashRange.BoostAll;break; case("Boost 2"):this._splashRange = ESplashRange.Boost2;break; case("Boost whole Field"):this._splashRange = ESplashRange.BoostWholeField;break; case("Random Opponent"):this._splashRange = ESplashRange.RandomOpponent;break; } this._accuracy = aInitData._Accuracy; this._particlesAnimation = MovesAnimationLib.REF.getAnimation(aInitData._AttackParticlesAnimation); this._hitParticlesAnimation = MovesAnimationLib.REF.getAnimation(aInitData._AttackParticlesAnimationHit); this._attackMecanim = aInitData._AttackMecanim; this._hitMecanim = aInitData._HitMecanim; this._paralyzePercent = aInitData._ParalyzePercent; this._sleepPercent = aInitData._SleepPercent; this._poisonPercent = aInitData._PoisonPercent; this._freezePercent = aInitData._FreezePercent; this._flinchPercent = aInitData._FlinchPercent; this._confusionPercent = aInitData._ConfusionPercent; this._burnPercent = aInitData._BurnPercent; this._rangeAttackMultiplier = aInitData._RangeAttackMultiplier; this._meleeAttackMultiplier = aInitData._MeleeAttackMultiplier; this._rangeDefenseMultiplier = aInitData._RangeDefenseMultiplier; this._meleeDefenseMultiplier = aInitData._MeleeDefenseMultiplier; this._speedStatMultiplier = aInitData._SpeedStatMultiplier; this.agilityMultiplier = aInitData._AgilityMultiplier; this._accuracyMultiplier = aInitData._AccuracyMultiplier; this._minHitsPerTurn = aInitData._MinHitsPerTurn; this._maxHitsPerTurn = aInitData._MaxHitsPerTurn; this._minTurns = aInitData._MinTurns; this._maxTurns = aInitData._MaxTurns; this._effectsDuration = aInitData._EffectsDuration; this._criticalHitChance = aInitData._CriticalHitChance; this.powerOnlyIfTheseStatusEffects = (EStatusEffects) aInitData._OnlyApplyPowerIfTheirStatusEffect; switch (aInitData._DamageDistribution) { case("Standard"):default:this._damageDistribution = EDamageDistributionTypes.Standard;break; } this._addsVulnerability = ElementalLibrary.REF.getElement (aInitData._AddVulnerabilityType); this._changeIfIHaveStatusEffects = aInitData._IfMyStatusEffect; this._changeToThisIfIHaveStatusEffects = aInitData._DoAlternativeMove; this._changeIfTheyHaveStatusEffects = aInitData._IfTheirStatusEffect; this._changeToThisIfIHaveStatusEffects = aInitData._DoAlternativeMove; this._maxUnlockLevel = (byte) aInitData._MaxUnlockLevel; this._chanceOfAddVulnerability = aInitData._PercentChangeOfVulnerability; this._addsInvulnerabilityStatTo = (EMonsterStat) aInitData._AddInvulnerabilityToStatChange; this._addsInvulnerabilityToStatus = (EStatusEffects) aInitData._AddInvulnerabilityToStatus; this.isPassiveEffect = aInitData._IsPassiveEffect; this.decisiveBlowsChangeMultiplier = aInitData._DecisiveBlowsChanceMultiplier; _selfHitPercent = aInitData._HitMyselfWithThisPercentageOfMove; removesWeaknessesTo = aInitData._RemovesWeaknessTo; mirrorStatusEffects = aInitData._MirrorStatusEffects; this.alsoApplyThisString = aInitData._AlsoApplyThisMove; this.percentChanceOfFollowOn = aInitData._PercentChanceOfFollowOn; if(aInitData._Struggle==1) { isStruggleMove = true; } // this.removesWeaknessesTo = aInitData._ // this.agilityMultiplier = aInitData.A }