OSDN Git Service

轟沈時耐久値がマイナスになる問題を修正
authormasakih <masakih@users.sourceforge.jp>
Wed, 10 Feb 2016 10:59:35 +0000 (19:59 +0900)
committermasakih <masakih@users.sourceforge.jp>
Wed, 10 Feb 2016 11:05:32 +0000 (20:05 +0900)
ダメコン発動時に耐久値を補正

KCD/HMCalculateDamageCommand.m
KCD/HMKCShipObject.h
KCD/HMKCShipObject.m

index f5feeed..956a1a9 100644 (file)
@@ -11,6 +11,9 @@
 #import "HMTemporaryDataStore.h"
 #import "HMServerDataStore.h"
 
+#import "HMKCShipObject+Extensions.h"
+#import "HMKCSlotItemObject+Extensions.h"
+
 
 #define DAMAGE_CHECK 0
 
@@ -333,9 +336,29 @@ typedef NS_ENUM(NSUInteger, HMBattleType) {
        [self.store saveAction:nil];
 }
 
-- (NSArray *)deckWithNumber:(NSNumber *)number
+NSInteger damageControlIfPossible(NSInteger nowhp, HMKCShipObject *ship)
 {
-       return [NSArray array];
+       if(nowhp < 0) nowhp = 0;
+       
+       NSInteger maxhp = ship.maxhp.integerValue;
+       
+       NSOrderedSet<HMKCSlotItemObject *> *items = ship.equippedItem;
+       for(HMKCSlotItemObject *item in items) {
+               NSInteger itemID = item.id.integerValue;
+               if(itemID == 42) {
+                       return maxhp * 0.2;
+               } else if(itemID == 43) {
+                       return maxhp;
+               }
+       }
+       NSInteger exItem = ship.slot_ex.integerValue;
+       if(exItem == 42) {
+               return maxhp * 0.2;
+       } else if(exItem == 43) {
+               return maxhp;
+       }
+       
+       return nowhp;
 }
 - (void)applyDamage
 {
@@ -415,11 +438,15 @@ typedef NS_ENUM(NSUInteger, HMBattleType) {
                NSUInteger shipCount = ships.count;
                NSUInteger offset = (self.isCombinedBattle && !firstRun) ? 6 : 0;
                for(NSInteger i = 0; i < shipCount; i++) {
-                       id ship = ships[i];
+                       HMKCShipObject *ship = ships[i];
                        NSInteger damage = [[damages[i + offset] valueForKey:@"damage"] integerValue];
                        NSInteger nowhp = [[ship valueForKey:@"nowhp"] integerValue];
                        nowhp -= damage;
                        [ship setValue:@(nowhp) forKeyPath:@"nowhp"];
+                       if(nowhp <= 0) {
+                               nowhp = damageControlIfPossible(nowhp, ship);
+                       }
+                       ship.nowhp = @(nowhp);
                }
                
                predicate = [NSPredicate predicateWithFormat:@"id = %@", @2];
index b414d56..06c2be3 100644 (file)
@@ -50,6 +50,7 @@
 @property (nonatomic, retain) NSNumber * slot_2;
 @property (nonatomic, retain) NSNumber * slot_3;
 @property (nonatomic, retain) NSNumber * slot_4;
+@property (nonatomic, retain) NSNumber * slot_ex;
 @property (nonatomic, retain) NSNumber * sortno;
 @property (nonatomic, retain) NSNumber * soukou_0;
 @property (nonatomic, retain) NSNumber * soukou_1;
index b1603d9..9e59439 100644 (file)
@@ -51,6 +51,7 @@
 @dynamic slot_2;
 @dynamic slot_3;
 @dynamic slot_4;
+@dynamic slot_ex;
 @dynamic sortno;
 @dynamic soukou_0;
 @dynamic soukou_1;