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