RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
D&D 3.5 Spells per day script request

0 Members and 1 Guest are viewing this topic.

**
Rep: +0/-0Level 81
Campaign - DM
D&D 3.5 Spells per day script request

RMXP:

Description:
Alright, I have done some searching and have found close versions of what I'm looking for but they are not quite right, due to the overwhelming "other" functions and the fact of they only last for a battle before there reset.

what I'm looking for is the Spells per day from Dungeons & Dragons 3.5(the ability to set a number of spell uses, per individual spells and spell levels, in a single day)

for example

if your familiar with D&D 3.5 its in the players handbook in chapter 3 pg 53 for sorc spells per day


for those of you not familiar look at the screen shots


but we continue on to the other classes for example

a paladin can "Smite Evil" once per day, and wont be able to do that again until the party rests(same with the sorc and so on)

also if you could throw in some sort of "passive skill" feature that would be great for the "Feats"(skills) such as "toughness" which in turn adds +3 hitpoints per time you take it!.

i found an old rough version of "Old FF Style Magic" that could be edited to work!
Spoiler for:
Code: text [Select]
#-------------------------------------------------------------------------------
# Old FF Style Spells
#   by Jaberwocky
#-------------------------------------------------------------------------------
SKILLTHINGYELEMENT = 20
SKILLTHINGYMAX = 6
class Game_Actor < Game_Battler
 
  attr_accessor :spellsleft
  attr_accessor :spellsmax
  attr_accessor :spellslevels
 
  alias moosemuffins setup
  def setup(actor_id)
    @spellsmax = [6, 3, 2, 1, 1, 1, 0, 0, 0, 0, 1]
    @spellsleft = [4, 3, 2, 1, 1, 1, 0, 0, 0, 0, 1]
    @spellslevels = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
    moosemuffins(actor_id)
  end
 
  def learn_skill(skill_id)
    if skill_id > 0 and not skill_learn?(skill_id)
      if $data_skills[skill_id].element_set.include?(SKILLTHINGYELEMENT)
        if @spellslevels[$data_skills[skill_id].sp_cost] == SKILLTHINGYMAX
          return
        else
          @skills.push(skill_id)
          @skills.sort!
          @spellslevels[$data_skills[skill_id].sp_cost] += 1
        end
      else
        @skills.push(skill_id)
        @skills.sort!
      end
    end
  end
 
  def forget_skill(skill_id)
    if skill_id > 0 and skill_learn?(skill_id) and
        $data_skills[skill_id].element_set.include?(SKILLTHINGYELEMENT)
      @spellslevels[$data_skills[skill_id].sp_cost] -= 1
    end
    @skills.delete(skill_id)
  end
 
end
 
class Game_Party
 
  def resetspellsleft
    for actor in $game_party.actors
      for i in 0...actor.spellsleft.size
        actor.spellsleft[i] = actor.spellsmax[i]
      end
    end
  end
 
end
 
class Game_Battler
 
  def skill_can_use?(skill_id)
    if $data_skills[skill_id].element_set.include?(SKILLTHINGYELEMENT) and
          self.is_a?(Game_Actor)
      if self.spellsleft[$data_skills[skill_id].sp_cost] == 0
        return false
      end
    else
      # If there's not enough SP, the skill cannot be used.
      if $data_skills[skill_id].sp_cost > self.sp
        return false
      end
    end
    # Unusable if incapacitated
    if dead?
      return false
    end
    # If silent, only physical skills can be used
    if $data_skills[skill_id].atk_f == 0 and self.restriction == 1
      return false
    end
    # Get usable time
    occasion = $data_skills[skill_id].occasion
    # If in battle
    if $game_temp.in_battle
      # Usable with [Normal] and [Only Battle]
      return (occasion == 0 or occasion == 1)
    # If not in battle
    else
      # Usable with [Normal] and [Only Menu]
      return (occasion == 0 or occasion == 2)
    end
  end
 
  def elements_correct(element_set)
    # If not an element
    if element_set == []
      # Return 100
      return 100
    end
    if element_set == [SKILLTHINGYELEMENT]
      return 100
    end
    # Return the weakest object among the elements given
    # * "element_rate" method is defined by Game_Actor and Game_Enemy classes,
    #    which inherit from this class.
    weakest = -100
    for i in element_set
      unless i == SKILLTHINGYELEMENT
        weakest = [weakest, self.element_rate(i)].max
      end
    end
    return weakest
  end
 
end
 
class Window_Skill < Window_Selectable
 
  def draw_item(index)
    skill = @data[index]
    if @actor.skill_can_use?(skill.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
    if skill.element_set.include?(SKILLTHINGYELEMENT)
      self.contents.draw_text(x + 210, y, 70, 32, "Lv" + skill.sp_cost.to_s + " - " + @actor.spellsleft[skill.sp_cost].to_s, 2)
    else
      self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
    end
  end
 
end
 
class Scene_Skill
 
  def update_skill
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      $scene = Scene_Menu.new(1)
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Get currently selected data on the skill window
      @skill = @skill_window.skill
      # If unable to use
      if @skill == nil or not @actor.skill_can_use?(@skill.id)
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      # If effect scope is ally
      if @skill.scope >= 3
        # Activate target window
        @skill_window.active = false
        @target_window.x = (@skill_window.index + 1) % 2 * 304
        @target_window.visible = true
        @target_window.active = true
        # Set cursor position to effect scope (single / all)
        if @skill.scope == 4 || @skill.scope == 6
          @target_window.index = -1
        elsif @skill.scope == 7
          @target_window.index = @actor_index - 10
        else
          @target_window.index = 0
        end
      # If effect scope is other than ally
      else
        # If common event ID is valid
        if @skill.common_event_id > 0
          # Common event call reservation
          $game_temp.common_event_id = @skill.common_event_id
          # Play use skill SE
          $game_system.se_play(@skill.menu_se)
          if @skill.element_set.include?(SKILLTHINGYELEMENT)
            @actor.spellsleft[@skill.sp_cost] -= 1
          else
            # Use up SP
            @actor.sp -= @skill.sp_cost
          end
          # Remake each window content
          @status_window.refresh
          @skill_window.refresh
          @target_window.refresh
          # Switch to map screen
          $scene = Scene_Map.new
          return
        end
      end
      return
    end
    # If R button was pressed
    if Input.trigger?(Input::R)
      # Play cursor SE
      $game_system.se_play($data_system.cursor_se)
      # To next actor
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      # Switch to different skill screen
      $scene = Scene_Skill.new(@actor_index)
      return
    end
    # If L button was pressed
    if Input.trigger?(Input::L)
      # Play cursor SE
      $game_system.se_play($data_system.cursor_se)
      # To previous actor
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      # Switch to different skill screen
      $scene = Scene_Skill.new(@actor_index)
      return
    end
  end
 
  def update_target
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Erase target window
      @skill_window.active = true
      @target_window.visible = false
      @target_window.active = false
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # If unable to use because SP ran out
      unless @actor.skill_can_use?(@skill.id)
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # If target is all
      if @target_window.index == -1
        # Apply skill use effects to entire party
        used = false
        for i in $game_party.actors
          used |= i.skill_effect(@actor, @skill)
        end
      end
      # If target is user
      if @target_window.index <= -2
        # Apply skill use effects to target actor
        target = $game_party.actors[@target_window.index + 10]
        used = target.skill_effect(@actor, @skill)
      end
      # If single target
      if @target_window.index >= 0
        # Apply skill use effects to target actor
        target = $game_party.actors[@target_window.index]
        used = target.skill_effect(@actor, @skill)
      end
      # If skill was used
      if used
        # Play skill use SE
        $game_system.se_play(@skill.menu_se)
        $game_system.se_play(@skill.menu_se)
        if @skill.element_set.include?(SKILLTHINGYELEMENT)
          @actor.spellsleft[@skill.sp_cost] -= 1
        else
          # Use up SP
          @actor.sp -= @skill.sp_cost
        end
        # Remake each window content
        @status_window.refresh
        @skill_window.refresh
        @target_window.refresh
        # If entire party is dead
        if $game_party.all_dead?
          # Switch to game over screen
          $scene = Scene_Gameover.new
          return
        end
        # If command event ID is valid
        if @skill.common_event_id > 0
          # Command event call reservation
          $game_temp.common_event_id = @skill.common_event_id
          # Switch to map screen
          $scene = Scene_Map.new
          return
        end
      end
      # If skill wasn't used
      unless used
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
      end
      return
    end
  end
 
end
 
class Scene_Battle
 
  def make_skill_action_result(battler)
    # Acquiring skill
    @skill = $data_skills[battler.current_action.skill_id]
    # Verification whether or not it is cooperation skill,
    speller = synthe?(battler)
    # If it is not forced action
    unless battler.current_action.forcing
      # When with SP and so on is cut off and it becomes not be able to use
      if speller == nil
        unless battler.skill_can_use?(@skill.id)
          # It moves to step 6
          battler.phase = 6
         return
        end
      end
    end
    # SP consumption
    temp = false
    if speller != nil
      for spell in speller
        if spell.current_action.spell_id == 0
          if @skill.element_set.include?(SKILLTHINGYELEMENT) and
                spell.is_a?(Game_Actor)
            spell.spellsleft[@skill.sp_cost] -= 1
          else
            spell.sp -= @skill.sp_cost
          end
        else
          if $data_skills[spell.current_action.spell_id].element_set.include?(SKILLTHINGYELEMENT) and
                spell.is_a?(Game_Actor)
            spell.spellsleft[$data_skills[spell.current_action.spell_id].sp_cost] -= 1
          else
            spell.sp -= $data_skills[spell.current_action.spell_id].sp_cost
          end
        end
        # Refreshing the status window
        status_refresh(spell)
      end
    else
      if @skill.element_set.include?(SKILLTHINGYELEMENT) and
            battler.is_a?(Game_Actor)
        battler.spellsleft[@skill.sp_cost] -= 1
      else
        battler.sp -= @skill.sp_cost
      end
      # Refreshing the status window
      status_refresh(battler)
    end
    # Setting animation ID
    battler.anime1 = @skill.animation1_id
    battler.anime2 = @skill.animation2_id
    # Setting common event ID
    battler.event = @skill.common_event_id
    # Setting the object side battler
    set_target_battlers(@skill.scope, battler)
    # Applying the effect of skill
    for target in battler.target
      if speller != nil
        damage = 0
        d_result = false
        effective = false
        state_p = []
        state_m = []
        for spell in speller
          if spell.current_action.spell_id != 0
            @skill = $data_skills[spell.current_action.spell_id]
          end
          effective |= target.skill_effect(spell, @skill)
          if target.damage[spell].class != String
            d_result = true
            damage += target.damage[spell]
          elsif effective
            effect = target.damage[spell]
          end
          state_p += target.state_p[spell]
          state_m += target.state_m[spell]
          target.damage.delete(spell)
          target.state_p.delete(spell)
          target.state_m.delete(spell)
        end
        if d_result
          target.damage[battler] = damage
        elsif effective
          target.damage[battler] = effect
        else
          target.damage[battler] = 0
        end
        target.state_p[battler] = state_p
        target.state_m[battler] = state_m
      else
        target.skill_effect(battler, @skill)
      end
    end
  end
 
end


Screen shots:
Spoiler for:


Other Scripts I am using (in order):
CW: DnD Formula



Please and thank you....I'm in need of this