Example #1
0
	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;
	}
Example #2
0
	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;
	}
Example #3
0
	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;
	}
Example #4
0
	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
	}