forked from MagicBane/Server
blocked power type structuring
This commit is contained in:
@@ -946,7 +946,7 @@ public enum PowersManager {
|
|||||||
continue;
|
continue;
|
||||||
// If something blocks the action, then stop
|
// If something blocks the action, then stop
|
||||||
|
|
||||||
if (ab.blocked(target)) {
|
if (ab.blocked(target,pb.vampDrain)) {
|
||||||
PowersManager.sendEffectMsg(playerCharacter, 5, ab, pb);
|
PowersManager.sendEffectMsg(playerCharacter, 5, ab, pb);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -1121,7 +1121,7 @@ public enum PowersManager {
|
|||||||
continue;
|
continue;
|
||||||
// If something blocks the action, then stop
|
// If something blocks the action, then stop
|
||||||
|
|
||||||
if (ab.blocked(target))
|
if (ab.blocked(target,pb.vampDrain))
|
||||||
continue;
|
continue;
|
||||||
// TODO handle overwrite stack order here
|
// TODO handle overwrite stack order here
|
||||||
String stackType = ab.getStackType();
|
String stackType = ab.getStackType();
|
||||||
@@ -1435,7 +1435,7 @@ public enum PowersManager {
|
|||||||
if (trains < ab.getMinTrains() || trains > ab.getMaxTrains())
|
if (trains < ab.getMinTrains() || trains > ab.getMaxTrains())
|
||||||
continue;
|
continue;
|
||||||
// If something blocks the action, then stop
|
// If something blocks the action, then stop
|
||||||
if (ab.blocked(target))
|
if (ab.blocked(target,pb.vampDrain))
|
||||||
// sendPowerMsg(pc, 5, msg);
|
// sendPowerMsg(pc, 5, msg);
|
||||||
continue;
|
continue;
|
||||||
// TODO handle overwrite stack order here
|
// TODO handle overwrite stack order here
|
||||||
|
|||||||
@@ -242,19 +242,32 @@ public class ActionsBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Add blocked types here
|
//Add blocked types here
|
||||||
public boolean blocked(AbstractWorldObject awo) {
|
public boolean blocked(AbstractWorldObject awo, Boolean vampDrain) {
|
||||||
//Check for immunities
|
|
||||||
if (AbstractCharacter.IsAbstractCharacter(awo)){
|
if (AbstractWorldObject.IsAbstractCharacter(awo)) {
|
||||||
AbstractCharacter pcTarget = (AbstractCharacter) awo;
|
AbstractCharacter ac = (AbstractCharacter) awo;
|
||||||
PlayerBonuses tarBonus = pcTarget.getBonuses();
|
PlayerBonuses bonus = ac.getBonuses();
|
||||||
SourceType source = SourceType.GetSourceType(this.stackType);
|
if (bonus == null)
|
||||||
boolean immune = tarBonus.getBool(ModType.ImmuneTo, source);
|
return false;
|
||||||
if(!immune){
|
|
||||||
mbEnums.DamageType damageType = mbEnums.DamageType.getDamageType(this.stackType);
|
if(vampDrain)
|
||||||
immune = pcTarget.getResists().immuneTo(damageType);
|
return bonus.getBool(ModType.BlockedPowerType, SourceType.VAMPDRAIN);
|
||||||
}
|
|
||||||
if(immune){
|
switch (this.stackType) {
|
||||||
return true;
|
case "Stun":
|
||||||
|
return bonus.getBool(ModType.ImmuneTo, SourceType.Stun);
|
||||||
|
case "Snare":
|
||||||
|
return bonus.getBool(ModType.ImmuneTo, SourceType.Snare);
|
||||||
|
case "Blindness":
|
||||||
|
return bonus.getBool(ModType.ImmuneTo, SourceType.Blind);
|
||||||
|
case "PowerInhibitor":
|
||||||
|
return bonus.getBool(ModType.ImmuneTo, SourceType.Powerblock);
|
||||||
|
case "Root":
|
||||||
|
return bonus.getBool(ModType.ImmuneTo, SourceType.Root);
|
||||||
|
case "Flight":
|
||||||
|
return bonus.getBool(ModType.NoMod, SourceType.Fly);
|
||||||
|
case "Track":
|
||||||
|
return bonus.getBool(ModType.CannotTrack, SourceType.None);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user