diff --git a/core/game/Model.java b/core/game/Model.java index de335e16431ca7ac20c54d4aa94e34a5a2523250..9d1da4502bd0bb97b213f7b679a10866bd5b1b86 100644 --- a/core/game/Model.java +++ b/core/game/Model.java @@ -1,11 +1,13 @@ package game; import java.util.ArrayList; +import java.util.Random; import mapobjs.defobjs.Door; import mapobjs.defobjs.Field; import mapobjs.defobjs.Gate; import mapobjs.defobjs.Portal; +import mapobjs.defobjs.ZPM; import mapobjs.movobjs.Player; import mapobjs.movobjs.Replicator; @@ -79,9 +81,35 @@ public class Model sum += colonel.getZpmCount(); if(jaffa != null) sum += jaffa.getZpmCount(); - if(sum >= specOpen) + + if(specDoor != null) { - specDoor.setOpen(true); + if(sum >= specOpen) + { + specDoor.setOpen(true); + } + } + + if(sum % 2 == 0) + { + ArrayList<Field> options = new ArrayList<>(); + + for(int i = 0; i < map.size(); i++) + { + if(!map.get(i).hasElementOn()) + { + options.add(map.get(i)); + } + } + if(options.isEmpty()) + return; + + Random rnd = new Random(); + int rndNum = rnd.nextInt(options.size()); + + Field tmp = options.get(rndNum); + tmp.addElement(new ZPM(tmp)); + this.ZPMs++; } } diff --git a/core/mapobjs/defobjs/Field.java b/core/mapobjs/defobjs/Field.java index 04d878d35aebfc749d2235beb5c9d0bdc4d8681e..7460db20afab94de1234f1d8ab708af2890493fb 100644 --- a/core/mapobjs/defobjs/Field.java +++ b/core/mapobjs/defobjs/Field.java @@ -307,4 +307,9 @@ public class Field implements IElement { { toRemove.add(element); } + + public boolean hasElementOn() + { + return !elements.isEmpty(); + } }