class Game_Actor < Game_Battler
    def basic_traits
        #[[icon_32_index,item_id,value],[state_id,item_id,,value]]
        #[25, 33, 41, 40, 48]
        #Survival , Constitution .....
        #SID:119 IID:60        constitution
        #SID:120 IID:61        survival
        #SID:121 IID:62        wis
        #SID:122 IID:63        scu
        #SID:123 IID:64        com
        
        #ui flow = com,scu,wis,sur,con
        #32PX ID, ITEM ID, NAME, state_id
        [
            [25,64,self.combat_trait,            123],
            [33,63,self.scoutcraft_trait,        122],
            [41,62,self.wisdom_trait,            121],
            [40,61,self.survival_trait,            120],
            [48,60,self.constitution_trait,        119]
        ]         
    end
    
    def gift_traits
        #[]other traits # 200 = nil
        [
        200,116,200,200,117,200,200,115,200,
        200,200,200,200,200,200,200,131,129,
        200,200,125,200,136,200,200,200,200,
        135,130,134,137,132,200,138,133,200,
        200,200,200,200,127,200,200,200,200,
        200,200,200,200,200,200,200,200,200,
        200,200,200,200,140,200,200,126,200,
        200,200,200,200,200,200,200,200,200,
        200,128,200,200,200,200,200,139,200
        ]
    end
    
    def basic_trait_addable?(tmpVal)
        99 >= tmpVal
    end
    
    #state
    #current_selected =>[selected_gift_trait_id,selected_gift_trait_id,selected_gift_trait_id,selected_gift_trait_id,selected_gift_trait_id]
    def gift_trait_addable?(trait_id,current_selected)
        case trait_id
            when 115;        return trait_Nymph_addable?(current_selected);#true: can add / false: cannot add
            when 116;        return trait_IronWill_addable?(current_selected);
            when 117;        return trait_WeakSoul_addable?(current_selected);
            
            when 125;        return trait_bloodlust_addable?(current_selected);
            when 126;        return trait_masochist_addable?(current_selected);
            when 127;        return trait_cannibal_addable?(current_selected);
            when 128;        return trait_BloodyMess_addable?(current_selected);
            when 129;        return trait_exhibitionism_addable?(current_selected);
            when 130;        return trait_HunterTraining_addable?(current_selected);
            when 131;        return trait_prostitute_addable?(current_selected);
            when 132;        return trait_omnivore_addable?(current_selected);
            when 133;        return trait_semengulper_addable?(current_selected);
            when 134;        return trait_ManaKnowledge_addable?(current_selected);
            when 135;        return trait_WeaponryKnowledge_addable?(current_selected);
            when 136;        return trait_Alchemy_addable?(current_selected);
            when 137;        return trait_ImproveThrowRock_addable?(current_selected);
            when 138;        return trait_Succubus_addable?(current_selected);
            when 139;        return trait_Lilith_addable?(current_selected);
            when 140;        return trait_Hitchhiker_addable?(current_selected);
            else raise "what are you doing"
        end
    end
    
    
    def trait_Nymph_addable?(current_selected) #115
        return false if state_stack(115) ==1
        return false if state_stack(116) ==1
        return false if state_stack(117) ==1
        return false if state_stack(134) ==1
        return false if state_stack(135) ==1
        return false if current_selected.include?(116)
        return false if current_selected.include?(117)
        return false if current_selected.include?(134) #trait_ManaKnowledge_addable
        return false if current_selected.include?(135) #trait_WeaponryKnowledge_addable
        return true
    end
    
    def trait_IronWill_addable?(current_selected) #116
        return false if state_stack(115) ==1
        return false if state_stack(116) ==1
        return false if state_stack(117) ==1
        return false if state_stack(132) ==1
        return false if state_stack(133) ==1
        return false if state_stack(139) ==1
        return false if current_selected.include?(115)
        return false if current_selected.include?(117)
        return false if current_selected.include?(132)
        return false if current_selected.include?(133)
        return false if current_selected.include?(139)
        return true
    end
    
    def trait_WeakSoul_addable?(current_selected) #117
        return false if state_stack(115) ==1
        return false if state_stack(116) ==1
        return false if state_stack(117) ==1
        #return false if state_stack(125) ==1 #bloodlust
        #return false if state_stack(128) ==1 #Bloodymess
        return false if state_stack(135) ==1
        return false if current_selected.include?(115)
        return false if current_selected.include?(116)
        #return false if current_selected.include?(125) #bloodlust
        #return false if current_selected.include?(128) #BloodyMess
        return false if current_selected.include?(135) #WeaponryKnowledge
        return true
    end
    
    def trait_bloodlust_addable?(current_selected) #125
        return false if state_stack(125) ==1
        #return false if state_stack(117) ==1 #weak
        #return false if current_selected.include?(117) #weak
        return false if @level < 10
        return true
    end
    def trait_masochist_addable?(current_selected) #126
        return false if state_stack(126) ==1
        return false if @level < 30
        return true
    end
    def trait_cannibal_addable?(current_selected) #127
        return false if state_stack(127) ==1
        return false if state_stack(117) ==1
        return false if current_selected.include?(117)
        return false if @level < 20
        return true
    end
    
    
    def trait_BloodyMess_addable?(current_selected) #128
        return false if @level < 40
        #return false if state_stack(117) ==1 #weak
        return false if state_stack(128) ==1
        #return false if current_selected.include?(117) #weak
        return true
    end
    
    def trait_exhibitionism_addable?(current_selected) #129
        return false if state_stack(129) ==1
        return false if @level < 5
        return true
    end
    
    def trait_HunterTraining_addable?(current_selected) #130
        return false if state_stack(130) ==1
        return false if @level < 15
        return true
    end
    def trait_prostitute_addable?(current_selected) #131
        return false if state_stack(131) ==1
        return false if @level < 5
        return true
    end
    
    def trait_omnivore_addable?(current_selected) #132
        return false if state_stack(132) ==1
        return false if state_stack(116) ==1
        return false if current_selected.include?(116)
        return false if @level < 15
        return true
    end
    def trait_semengulper_addable?(current_selected) #133
        return false if state_stack(133) ==1
        return false if state_stack(116) ==1
        return false if current_selected.include?(116)
        return false if @level < 15
        return true
    end
    def trait_ManaKnowledge_addable?(current_selected) #134
        return false if state_stack(115) ==1
        return false if state_stack(134) ==1
        return false if state_stack(135) ==1
        return false if current_selected.include?(115) #trait_Nymph_addable
        return false if current_selected.include?(135) #trait_WeaponryKnowledge_addable
        return false if @level < 15
        return true
    end
    
    def trait_WeaponryKnowledge_addable?(current_selected) #135
        return false if state_stack(115) ==1
        return false if state_stack(117) ==1
        return false if state_stack(134) ==1
        return false if state_stack(135) ==1
        return false if current_selected.include?(115) #trait_Nymph_addable
        return false if current_selected.include?(117) #trait_Weaksoul_addable
        return false if current_selected.include?(134) #trait_WeaponryKnowledge_addable
        return false if @level < 15
        return true
    end
    
    def trait_Alchemy_addable?(current_selected) #136
        return false if self.survival_trait <10 #survival
        return false if state_stack(136) ==1
        return false if @level < 10
        return true
    end
    
    def trait_ImproveThrowRock_addable?(current_selected) #137
        return false if self.scoutcraft_trait <10 #scoutcraft
        return false if state_stack(137) ==1
        return false if @level < 15
        return true
    end
    
    def trait_Succubus_addable?(current_selected) #138
        return false if state_stack(115) <1 #Nymph
        return false if state_stack(138) ==1
        return false if @level < 15
        return true
    end
    
    def trait_Lilith_addable?(current_selected) #139
        return false if @level < 40
        return false if state_stack(116) ==1 #ironwill
        return false if state_stack(131) <1 #prostitute
        return false if state_stack(139) ==1 #self
        return false if current_selected.include?(116)
        #return false if current_selected.include?(1) #weak
        return true
    end   
    
    def trait_Hitchhiker_addable?(current_selected) #140
        return false if @level < 30
        return false if self.survival_trait <15 #survival
        return false if state_stack(140) ==1 #self
        return true
    end
    
end