Jump to content

AD-Blocker detected, please disable your ad-blocker when surfing in makerando.com - There is no invasive Ad.


  • Chatbox

    You don't have permission to chat.
    Load More
  1. Denzel


  • Similar Content

    • By MrSte
      Autore: Apellonyx
      Versione: 1.10
      Informazioni: Questo Script aggiunge al gioco la Funzione di Sopravvivenza, tra cui: Fame, Vita, Acqua ecc..
      =begin ====================================== Survival System v1.11 (formerly known as Needs System) Created by: Apellonyx Released: 2 April 2013 Last Update: 5 April 2013 ====================================== Terms of Use: You are free to use this system however you wish, in commercial and non- commercial games alike. If you edit the script extensively, it is not necessary to credit me (since you clearly only used my code as a framework), but I would appreciate credit if it is used in its current form, or if only minor changes were made to the script. ====================================== Support: While I am not wildly active, I usually log onto "rpgmakervxace.com" daily, so if you have any questions pertaining to the script, you can ask any questions there, in the topic in which this script was released. Just as a warning, though, I will not edit the script to make it compatible with any special menu systems, but I will try to fix bugs as they come up. If you find one, let me know, and I'll do my best to squash the thing. ====================================== Changelog: v1.0: 2 April 2013 - Original version. Included food, water, rest, and life. v1.01: 3 April 2013 - Added configurable maximum values for food, water, and rest, and made the maximum for life a configurable value. The failsafe mentioned in v1.0's Instructions is no longer needed. v1.02: 3 April 2013 - Added support for a fully configurable "reverse logic" stat, as suggested by esrann. v1.10: 5 April 2013 - Complete rewrite using global variables rather than game variables and switches. All stats are now optional, configurable, and can be hidden from the menu. v1.11: 17 May 2013 - Fixed a major bug involving the use of float values. Floats should work just fine now without causing the game to crash or the script to just die randomly. Also added background opacity config. ====================================== Requirements: There are no longer any requirements for this script. I'm working on a script that will allow the global variables to be changed through note calls, but it may be a minute for that. ====================================== Description: This sets up a needs system, which includes food, water, and rest, all of which affect the main need, life. The 1.02 update also added a reverse logic stat for toxin or radiation handling. All five stats, along with their update rates, are handled by global variables, and can be changed at any time with a simple script call. ====================================== Instructions: First, you're going to want to set up how you want the script to run. All of the options are in the first module of the script, named "Anyx." I don't recommend changing anything after that module unless you know what you are doing. Second, once you have all of your options set up, you can go about setting up the nourishment items. All you have to do is set it up in the database as you normally would, and then attach an effect that calls a common event. Inside the common event, use one of the following scripts call to change the appropriate variable. It's as simple as that. $survival_v[id] op value id = The stat you want to change. 1 is for life, 2 food, 3 water, 4 rest, and 5 toxin. Ids 6-10 are used to hold the stats' rates. 6 is for life, 7 food, 8 water, 9 rest, and 10 toxin (setting any of these rates to 0 will disable updates for its stat, effectively pausing the system for that stat individually without pausing it for the others) op = The operator used to formulate the new value. += is used to add, -= is for subtraction, *= is for multiplication, /= is for division, and %= is for modulus. There are others, and they all work, but I don't imagine you would use them for this script, so I won't explain them here. value = The value you would like to alter the variable by. For example, if you are adding 10 to a variable, this would be 10. $survival_s[id] = value id = The stat you wish to enable or disable. 1 is for life, 2 food, 3 water, 4 rest, 5 toxin. Ids 6-10 are used to hide the stat bars from the menu. value = true/false. Setting the value to true for ids 1-5 will enable the associated stat. Setting it to false will disable it completely. For ids 6-10, setting the value to true will hide that stat from the menu, but still allow it to update (this can be customized using the LIFEHIDEVAL, FOODHIDEVAL, WATERHIDEVAL, RESTHIDEVAL, and TOXINHIDEVAL options in the Anyx module below. When the hide option is true, that stat will be hidden from the menu until the stat is below the (STAT)HIDEVAL's value, or above the TOXINHIDEVAL's value for the toxin stat). If false, the stat will be visible in the menu at all times. You no longer need to manually set the initial values for each variable, as this can be done through the script, but you do need to turn on the survival switch manually, or the script won't do anything. ====================================== =end $imported = {} if $imported.nil? $imported['Apellonyx-Survival'] = true puts "Load: Survival System v1.10 by Apellonyx" module Anyx WINXPOS = 0 # X position of the survival window WINYPOS = 320 # Y position of the survival window WINWIDTH = 160 # Width of the survival window WINTEXT = 20 # Text size used in the survival window (looks best at 20) WINOPACITY = 255 # Opacity of the survival window SURVIVALSWITCH = 1 # Game switch ID for enabling and disabling the system ONINBATTLE = true # Whether the system will update during battle scenes DEATHATZERO = true # If true, will cause a gameover when the life stat # reaches 0 DEATHFULLTOXIN = true # If true, will cause a gameover when the toxin stat # reaches its maximum value LIFEVOCAB = "Life" # Vocab used for the life stat in the menu LIFEINIT = 100 # Initial value of the life stat in new games LIFERATE = 300 # Number of frames between life stat updates LIFEMAX = 100 # Maximum value for the life bar in the menu LIFEEXC = 100 # Maximum value for the life stat (can exceed LIFEMAX) LIFEENABLE = true # If true, the life stat will be enabled LIFEHIDE = true # If true, the life bar will be hidden from the menu LIFEHIDEVAL = 100 # If LIFEHIDE is true, the life bar will appear when it # falls below this value. FOODVOCAB = "Food" # Vocab used for the food stat in the menu FOODINIT = 100 # Initial value of the food stat in new games FOODRATE = 1200 # Number of frames between food stat updates FOODMAX = 100 # Maximum value for the food bar in the menu FOODEXC = 110 # Maximum value for the food stat (can exceed FOODMAX) FOODMOD = -1.0 # Value of the food stat's change each update; positive # values will increase the stat over time, negative # values decrease the stat over time, and 0 will cause # no update to occur over time. Accepts float values. FOODENABLE = true # If true, the food stat will be enabled FOODHIDE = true # If true, the food bar will be hidden from the menu FOODHIDEVAL = 100 # If FOODHIDE is true, the food bar will appear when it # falls below this value. WATERVOCAB = "Water" # Vocab used for the water stat in the menu WATERINIT = 100 # Initial value of the water stat in new games WATERRATE = 900 # Number of frames between water stat updates WATERMAX = 100 # Maximum value for the water bar in the menu WATEREXC = 110 # Maximum value for the water stat (can exceed WATERMAX) WATERMOD = -1.0 # Value of the water stat's change each update; positive # values will increase the stat over time, negative # values decrease the stat over time, and 0 will cause # no update to occur over time. Accepts float values. WATERENABLE = true # If true, the water stat will be enabled WATERHIDE = true # If true, the water bar will be hidden from the menu WATERHIDEVAL = 100 # If WATERHIDE is true, the water bar will appear when # it falls below this value. RESTVOCAB = "Rest" # Vocab used for the rest stat in the menu RESTINIT = 100 # Initial value of the rest stat in new games RESTRATE = 1500 # Number of frames between rest stat updates RESTMAX = 100 # Maximum value for the rest bar in the menu RESTEXC = 110 # Maximum value for the rest stat (can exceed RESTMAX) RESTMOD = -1.0 # Value of the rest stat's change each update; positive # values will increase the stat over time, negative # values decrease the stat over time, and 0 will cause # no update to occur over time. Accepts float values. RESTENABLE = true # If true, the rest stat will be enabled RESTHIDE = true # If true, the rest bar will be hidden from the menu RESTHIDEVAL = 100 # If RESTHIDE is true, the rest bar will appear when it # falls below this value. TOXINVOCAB = "Toxin" # Vocab used for the toxin stat in the menu TOXININIT = 0 # Initial value of the toxin stat in new games TOXINRATE = 100 # Number of frames between toxin stat updates TOXINMAX = 1000 # Maximum value for the toxin stat and toxin bar TOXINMOD = 0.1 # Value of the toxin stat's change each update; positive # values will increase the stat over time, negative # values decrease the stat over time, and 0 will cause # no update to occur over time. Accepts float values. TOXINENABLE = true # If true, the toxin stat will be enabled TOXINHIDE = true # If true, the toxin bar will be hidden from the menu TOXINHIDEVAL = 0 # If TOXINHIDE is true, the toxin bar will appear when it # rises above this value. LIFECOLORL = 17 # Color ID of the left side of the life bar LIFECOLORR = 6 # Color ID of the right side of the life bar FOODCOLORL = 3 # Color ID of the left side of the food bar FOODCOLORR = 24 # Color ID of the right side of the food bar WATERCOLORL = 16 # Color ID of the left side of the water bar WATERCOLORR = 4 # Color ID of the right side of the water bar RESTCOLORL = 31 # Color ID of the left side of the rest bar RESTCOLORR = 13 # Color ID of the right side of the rest bar TOXINCOLORL = 10 # Color ID of the left side of the toxin bar TOXINCOLORR = 2 # Color ID of the right side of the toxin bar EXCCOLOR = 11 # Color ID of text for stat values over 100% SATCOLOR = 24 # Color ID of text for stat values between 76 and 100% AVECOLOR = 17 # Color ID of text for stat values between 51 and 75% LOWCOLOR = 14 # Color ID of text for stat values between 26 and 50% DANCOLOR = 20 # Color ID of text for stat values between 1 and 25% DEPCOLOR = 18 # Color ID of text for stat values of 0% ################################################################################ ################################################################################ ### ### ### I don't recommend editing anything past this line unless you know what ### ### you are doing. If you do know what you're doing, however, go for it! ### ### ### ################################################################################ ################################################################################ def self.create_survival_commands $survival_v = Survival_Variables.new $survival_s = Survival_Switches.new $survival_v[1] = LIFEINIT $survival_v[6] = LIFERATE $survival_s[1] = LIFEENABLE $survival_s[6] = LIFEHIDE $survival_v[2] = FOODINIT $survival_v[7] = FOODRATE $survival_s[2] = FOODENABLE $survival_s[7] = FOODHIDE $survival_v[3] = WATERINIT $survival_v[8] = WATERRATE $survival_s[3] = WATERENABLE $survival_s[8] = WATERHIDE $survival_v[4] = RESTINIT $survival_v[9] = RESTRATE $survival_s[4] = RESTENABLE $survival_s[9] = RESTHIDE $survival_v[5] = TOXININIT $survival_v[10] = TOXINRATE $survival_s[5] = TOXINENABLE $survival_s[10] = TOXINHIDE end # def self.create_survival_commands class Survival_Variables def initialize @data = [] end # def initialize def [](variable_id) @data[variable_id] || 0 end # def [](variable_id) def []=(variable_id, value) @data[variable_id] = value on_change end # def []=(variable_id, value) def on_change $game_map.need_refresh = true end # def on_change end # class Survival_Variables class Survival_Switches def initialize @data = [] end # def initialize def [](switch_id) @data[switch_id] || false end # def [](switch_id) def []=(switch_id, value) @data[switch_id] = value on_change end # def []=(switch_id, value) def on_change $game_map.need_refresh = true end # def on_change end # class Survival_Switches def self.update if $game_switches[SURVIVALSWITCH] == true if $survival_s[1] == true if $survival_v[6] > 0 if Graphics.frame_count % $survival_v[6] == 0 Anyx.life_update end # if Graphics.frame_count % $survival_v[6] == 0 end # if $survival_v[6] > 0 end # if $survival_s[1] == true if $survival_s[2] == true if $survival_v[7] > 0 if Graphics.frame_count % $survival_v[7] == 0 if $survival_v[2] < FOODEXC $survival_v[2] += FOODMOD if $survival_v[2] > 0 end end # if Graphics.frame_count % $survival_v[7] == 0 end # if $survival_v[7] > 0 end # if $survival_s[1] == true if $survival_s[3] == true if $survival_v[8] > 0 if Graphics.frame_count % $survival_v[8] == 0 if $survival_v[3] < WATEREXC $survival_v[3] += WATERMOD if $survival_v[3] > 0 end end # if Graphics.frame_count % $survival_v[8] == 0 end # if $survival_v[8] > 0 end # if $survival_s[3] == true if $survival_s[4] == true if $survival_v[9] > 0 if Graphics.frame_count % $survival_v[9] == 0 if $survival_v[4] < RESTEXC $survival_v[4] += RESTMOD if $survival_v[4] > 0 end end # if Graphics.frame_count % $survival_v[9] == 0 end # if $survival_v[9] > 0 end # if $survival_s[4] == true if $survival_s[5] == true if $survival_v[10] > 0 if Graphics.frame_count % $survival_v[10] == 0 if $survival_v[5] < TOXINMAX $survival_v[5] += TOXINMOD if $survival_v[5] > 0 end end # if Graphics.frame_count % $survival_v[10] == 0 end # if $survival_v[10] > 0 end # if $survival_s[5] == true $survival_v[1] = 0 if $survival_v[1] < 0 $survival_v[2] = 0 if $survival_v[2] < 0 $survival_v[3] = 0 if $survival_v[3] < 0 $survival_v[4] = 0 if $survival_v[4] < 0 $survival_v[5] = 0 if $survival_v[5] < 0 $survival_v[1] = LIFEEXC if $survival_v[1] > LIFEEXC $survival_v[2] = FOODEXC if $survival_v[2] > FOODEXC $survival_v[3] = WATEREXC if $survival_v[3] > WATEREXC $survival_v[4] = RESTEXC if $survival_v[4] > RESTEXC $survival_v[5] = TOXINMAX if $survival_v[5] > TOXINMAX if $survival_v[1] <= 0 SceneManager.call(Scene_Gameover) if DEATHATZERO end # if $survival_v[1] <= 0 if $survival_v[5] >= TOXINMAX SceneManager.call(Scene_Gameover) if DEATHFULLTOXIN end # if $survival_v[5] >= TOXINMAX end # if $game_switches[SURVIVALSWITCH] == true end # def update def self.life_update if $survival_s[2] == true food_25 = FOODMAX / 4 food_26 = food_25 + 0.001 food_50 = food_25 * 2 food_51 = food_50 + 0.001 food_75 = food_25 * 3 food_76 = food_75 + 0.001 food_mod = -0.3 if 0 >= $survival_v[2] food_mod = -0.2 if (1..food_25) === $survival_v[2] food_mod = -0.1 if (food_26..food_50) === $survival_v[2] food_mod = 0.0 if (food_51..food_75) === $survival_v[2] food_mod = 0.1 if (food_76..FOODMAX) === $survival_v[2] food_mod = 0.2 if FOODMAX < $survival_v[2] else food_mod = 0 end # if $survival_s[2] == true if $survival_s[3] == true water_25 = WATERMAX / 4 water_26 = water_25 + 0.001 water_50 = water_25 * 2 water_51 = water_50 + 0.001 water_75 = water_25 * 3 water_76 = water_75 + 0.001 water_mod = -0.3 if 0 >= $survival_v[3] water_mod = -0.2 if (1..water_25) === $survival_v[3] water_mod = -0.1 if (water_26..water_50) === $survival_v[3] water_mod = 0.0 if (water_51..water_75) === $survival_v[3] water_mod = 0.1 if (water_76..WATERMAX) === $survival_v[3] water_mod = 0.2 if WATERMAX < $survival_v[3] else water_mod = 0 end # if $survival_s[4] == true if $survival_s[4] == true rest_25 = RESTMAX / 4 rest_26 = rest_25 + 0.001 rest_50 = rest_25 * 2 rest_51 = rest_50 + 0.001 rest_75 = rest_25 * 3 rest_76 = rest_75 + 0.001 rest_mod = -0.3 if 0 >= $survival_v[4] rest_mod = -0.2 if (1..rest_25) === $survival_v[4] rest_mod = -0.1 if (rest_26..rest_50) === $survival_v[4] rest_mod = 0.0 if (rest_51..rest_75) === $survival_v[4] rest_mod = 0.1 if (rest_76..RESTMAX) === $survival_v[4] rest_mod = 0.2 if RESTMAX < $survival_v[4] else rest_mod = 0 end # if $survival_s[4] == true if $survival_s[5] == true toxin_25 = TOXINMAX / 4 toxin_26 = toxin_25 + 0.001 toxin_50 = toxin_25 * 2 toxin_51 = toxin_50 + 0.001 toxin_75 = toxin_25 * 3 toxin_76 = toxin_75 + 0.001 toxin_99 = TOXINMAX - 0.001 toxin_mod = 0.1 if 0 >= $survival_v[5] toxin_mod = 0.0 if (1..toxin_25) === $survival_v[5] toxin_mod = -0.2 if (toxin_26..toxin_50) === $survival_v[5] toxin_mod = -0.4 if (toxin_51..toxin_75) === $survival_v[5] toxin_mod = -0.6 if (toxin_76..toxin_99) === $survival_v[5] toxin_mod = -0.8 if TOXINMAX <= $survival_v[5] else toxin_mod = 0.0 end # if $survival_s[5] == true life_mod = food_mod + water_mod + rest_mod + toxin_mod $survival_v[1] += life_mod.round.to_i end # def life_update() end # module Anyx class Scene_Title alias survival_new_game command_new_game def command_new_game Anyx.create_survival_commands survival_new_game end # def command_new_game end # class Scene_Title class Scene_Map < Scene_Base alias survival_map_update update def update Anyx.update survival_map_update end # def update end # class Scene_Base class Scene_Battle < Scene_Base alias survival_battle_update update def update if Anyx::ONINBATTLE == true Anyx.update survival_battle_update end # if Anyx::ONINBATTLE == true end # def update end # class Scene_Base class Scene_Menu < Scene_MenuBase alias survival_menu_start start def start create_survival_window survival_menu_start end # def start def create_survival_window barcount = 0 if $survival_s[1] == true barcount += 1 if $survival_s[6] == false || $survival_v[1] < Anyx::LIFEHIDEVAL end # if $survival_s[1] == true if $survival_s[2] == true barcount += 1 if $survival_s[7] == false || $survival_v[2] < Anyx::FOODHIDEVAL end # if $survival_s[2] == true if $survival_s[3] == true barcount += 1 if $survival_s[8] == false || $survival_v[3] < Anyx::WATERHIDEVAL end # if $survival_s[3] == true if $survival_s[4] == true barcount += 1 if $survival_s[9] == false || $survival_v[4] < Anyx::RESTHIDEVAL end # if $survival_s[4] == true if $survival_s[5] == true barcount += 1 if $survival_s[10] == false || $survival_v[5] > Anyx::TOXINHIDEVAL end # if $survival_s[5] == true @survival_window = Window_Survival.new @survival_window.contents.draw_text(0, 0, 500, 24, " Survival System") if barcount == 0 barcount -= 1 if barcount >= 1 survivalwinypos = Anyx::WINYPOS - (24 * barcount) @survival_window.x = Anyx::WINXPOS @survival_window.y = survivalwinypos @survival_window.opacity = Anyx::WINOPACITY end # def create_survival_window end # class Scene_Menu < Scene_MenuBase class Window_Survival < Window_Base def initialize winheight = 0 if $survival_s[1] == true winheight += 1 if $survival_s[6] == false || $survival_v[1] < Anyx::LIFEHIDEVAL end # if $survival_s[1] == true if $survival_s[2] == true winheight += 1 if $survival_s[7] == false || $survival_v[2] < Anyx::FOODHIDEVAL end # if $survival_s[2] == true if $survival_s[3] == true winheight += 1 if $survival_s[8] == false || $survival_v[3] < Anyx::WATERHIDEVAL end # if $survival_s[3] == true if $survival_s[4] == true winheight += 1 if $survival_s[9] == false || $survival_v[4] < Anyx::RESTHIDEVAL end # if $survival_s[4] == true if $survival_s[5] == true winheight += 1 if $survival_s[10] == false || $survival_v[5] > Anyx::TOXINHIDEVAL end # if $survival_s[5] == true if winheight == 0 winheight = 1 end # if winheight == 0 super(0, 0, Anyx::WINWIDTH, fitting_height(winheight)) self.opacity = Anyx::WINOPACITY refresh end # def initialize def exc_color text_color(Anyx::EXCCOLOR) end # def exc_color def sat_color text_color(Anyx::SATCOLOR) end # def sat_color def ave_color text_color(Anyx::AVECOLOR) end # def ave_color def low_color text_color(Anyx::LOWCOLOR) end # def low_color def dan_color text_color(Anyx::DANCOLOR) end # def dan_color def dep_color text_color(Anyx::DEPCOLOR) end # def dep_color def refresh contents.clear contents.font.size = Anyx::WINTEXT lineheight = 0 if $survival_s[1] == true if $survival_s[6] == false || $survival_v[1] < Anyx::LIFEHIDEVAL draw_life(0,0,lineheight) lineheight += 24 end # if $survival_s[6] == false || $survival_v[1] < Anyx::LIFEHIDEVAL end # if $survival_s[1] == true if $survival_s[2] == true if $survival_s[7] == false || $survival_v[2] < Anyx::FOODHIDEVAL draw_food(0,0,lineheight) lineheight += 24 end # if $survival_s[7] == false || $survival_v[2] < Anyx::FOODHIDEVAL end # if $survival_s[2] == true if $survival_s[3] == true if $survival_s[8] == false || $survival_v[3] < Anyx::WATERHIDEVAL draw_water(0,0,lineheight) lineheight += 24 end # if $survival_s[8] == false || $survival_v[3] < Anyx::WATERHIDEVAL end # if $survival_s[3] == true if $survival_s[4] == true if $survival_s[9] == false || $survival_v[4] < Anyx::RESTHIDEVAL draw_rest(0,0,lineheight) lineheight += 24 end # if $survival_s[9] == false || $survival_v[4] < Anyx::RESTHIDEVAL end # if $survival_s[4] == true if $survival_s[5] == true if $survival_s[10] == false || $survival_v[5] > Anyx::TOXINHIDEVAL draw_toxin(0,0,lineheight) lineheight += 24 end # if $survival_s[10] == false || $survival_v[5] > Anyx::TOXINHIDEVAL end # if $survival_s[5] == true end # def refresh def draw_life(actor, x, y, width = Anyx::WINWIDTH - 22) life_25 = Anyx::LIFEMAX / 4 life_26 = life_25 + 0.001 life_50 = life_25 * 2 life_51 = life_50 + 0.001 life_75 = life_25 * 3 life_76 = life_75 + 0.001 life_99 = Anyx::LIFEMAX - 0.001 life_color = dep_color if 1 > $survival_v[1] life_color = dan_color if (1..life_25) === $survival_v[1] life_color = low_color if (life_26..life_50) === $survival_v[1] life_color = ave_color if (life_51..life_75) === $survival_v[1] life_color = sat_color if (life_76..life_99) === $survival_v[1] life_color = exc_color if Anyx::LIFEMAX <= $survival_v[1] life_rate = $survival_v[1] / Anyx::LIFEMAX.to_f draw_gauge(x, y, width, life_rate, text_color(Anyx::LIFECOLORL), text_color(Anyx::LIFECOLORR)) change_color(system_color) draw_text(x, y, 100, line_height, Anyx::LIFEVOCAB) draw_current_and_max_values(x, y, width, $survival_v[1].round.to_i, Anyx::LIFEMAX, life_color, life_color) end # def draw_life(actor, x, y, width = Anyx::WINWIDTH - 22) def draw_food(actor, x, y, width = Anyx::WINWIDTH - 22) food_25 = Anyx::FOODMAX / 4 food_26 = food_25 + 0.001 food_50 = food_25 * 2 food_51 = food_50 + 0.001 food_75 = food_25 * 3 food_76 = food_75 + 0.001 food_99 = Anyx::FOODMAX - 0.001 food_color = dep_color if 1 > $survival_v[2] food_color = dan_color if (1..food_25) === $survival_v[2] food_color = low_color if (food_26..food_50) === $survival_v[2] food_color = ave_color if (food_51..food_75) === $survival_v[2] food_color = sat_color if (food_76..food_99) === $survival_v[2] food_color = exc_color if Anyx::FOODMAX <= $survival_v[2] food_rate = $survival_v[2] / Anyx::FOODMAX.to_f draw_gauge(x, y, width, food_rate, text_color(Anyx::FOODCOLORL), text_color(Anyx::FOODCOLORR)) change_color(system_color) draw_text(x, y, 100, line_height, Anyx::FOODVOCAB) draw_current_and_max_values(x, y, width, $survival_v[2].round.to_i, Anyx::FOODMAX, food_color, food_color) end # def draw_food(actor, x, y, width = Anyx::WINWIDTH - 22) def draw_water(actor, x, y, width = Anyx::WINWIDTH - 22) water_25 = Anyx::WATERMAX / 4 water_26 = water_25 + 0.001 water_50 = water_25 * 2 water_51 = water_50 + 0.001 water_75 = water_25 * 3 water_76 = water_75 + 0.001 water_99 = Anyx::WATERMAX - 0.001 water_color = dep_color if 1 > $survival_v[3] water_color = dan_color if (1..water_25) === $survival_v[3] water_color = low_color if (water_26..water_50) === $survival_v[3] water_color = ave_color if (water_51..water_75) === $survival_v[3] water_color = sat_color if (water_76..water_99) === $survival_v[3] water_color = exc_color if Anyx::WATERMAX <= $survival_v[3] water_rate = $survival_v[3] / Anyx::WATERMAX.to_f draw_gauge(x, y, width, water_rate, text_color(Anyx::WATERCOLORL), text_color(Anyx::WATERCOLORR)) change_color(system_color) draw_text(x, y, 100, line_height, Anyx::WATERVOCAB) draw_current_and_max_values(x, y, width, $survival_v[3].round.to_i, Anyx::WATERMAX, water_color, water_color) end # def draw_water(actor, x, y, width = Anyx::WINWIDTH - 22) def draw_rest(actor, x, y, width = Anyx::WINWIDTH - 22) rest_25 = Anyx::WATERMAX / 4 rest_26 = rest_25 + 0.001 rest_50 = rest_25 * 2 rest_51 = rest_50 + 0.001 rest_75 = rest_25 * 3 rest_76 = rest_75 + 0.001 rest_99 = Anyx::RESTMAX - 0.001 rest_color = dep_color if 1 > $survival_v[4] rest_color = dan_color if (1..rest_25) === $survival_v[4] rest_color = low_color if (rest_26..rest_50) === $survival_v[4] rest_color = ave_color if (rest_51..rest_75) === $survival_v[4] rest_color = sat_color if (rest_76..rest_99) === $survival_v[4] rest_color = exc_color if Anyx::RESTMAX <= $survival_v[4] rest_rate = $survival_v[4] / Anyx::RESTMAX.to_f draw_gauge(x, y, width, rest_rate, text_color(Anyx::RESTCOLORL), text_color(Anyx::RESTCOLORR)) change_color(system_color) draw_text(x, y, 100, line_height, Anyx::RESTVOCAB) draw_current_and_max_values(x, y, width, $survival_v[4].round.to_i, Anyx::RESTMAX, rest_color, rest_color) end # def draw_rest(actor, x, y, width = Anyx::WINWIDTH - 22) def draw_toxin(actor, x, y, width = Anyx::WINWIDTH - 22) toxin_25 = Anyx::TOXINMAX / 4 toxin_26 = toxin_25 + 0.001 toxin_50 = toxin_25 * 2 toxin_51 = toxin_50 + 0.001 toxin_75 = toxin_25 * 3 toxin_76 = toxin_75 + 0.001 toxin_99 = Anyx::TOXINMAX - 0.001 toxin_color = exc_color if 1 > $survival_v[5] toxin_color = sat_color if (1..toxin_25) === $survival_v[5] toxin_color = ave_color if (toxin_26..toxin_50) === $survival_v[5] toxin_color = low_color if (toxin_51..toxin_75) === $survival_v[5] toxin_color = dan_color if (toxin_76..toxin_99) === $survival_v[5] toxin_color = dep_color if Anyx::TOXINMAX <= $survival_v[5] toxin_rate = $survival_v[5] / Anyx::TOXINMAX.to_f draw_gauge(x, y, width, toxin_rate, text_color(Anyx::TOXINCOLORL), text_color(Anyx::TOXINCOLORR)) change_color(system_color) draw_text(x, y, 100, line_height, Anyx::TOXINVOCAB) draw_current_and_max_values(x, y, width, $survival_v[5].round.to_i, Anyx::TOXINMAX, toxin_color, toxin_color) end # def draw_toxin(actor, x, y, width = Anyx::WINWIDTH - 22) end # class module DataManager def self.make_save_contents contents = {} contents[:system] = $game_system contents[:timer] = $game_timer contents[:message] = $game_message contents[:switches] = $game_switches contents[:variables] = $game_variables contents[:self_switches] = $game_self_switches contents[:actors] = $game_actors contents[:party] = $game_party contents[:troop] = $game_troop contents[:map] = $game_map contents[:player] = $game_player contents[:anyx_ss] = $survival_s contents[:anyx_sv] = $survival_v contents end # self.make_save_contents def self.extract_save_contents(contents) $game_system = contents[:system] $game_timer = contents[:timer] $game_message = contents[:message] $game_switches = contents[:switches] $game_variables = contents[:variables] $game_self_switches = contents[:self_switches] $game_actors = contents[:actors] $game_party = contents[:party] $game_troop = contents[:troop] $game_map = contents[:map] $game_player = contents[:player] $survival_s = contents[:anyx_ss] $survival_v = contents[:anyx_sv] end # self.extract_save_contents(contents) end # module DataManager  
    • By Ghost Rider
      Salve amici di Makerando.com, oggi vorrei presentarvi il progetto a cui sto lavorando (parallelamente a DH) da qualche anno.
      Nato a fine 2004, inizio 2005, dopo una pausa dal making (per troppi impegni) durata poco meno di un annetto, Sacred Hell venne abbandonato per mancanza di idee (e perchè non mi piaceva la piega che stava prendendo) dopo qualche mese di lavoro, per dedicarmi ad altro.
      Nel 2015 feci provare il progetto (quello che avevo realizzato) alla mia dolce metà, nel mentre ero in una delle mie (frequenti) pause dal mio più grande progetto (Dragonheart “Forever”) e stavo lavorando a un un battle system, che modifica pesantemente il BS classico di RPG Maker 2003, con l'idea di pubblicarlo come “template” che chiunque potesse poi modificare per usare nei propri giochi, ed eventualmente di farci un giochino di due o tre mappe attorno, per farne capire il funzionamento... di questo BS parleremo dopo, intanto la mia consorte mi propone di lavorare insieme ad un reboot di Sacred Hell (proprio con questo BS) con lei alla parte grafica e io alla programmazione... e siccome avevo già quache ideuzza per la testa ho accettato, e così nasce questo progetto.
      Detto questo, la Ghost Rider Production è lieta di presentare...
      logo soggetto a cambiamento
      ...un gioco di Ghost Rider e Miha88.
      Tipologia/Genere: jRPG
      Rispetto all'originale, che era ambientato in un mondo a metà tra il moderno e il tipico fina-fantasy-esco, questo reboot di Sacred Hell si discosta di più dallo stile “fantasy”, e abbandona le città pseudo medievali e le verdi foreste, per portarci in un mondo un po' più cupo e fantascentifico.
      Un classico esempio di questo cambiamento, sono quelle che nel gioco originale erano chiamate Rune (che funzionavano in modo molto simile alle materia di FF7), veri e propri oggetti magici; in questo reboot esistono ancora, con il nome di R.U.N.E. (una sigla di cui ancora non ho deciso del tutto il significato; la R sta per replicatore o riproduttore, N sta per nano, e E per Elementale... la U al momento mi manca...); in pratica all'elemento “magico” dell'originale è stata data una sorta di spiegazione (fanta)scentifica. E' stato introdotto il concetto di nano-macchine, che avranno un ruolo abbastanza centrale nel gioco.
      Nel gioco originale, a un certo punto le vaire tensioni politiche sarebbero dovute sfociare in una guerra nucleare su scala mondiale, in questo reboot ho immaginato che la guerra ci sia già stata, lasciando il mondo devastato, tuttavia a differenza di altri scenari post-apocalittici, ho voluto comunque inserire una parvenza di governo e civiltà, almeno in alcune regioni del mondo di gioco.
      Sacred Hell era, ed è rimasto un GDR abbastanza tradizionale, quindi simile, nel funzionamento, ai classici Final Fantasy (detti anche jRPG per differenziarli da quelli “all'occidentale” che hanno un gameplay leggermente diverso). Il gioco alterna fasi di esplorazione a fasi di combattimento, ed è su queste ultime che ci soffermeremo maggiormente.
      Come accennavo all'inizio, prima di dare il via a questo progetto, stavo lavorando ad un “template” per un battle system, da mettere a disposizione di tutti. Premesso che – al momento opportuno – chiunque potrà ancora usare il mio BS se lo desidera, alla fine ho deciso di utilizzarlo per questo reboot per primo...

      I fan più sfegatati di GDR sicuramente avranno già colto il significato del nome: Xeno da Xenogears, e Cross da Chrono Cross.
      A.R.T.S. Fisiche:
      Nello specifico, il gioco “ruba” da xenogears il sistema di combinazioni di attacchi; selezionando il comando attacco, infatti, il giocatore dovrà inserire (utilizzando i tasti ▼ , ◄/► o ▲) combinazioni di attacchi debole, medio e forte, in base a quanti Punti Combo possiede.
      L'attacco debole (▼) costa 1 punto combo, infligge un danno minore e non effettua colpo critico, ma ha il 100% di possibilità di colpire (esclusa la normale % di evasione del nemico);
      L'attacco Medio (◄/►) costa 2 punti combo, infligge danno moderato, ha un'alta possibilità di colpire e può infliggere colpo critico;
      L'attacco Forte (▲) costa 3 punti combo, infligge più danno, e ha una possibilità maggiore di mettere a segno un colpo critico, ma è più facile che manchi il bersaglio;

      I punti combo aumentano progredendo col gioco, e vanno da un minimo di 3 a un massimo di 7;
      Effettuando combinazioni da 4 o più, che terminano con un attacco forte (esempio Debole + Forte), il personaggio metterà a segno una tecnica chiamata A.R.T.S. Fisica, un attacco più forte del normale.

      Ogni personaggio ha il suo repertorio di A.R.T.S. Fisiche che verrà ampliato nel corso del gioco.
      Modalità Turbo e Ultra A.R.T.S.:
      Le A.R.T.S. Fisiche standard si dividono in quattro categorie: Super (4 Colpi), Hyper (5 colpi), Brutal (6 colpi) e Master (7 colpi). Esiste tuttavia un'ulteriore categoria che racchiude le A.R.T.S. Fisiche più potenti: le Ultra A.R.T.S.

      Per effettuare un' Ultra, il personaggio deve innanzitutto averla appresa, soddisfacendo alcuni requisiti (tra cui disporre dell'effettiva quantità di punti combo), in più deve entrare in modalità Turbo, ciò è possibile riempiendo un segmento visibile vicino alla sua interfaccia in battaglia.

      Il segmento si riempie attaccando, e quando raggiunge il massimo il personaggio attiva la modalità TURBO per qualche turno (nota: nello screen di sopra l'icona riporta ancora la vecchia sigla EX).

      In questa modalità, il personaggio riceve un potenziamento temporaneo, ma – più importante – mettendo a segno una A.R.T.S. Fisica di classe Super, Hyer o Brutal, il giocatore avrà a disposizione qualche secondo prima dell'attacco per premere il tasto SHIFT e trasformarla in una A.R.T.S. Ultra rispettivamente di primo, secodo e terzo grado (in ordine di potenza).
      Le R.U.N.E.:
      L'altra faccia del Battle System, la parte “Cross”, ruota attorno alle Rune, o per meglio dire, R.U.N.E. , che permettono ai personaggi di utilizzare poteri e abilità equivalenti alle tipiche magie che caratterizzano di questo genere di giochi.
      Le RUNE vengono equipaggiate in un apposito menu; Ogni personaggio possiede un numero di slot per le RUNE, che varia man mano che sale di livello. Gli slot sono divisi per livello, da 1 a 7. Ci sono in tutto 14 rune, da ripartire a piacimento tra i vari livelli. In base al livello dello slot in cui una certa runa viene equipaggiata, il personaggio imparerà un potere diverso.
      Esempio pratico: equipaggiando la runa Fuoco a livello 1 conferirà il potere Scorch, mentre la stessa runa equipaggiata in uno slot livello 2, darà al personaggio il potere Ignite Air.
      Ogni runa permette di utilizzare il suo potere una sola volta, tuttavia equipaggiando più volte la stessa runa allo stesso livello, aumenterà il numero di volte che quel potere può essere utilizzato. A fine battaglia tutte le rune si ricaricano.
      Equipaggiare le rune porta anche una leggera variazione nelle caratteristiche del personaggio.
      Crescita del Personaggio: Armi ed Espansione:
      Nel gioco originale non c'era il tradizionale “level up”, ma le statistiche dei PG variavano di tanto in tanto in base alle loro prestazioni in battaglia. In questo reboot, si ritorna, almeno all'apparenza, ad un sistema più tradizionale: come nella maggioranza dei GDR, i personaggi accumulano esperienza vincendo le varie battaglie e – raggiunta una certa soglia – questi sale di livello.
      Il mero collezionare livelli però, non porta a nulla, infatti le statistiche del personaggio non cambiano salendo di livello, bensì questi riceve dei “Punti Espansione”, che gli permettono di potenziare le proprie armi, le quali hanno diretta influenza sul modo in cui le caratteristiche PF, Forza, Resistenza etc... aumentano salendo di livello.


      In definitiva si può dire che le armi qui fungono un po' come le “Classi” in un tradizionale RPG.
      Oltre a questo, l'espansione delle armi può portare altri vantaggi come slot Moduli (vedi sotto), slot RUNE aggiuntivi e altre cose...
      Le armi salgono di livello man mano che vengono espanse, donando un ulteriore bonus permanente (o meglio che permane fintanto che l'arma è equipaggiata).
      I Moduli, o Mod, sono upgrade dell'arma che si comportano come i tipici accessori, quindi offrono un gran numero di benefici diversi tra loro; dal potenziamento di una statistica, a buff permanenti, resistenza a tipi di danno, etc...

      Un personaggio può equipaggiare fino a quattro moduli, a patto che sblocchi i vari slot espandendo le armi.

      Se i bonus delle armi restano attivi solo fintanto che l'arma è equipaggiata, i talenti offrono invece bonus permanenti, sempre attivi a prescindere dal resto.
      Ogni personaggio dispone di tre diversi “rami” di talenti in cui svilupparsi. Come gia detto, i talenti sono staccati dalle armi; scegliere i giusti talenti con un arma le cui abilità sono simili, rende il vostro personaggio più efficace; tuttavia potreste anche decidere, ad esempio, di scegliere un'arma che favorisce una caratteristica a scapito di un'altra, e utilizzare, laddove possibile, i talenti per sopperire a quella mancante, in modo da ammortizzare i punti deboli del personaggio...

      Insomma la crescita dei personaggi è molto personalizzabile, e sta a voi trovare la strada che più si addice al vostro stile di gioco.
      A.R.T.S. Mistiche:
      Le A.R.T.S. (Arti Runiche e Tecniche Speciali) sono di due tipi, Fisiche che abbiamo già visto, le quali si effettuano con le giuste combinazioni di tasti, e Mistiche; Queste ultime si apprendono generalmente tramite talenti, e vanno equipaggiate tramite un apposito menu e funzionano in maniera simile alle rune con le sostanziali differenze che non si scaricano dopo l'uso, punto primo; punto secondo sono uniche per ogni personaggio.
      Altre features che non riguardano la componente “Combattimento” del gioco includono (ma non sono limitate a:
      Dungeon non lineari, arricchite con piccoli puzzle ed enigmi;
      World Map esplorabile;
      Licenza di Caccia e altre Missioni Secondarie;
      Minigiochi vari;
      Collectibles e segreti vari;
      Tanto altro ancora...
      Comparto Grafico:
      La grafica, affidata a Miha (e con la partecipazione più o meno volontaria di Kaine da cui ho saccheggiato tanta roba ), è composta in parte da risorse trovate in giro, in parte da lavori originali, e a volte un mix delle due cose.
      Cercheremo il più possibile di mantenere uno stile uniforme, alcune risorse potranno essere cambiate nel corso dello sviluppo.
      I vari menù sono quasi tutti personalizzati (salvo un paio di schermate). Per i portrait dei personaggi abbiamo optato per lo stile “fire emblem”, che se da un lato ha il difetto di essere comune a tantissimi progetti rpg maker, dall'altra ha il pregio che possono essere modificati talmente bene da non riuscire a riconoscere qual'era il portrait originale.

      Per la grafica di gioco invece, abbiamo optato per tenere uno stile uniforme tra battaglie e mappe di gioco, e abbiamo lo scelto (come vedrete dagli screen più sotto) lo stile grafico di Chrono Trigger, che riteniamo abbastanza versatile.
      Anno 2000 Circa 38 anni fa
      All'inizio del secolo, scavi archeologici in tutto il mondo portano alla luce manufatti appartenuti ad una civiltà antecedente all'uomo. Minerali e materie prime mai viste prima, mezzi di trasporto all'avanguardia e tecnologie civili e militari anni luce avanti. Nasce ogni genere di mito e leggenda verso questa “prima civiltà”, che col tempo prende il nome di “Origins”.
      Anno 2001
      Da parte di ogni paese vi è una vera e propria corsa ad accaparrarsi queste nuove tecologie; l'ossessione per ottenerne il più possibile porta alcuni stati a violare la sovranità di altri, ricorrendo addirittura ad incursioni e altre tattiche simili.
      Anno 2005
      Le tensioni tra stati portano ad un primo coflitto mondiale.
      Anno 2007
      Grazie a macchinari e alle nuve risorse, rinvenuti dagli scavi, il continente di Caladan costruisce, in tempo da record, una sorta di treno super veloce che raggiunge il centro della terra, vicino al cui nucleo costriusce una centrale geotermica che gli garantisce energia elettrica illimitata.
      Anno 2008
      Sul continente di Taligari vengono scoperte le prime nano-macchine, microscopici robot, invisibili ad occhio nudo, che possono entrare in simbiosi con gli esseri umani. Sebbene non se ne conosca ancora la natura, il governo di Taligari da inizio alla creazione in massa di R.U.N.E.; congegni in grado di generare fenomeni simili a magia, e stimolanti che potenziano le capacità psicofisiche dei soldati.
      Anno 2012
      Il conflitto termina in una situazione di stallo, e i leader politici di quasi tutti gli stati decidono di mettere da parte le ostilità e mettere in comune le tecnologie fin ora ritrovate.
      L'imprenditore e fabbricante di armi Balthasar Corrino fonda la Marshall Arms, che in breve tempo diviene il colosso dell'industria bellica.
      Anno 2013
      Dopo mesi di dibattiti viene istituita un'alleanza politica, economica e militare tra Caladan, Taligari e altri paesi, allo scopo di condividere risorse e scoperte, e di proteggersi a vicenda contro eventuali invasori. Questa alleanza prende il nome di Landsraad. Ogni paese può liberamente farne parte, se accetta di condividere le proprie risorse con tutti, a chi non ne fa parte viene garantita comunque la neutralità e possibili accordi commerciali.
      Anno 2014
      A Caladan viene istituito il corpo dei Mageknights, soldati scelti in grado di utilizzare poteri simili a quelli delle R.U.N.E. ma senza l'ausilio di congegni esterni, bensi tramite iniezioni controllate di nano-macchine.
      Anno 2029
      Melkior Harkonnen vince le elezioni e diventa presidente della republica di Taligari.
      Il governo Harknonnen subappalta la Nidhogr Network, una grossa società leader in campo di telecomuncazioni, ma anche video sorveglianza, radiofonia, e sicurezza privata.
      Anno 2033
      Le varie tribù del continente di Arrakis, la Regione Desertica, che fino a poco prima erano costantemente in guerra tra loro da generazioni, si alleano in un unica coalizione e iniziano ad accare sistematicamente tutti gli stati del Landsraad, in quanto pretendono di aver accesso a tutte le tecnologie ma senza fornire niente in cambio e senza aderire al patto.
      Anno 2034
      Harkonnen viene riconfermato presidente per un secondo mandato.
      Dopo due decenni di pace, i paesi del Landsraad entrano ufficialmente in guerra con Arrakis;
      Viene istituito il corpo militare delle Forze Speciali, composto dai migliori soldati di tutti i paesi del Landsraad.
      Anno 2035 L'Apocalisse
      Un ondata di missili nucleari parte da una delle basi nel deserto intorno ad Arraken, capitale di Arrakis. Terrorizzati, a Caladan rispondo a questo “affronto” nuclearizzando a loro volta Arrakis e suoi alleati, che a loro volta lanciano missili contro Caladan e gli altri stati del Lansraad.
      Caladan City rimane intatta grazie ad uno scudo impenetrabile, alimentato costantemente dalla centrale geotermica, il resto del mondo diventa per il 90% inabitabile a causa dei gas tossici delle armi chimiche e nucleari usate durante il conflitto.
      Il resto del continente di Caladan è ridotto a una landa desolata.
      Il continente di Taligari rimane l'unico continente con una superfice abitabile abbastanza ampia, sebbene la sua più grande città, Delia, venga quasi interamente rasa al suolo, e il continente è letteralmente spaccato in due da una striscia di terra contaminata chiamata in via informale “La Cicatrice”.
      Anno 2036
      A Caladan City si inizia ad affrontare il problema del sovraffollamento, per via del fatto che molte persone da tutto il continente e da altri paesi vicini si sono riversati lì sapendo dello scudo.
      Viene avviato il Progetto Exodus che consiste nel condurre a Taligari tutti i “non residenti” espandendo il tunnel che conduce alla centrale geotermica, e creare un passaggio diretto tra i due continenti.
      Intanto a Taligari il paese è preda delle bande e gruppi più o meno spietati di sopravvissuti; l'mministrazione Harkonnen fa fatica a mantenere l'ordine.
      In poco più di sei mesi i lavori vengono ultimati, non senza polemiche e agitazioni, rivolte cittadine etc... ma alla fine il treno, ribattezzato “Red Sea Train” effettua il suo primo viaggio per Taligari.
      A sbarcare per primi sono i militari che occupano con le armi il paese.
      Anno 2037
      Dopo quasi un anno, superata qualche tensione inziale, con l'aiuto di Caladan, su Taligari inizia a tornare una parvenza di ordine.
      Tra i due paesi viene istituito un trattato che cede a Caladan la zona attorno al Red Sea Train, ora ribattezzata Caladan Duo, ma comunemente chiamata “La Provincia”, che viene subito recintata da alte mura. Per contro, i Mageknights non possono mettere piede sul resto del continente fuori dalla provincia, e Taligari riceve aiuti economici. Al presidente e altri “vip” di Taligari viene concesso di vivere nella Provincia.
      Nelle miniere di Corantha (Taligari), di proprietà dell'imprenditore Ghaspar Atreides, vengono scoperti giacimenti di virbanio, un acciaio indistruttibile (grazie al fatto che le proprie particelle atomiche, altamente instabili, sono costantemente in movimento, resistono a ogni genere di urto) ma allo stesso tempo leggero e maleabile, che originariamente si trovava solo su Caladan.
      Il governo di Caladan compra grandi quantità di vibranio, Atreides diventa miliardario e compra un palazzo a Caladan Duo.
      Caladan acquista anche la Nidhogr Network; il comandante dei Mageknights, un veterano di guerra di nome Hawkes ne diventa presidente.
      Anno 2038 Oggi
      Sono passati due anni dalla fine della grande guerra.
      Il gioco ci mette nei panni di Descio, eterno protagonista di tutti miei giochi, che questa volta veste i panni di un ragazzo ordinario, sulla trentina; Ex militare, è stato congedato dall'esercito dopo aver riportato diverse ferite nell'ultima missione (di cui non ricorda molti dettagli) proprio prima del bombardamento planetario. A due anni dalla fine della guerra vive a Delia, la città più grande (e in cui vige un po' più di ordine rispetto alle altre) del continente, ha una relazione stabile con Claudia, un'infermiera volontaria, conosciuta subito dopo la guerra, e ha un officina (aperta con i soldi della liquidazione) in cui ripara moto.
      Un giorno come un altro, viene assalito in casa sua da strani uomini avvolti in una tunica rossa, prima che abbia il tempo di capire cosa sta succedendo, sarà costretto a fuggire, in un crescendo di combattimenti, inseguimenti e altre disavventure per salvare se stesso e la sua amata, e scoprire cosa vogliono da lui i suoi misteriosi assalitori.

      Biografia: Descio ha fatto parte delle Forze Speciali durante la guerra, ha partecipato con successo a diverse missioni; proprio nell'ultimo drop nella Regione Desertica di Arrakis, qualcosa è andato storto ed è scomparso dai radar per circa dodici ore, delle quali non ha memoria. Trovato dai suoi commilitoni ferito a morte e disidratato, viene portato via in elicottero poche ore prima del bombardamento planetario. Nell'esercito era esperto nell'uso della “Particle Blade” (un prototipo di spada composta di vibranio, alimentata da una sorta di cristallo energetico, che unito all'instabilità del vibranio genera un leggero campo di forza in grado di deviare proiettili), omai ha deposto le armi, e – dopo un periodo difficile, tra dolori fisici, riabilitazione, depressione e tossicodipendenza (dagli antidolorifici che prendeva per le ferite, misti all'alcool di cui ogni tanto abusava), si è ripreso.
      Caratteristiche Fisiche: Altezza: 188cm; Peso: 90kg circa;
      Nonostante le numerose ferite riportate in guerra gli abbiano impedito di continuare la carriera militare (anche se di fatto ha abbandonato le armi per lo stress mentale più che fisico), Descio si tiene in forma con dedizione. Ha un fisico agile e una muscolatura ben sviluppata. Ha diverse cicatrici sul corpo, e la sua mano destra (che ha perso in missione durante quel periodo che non ricorda) è stata ricostruita da campioni del suo DNA prelevati quando si è arruolato, attualmente lo strato più esterno di pelle non si è ancora riformato, quindi la copre costantemente con un guanto durante il giorno.
      Carattere e Personalità: Duro fuori, tenero dentro; si mostra sempre sicuro di se, anche quando ha dei dubbi; non lascia mai trasparire le sue emozioni, se non con Claudia, naturalmente. Tiene a lei più di ogni altra cosa al mondo. Anche se cerca di negarlo, è un po' permaloso.
      Coraggioso, ma non incosciente. È di indole buona; onesto e leale, anche se un po' troppo orgoglioso, non ammetterebbe mai un errore neanche davanti all'evidenza. Generalmente calmo, ma diventa facilmente irascibile e reagisce male alle provocazioni, non ha problemi a “fare a botte” se necessario, anche se – per adattarsi a un mondo un po' più barbaro di prima – tende a non immischiarsi nelle questioni degli altri, a meno che non si tratti di difendere se stesso, Claudia, o un amico/conoscente, nel cui caso non ha mezze misure.
      Curiosità sul Personaggio:
      Sebbene Descio non è il mio "alter ego", non posso negare che in ogni sua versione c'è qualcosa di me, e questa versione di Descio è probabilmente quella che ha più cose in cumune a me, come il suo passato da militare (anche se io in guerra grazie al cielo non ci sono mai stato ) e l'amore per le due ruote. Nella versione originale del 2005 Descio aveva la mia età di allora (21 anni), in questo remake ne ha circa 30 (più o meno l'età che avevo quando ho rimesso mano al progetto per la prima volta nel 2015). Nella versione originale Descio era un musicista. Nella versione originale Descio era in grado di trasformarsi in un demone; il suo sprite era un recolor di Spawn di Todd McFarlane;  
      Rami Talenti:
      Furia – ramo basato principalmente sull'attacco fisico e sull'infliggere ingenti danni al nemico.
      Disciplina – ramo basato principalmente sulla difesa e sul contrattacco, oltre a qualche tecnica di “Crowd Control” che limita i movimenti dei nemici.
      Spirito – basato per lo più sull'attacco magico.

      Biografia: Amico di vecchia data di Descio, i due non si vedono tanto spesso per via degli impegni di Arguss, ma cercano di cogliere ogni occasione per farsi una rimpatriata. Si sono conosciuti nell'esercito e sono diventati subito amici, hanno partecipato insieme a diverse missioni. Dopo la guerra Arguss ha invogliato Descio a lasciare entrambi Caladan City (essendo militari avrebbero avuto il permesso di restarci se fossero rimasti dell'esercito), temendo che lo stress fosse troppo per il suo amico, e lo ha aiutato a sistemarsi. Segretamente comanda un piccolo gruppo di attivisti politici che si oppone, più o meno pacificamente, alla politica dell'attuale presidente, Harkonnen, perchè lo ritiene disonesto e sospetta che abbia qualcosa da nascondere. Esperto di arti marziali, conosce diversi stili di lotta che ha perfezionato negli anni.
      Caratteristiche Fisiche: Altezza: 211cm; Peso: 124kg circa;
      Alto, spalle larghe e fisico scolpito; un vero armadio a due ante; la corporatura imponente di Arguss già di per se basta a terrorizzare i suoi nemici, anche se – ad un più attento sguardo – il suo viso e i suoi occhi sono quelli di un uomo buono. Ha una vistosa cicatrice sull'occhio destro, nessuno sa come o quando se l'è procurata. Nonostante la stazza enorme, Arguss è sorprendentemente agile e veloce, merito dell'intensivo allenamento nelle arti marziali. Ha una grande resistenza alla stanchezza e al dolore.
      Carattere e Personalità: Arguss è un uomo buono e che guarda sempre al bene comune oltre che al suo. Sebbene si presenti come una persona aperta e socevole, in realtà è estremamente sospettoso di tutti, e non si fida di chi non conosce bene; si avvale spesso di un suo collaboratore (un esperto di sistemi informatici, e una delle pochissime persone in grado di violare i sistemi della Nidhogr Network), per scavare ogni genere di informazioni su chiunque (probabilmente ha fatto ricerche anche su Claudia, quando questa ha iniziato a frequentare Descio, ma non ammetterebbe mai di averlo fatto) . Di carattere bonaccione, scherza spesso, anche quando la situazione sembrerebbe non richiederlo, ma in realtà è un combattente disciplinato e paziente. Lui direbbe che “ride e scherza perchè è una persona seria”. Dotato di grande sagezza, riflette con attenzione prima di agire, e non manca di dispensare qualche buon consiglio, che sia richiesto o meno.
      Curiosità sul Personaggio:
      Arguss è rimasto praticamente identico alla versione originale, sia nell'aspetto che nel carattere; Come Descio, anche Arguss era ingrado di trasformarsi in un demone; il suo sprite era Clayface (DC Comics); Se fosse "interpretato" da un attore reale, sarebbe LL Cool J (il rapper che interpreta Sam Hannah in NCIS);  
      Rami Talenti:
      Blitz – ramo che sviluppa maggiormente le A.R.T.S. Fisiche e la caratteristica “Forza”.
      Sentinella – tipica funzione di “Tank”, usa il Taunt per costringere i nemici ad attaccare lui piuttosto che i compagni, mentre sviluppa difesa e Punti Ferita per meglio resistere agli attacchi a cui sarà soggetto.
      Sciamano – ispirato al concetto di “Geomancer”, usa poteri elementali diversi in base alle caratteristiche morfologiche della zona in cui si trova.

      Biografia: Nata a Delia (nella provincia più interna, che ormai non esiste più), capitale di Taligari, ma i suoi genitori erano originari di Arrakis; fuggiti dalla regione desertica (nell'anno 2012 mentre la madre era incinta di Zaphira) per scappare alle continue guerre tra le varie tribù, si sono integrati facilmente e entrambi hanno trovato lavoro a Delia (erano tutti e due medici). Appassionata di danza e tiro con l'arco fin da bambina, Zaphira è cresciuta con il sogno di vedere, un giorno, la terra da cui discende. A 22 anni, con l'inizio della guerra tra Arrakis e il Landsraad, si è recata ad Arrakis (non senza obiezioni dei genitori, naturalmente preoccupati) e si è arruolata nei Rangers, per sfruttare al meglio le sue abilità di arciere, e ha combattuto al fianco delle Forze Speciali (anche se lei, Descio e Arguss non si sono mai incontrati essendo in distaccamenti diversi) a sostegno di una fazione “ribelle”, che invece voleva entrare a far parte del Landsraad.
      Durante i bombardamenti i suoi genitori sono rimasti uccisi, dopo il progetto Exodus è volontariamente tornata a Taligari, dove ha iniziato a parlare apertamente contro la politica di Harkonnen, facendosi qualche nemico ma anche tanti simpatizzanti tra forze dell'ordine locali e ex militari, tanto che a un certo punto si è candidata ella stessa. Attualmente è in corsa per le elezioni.
      Caratteristiche Fisiche: Altezza: 168cm; Peso: non dichiarato;
      Colorito ambrato, ha un viso gentile caratterizzato da due grandissimi occhi, anch'essi dal colore dell'ambra. Per qualche ragione non ancora spiegata dalla scienza, le inizioni di nanomacchine che ha assunto durante l'addestramento con i Ranger, col tempo hanno fatto diventare i suoi capelli verdi.
      Ha un fisico atletico, la muscolatura delle braccia è più sviluppata (naturale per chi tira con l'arco), mentre per il resto del corpo ha un tono muscolare più morbido. Non possiede molta forza fisica, ma compensa ciò con dei riflessi prontissimi. Estremamente agile nel saltare e anche nello scalare superfici difficili.
      Carattere e Personalità: Zaphira è una ragazza determinata, che non ha paura di dire quello che pensa; specialmente quando c'è di mezzo la politica, non usa mezzi termini. Di natura buona, generosa e altruista, ma non ingenua. Nonostante non lo dia a vedere, la perdita dei genitori durante i bombardamenti l'ha scossa profondamente, e – sebbene la cosa non è certo imputabile a lei – sente di aver fallito la sua “missione” di salvare Arrakis. E' entrata in politica perchè sogna di ricostruire il paese che ha ospitato i suoi genitori e le ha permesso di crescere, ma lì ha dovuto scontrarsi con un mondo più contorto e corrotto di quanto immaginava. E' stata bersaglio di un paio di attentati, cosa che da un lato ha fatto aumentare la sua determinazione, ma allo stesso tempo la obbliga a vivere e ad operare da una base nascosta in una zona imprecisata.
      Cuiosità sul Personaggio:
      Nel gioco originale si chiamava Arisia; Ad accezione di un altro personaggio (ancora non rivelato), che è completamente nuovo, Zaphira è il personaggio che è cambiato maggiormente in questo reboot. Nella versione originale, le sue armi erano tarocchi, talismani, e altri oggetti magici; la sua arma finale si chiamava Lament Configuration, il leggendario Cubo della serie di film horror Hellraiser.  
      Rami Talenti:
      Magistrix – Sviluppa maggiormente le A.R.T.S. Mistiche;
      Vitae – abilità di cura e altri effetti benefici, insomma il “guaritore” del gruppo;
      Sinergia – abilità che potenziano se stessa e il gruppo.

      Personaggio Non Giocante
      Biografia:  Nata in un paese che si chiamava, Vernius, che ormai è stato completamente distrutto dalla guerra. Claudia ha vissuto a Gesserit, in provincia di Caladan fin da sempre. Ha perso i genitori da bambina, ed è cresciuta in una sorta di comune fino alla maggiore età, dopodichè  ha studiato medicina è diventa infermiera. Proprio poco dopo aver preso l'abilitazione, è scoppiata la guerra, e - carica di lavoro, tra sia tra i civili che tra i soldati che tornavano feriti dal fronte - ha  praticamente "messo radici" a Caladan City; questo è stato una fortuna, perchè quando sono iniziati i bombardamenti, lei era al sicuro sotto lo scudo che protegge perennemente Caladan City.
      Dopo la guerra, ha ripreso il suo lavoro, occupandosi per lo più dei feriti che arrivavano ogni giorno, per via delle risse e delle sommosse che avvenivano quasi quotidianamente. Una sera lei stessa viene aggredita da due balordi, ma viene soccorsa proprio da Descio, che - da poco ripresosi dall'incidente nel deserto - in quel periodo prestava servizio come addetto alla sicurezza pattugliando le strade per mantenere l'ordine. I due iniziano a frequentarsi saltuariamente, per poi reincontrarsi sul Red Sea Train, entrambi diretti verso Delia.
      Caratteristiche Fisiche: Altezza: 161cm; Peso: Non si chiede a una signora;
      Statura nella media, ha lunghi capelli azzurri che porta sempre raccolti in due trecce, occhi anche essi blu che tendono al viola. Carnagione molto chiara, la pelle è molto liscia e tonica, ha un viso dolce, la sua voce è calda e gentile, e ha una corporatura snella, un po' più rotonda sui fianchi, ma in generale è in ottima forma fisica pur non praticando alcun tipo di sport o disciplina (cosa che fa molta invidia a Descio, che al contrario ha la tendenza a perdere rapidamente il tono muscolare se non si allena con costanza), se si esclude qualche lezione di difesa personale impartitale da Descio (che però Claudia non ha preso troppo sul serio).
      Carattere e Personalità: Di indole buona, generosa e altruista, Claudia è un ragazza dolce e premurosa, anche con gli sconosciuti. Descio la prende in giro dicendo che probabilmente ha una leggera sindrome da crocerossina (ma probabilmente è semplice deformazione professionale, essendo un' infermiera). Sempre ottimista, cerca di non farsi scoraggiare dalle avversità (che sono un po' all'ordine del giorno, nella società in cui vivono) e di trovare sempre il positivo in tutto.
      Sebbene possa sembrare ingenua, in realtà ha un carattere molto forte, e non ha paura di alzare i toni per far valere i propri diritti o quelli di un'altra persona.
      Curiosità sul Personaggio:
      Nel gioco originale Claudia aveva i capelli rossi; Il suo cognome si pronuncia "Cóer"; Nel gioco originale Claudia era una studentessa; Nel gioco originale veniva (involontariamente) uccisa dall'energia liberata da Descio quando questi si trasformava per la prima volta in un demone, nelle primissime parti del gioco (per questo motivo il nostro protagonsita rinunciava a trasformarsi per buona parte del gioco), in questo nuovo progetto quindi le sue vicissitudini sono del tutto inedite;  
      Rami Talenti: Nessuno
      In Battaglia: Claudia assiste Descio, dove possibile, lanciando sassi contro i nemici. Se Descio cade in battaglia, Claudia userà un oggetto per rimetterlo in sesto, se presente nell'inventario, altrimenti fuggirà dalla battaglia in corso.
      Altri PG verranno rivelati più avanti
      Screenshots Vari:

    • By Tentauren_


      La storia del manichino che per sbaglio conobbe la vita v. 3.0

      1. Introduzione
      Forse qualcuno di voi si ricorderà delle varie iterazioni di questo progetto, che da un decennio emerge e riaffonda nelle pieghe delle mie fantasie pre-sonno. Il manichino è stato tante cose: una sfida, con una demo non giocabile nel 2011 fatta con RPGMaker 2003 in un solo pomeriggio (potete trovare il topic qui, ma il link di download è sicuramente rotto); un omaggio a Planescape in un periodo di ossessione fortissima, con la stessa storia, ma ambientata a Sigil, brevissima demo giocabile e grafica rippata dai capolavori dell'Infinity Engine (qui; per qualche giorno è stato un romanzo fantasy (se siete interessati posto la bozza del primo capitolo, è decisamente sporco ma ne vado particolarmente fiero), poi è ricaduto nell'oblio appesantito da una lore molto più espansa e un mucchio di idee lasciate a metà. Da un mesetto è ritornato a tormentarmi, in una veste tutta nuova. Probabilmente la colpa è da imputare a Jimmy and the Pulsating Mass, un gioco fatto con l'engine basico di MV e nonostante questo venduto a prezzo profumato su Steam, una perla che punta sull'atmosfera e sulla narrazione più che su feature mirabolanti e vale (quasi) la spesa. 

      2. Storia *
      La storia, ad oggi, è più o meno la stessa di sempre, ma in un universo più ampio.
      La Scala è un multiverso privo di limiti conosciuti, che si espande verso l'alto e verso il basso in infiniti Gradini di infinita diversità. Le teorie sulla sua origine, la sua natura e le sue motivazioni sono, come è tipico di ogni cosmologia, tante, disparate e in violento conflitto: c'è chi afferma che i Gradini siano disposti secondo un ordine di merito, e chi li considera le vertebre della schiena di un dio-mostro cosmico. Nessuna è più vera delle altre, ma qualcosa su cui tutti -o quasi- concordano è che la forma di energia più potente della Scala è la Vita: essa si espande e si srotola in ogni immensità e in ogni anfratto, mette radici e vince anche dove le sarebbe impossibile. Non c'è un angolo della Scala che non sia sotto il dominio della Vita, che muta se stessa per esprimersi nei più disparati fenomeni: da qualche parte, non troppo distante da dove ci troviamo, un Gradino appena nato vede macchine terraformanti spegnersi definitivamente, per lasciare spazio al futuro; nella direzione opposta quello che su quel Gradino verrebbe definito un uomo accende per la prima volta la sua piccola creatura di intelligenza artificiale. La Vita continua, inesorabile, a trovare nuove forme. 

      Su un Gradino intermedio, di non troppa importanza, Azith Presbe, stregone proprietario del Magiemporio Presbe nella città di Urth, ha appena ricevuto una consegna speciale: una rarissima Pozione della Vita. Ma Yoke, il maldestro commesso, nel portarla al sicuro nei magazzini del negozio, la rompe addosso a un manichino da esposizione. Per sfuggire alle grinfie del vendicativo stregone, i due dovranno attraversare gli intricati cunicoli dei magazzini nella speranza di trovare un'altra uscita o, quantomeno, di prepararsi all'inevitabile scontro. È una storia piccola ambientata in piccoli spazi rispetto all'immensità della Scala, ma il magazzino di uno stregone archetipico può contenere i frammenti dei mondi più distanti, come una planimetria dell'intero cosmo. Quello che Yoke e il Manichino incontreranno cambierà per sempre le loro vite e, forse, quelle di molti altri.

      3. Personaggi


      Ehi capo, non mi manca qualche frame?
      Oh sì, te ne mancano una marea.

      Ex manichino per armature da esposizione, polveroso e abbandonato al primo piano dei sotterranei del Magiemporio Presbe. Dopo essere stato imbrattato dalla Pozione della Vita si ritrova, confuso e un po' infastidito, con una coscienza; ma non ha alcuna intenzione di lasciarsela togliere: seguirà Yoke per gli intricati cunicoli dei magazzini, per sfuggire alle grinfie di Azith.
      E' scanzonato e ribelle, un Pinocchio senza naso. 
      Il manichino è di legno, di altezza e misure standard (esattamente per essere abbigliato con armature da esposizione). Ha vaghi tratti facciali, solo abbozzati. All'inizio del gioco è nudo (per questo è in magazzino) e, cosa molto importante, non ha le dita delle mani definite.


      Mago scadente, poco ambizioso, svogliato. Lavora come commesso al Magiemporio Presbe semplicemente perché non ha più aspettative e, se le ha mai avute, le ha messe da parte da tempo. Come ciliegina sulla torta, l'ha fatta veramente grossa: ha rotto una fiala di importanza prioritaria e adesso la sua unica possibilità è scappare, sperando che la via per i magazzini sia più sicura di quella per l'ingresso principale. Ha una fidanzata ma le cose non vanno benissimo. E' appassionato di insetti, parla l'insettese comune (che nerd) e ne porta sempre tre con sè: Zig, una Mosca Angelica (Musca domestica, ma con ali d'angelo e l'abilità di sdoppiarsi virtualmente all'infinito), Zag, una Zanzara Behemoth (uguale a una zanzara normale ma leggermente più grossa, più o meno quanto un polpastrello) e... Roll, un insetto metafisico senza un aspetto preciso e dalle intenzioni incomprensibili.
      Yoke è alto e magrissimo, ha i capelli rossi e la pelle leggermente scura (ma non troppo). Indossa la Divisa da Commesso del Magiemporio Presbe: una tuta da mago standard (grigia), coi pantaloni rigonfi verso il basso (che lasciano le caviglie scoperte) e un colletto che arriva fino al naso, aperto a v nel centro e, davanti, un grembiule verde coi bordi delle tasche gialle. Indossa un cappello da mago dello stesso colore della tuta. Ha una cintura con la fondina per il Catalizzatore e tre confezioni di mangime per insetti: uno contiene feci di ratto, un altro sangue di mucca e il terzo è completamente vuoto.

      "Io sono Azith Presbe, Stregone Anziano del Circolo dei Vedenti. Sono Azith Presbe, Colui che Parla coi Morti. Tessitore di Astri. Ponte-Tra-Le-Potenze. Drago Onorario. Mago Archetipico su duecento livelli. Sovrano di venti di essi. ". Insomma, Azith è uno a cui piace tanto parlare di sè. Non del tutto a torto: è effettivamente potente come dice di essere e, per via della sua ambizione, continua a diventarlo sempre di più. A Urth, sul suo piano di base, ha aperto una catena di negozi di magia, i Magiempori Presbe, i più richiesti del livello. Ha fatto un acquisto importante da un'entità importante, destinato a un'entità ancora più importante: l'unica fiala di Pozione della Vita, un oggetto di estrema rarità, probabilmente illegale se solo si sapesse della sua esistenza in giro. La sfortuna e qualche errore di calcolo l'hanno portato ad affidarlo al più inetto dei suoi dipendenti, Yoke. 
      Azith è esperto in un'ampia varietà di stili di magia, ma predilige tutto ciò che ha a che fare con gli occhi. Una delle sue tecniche-firma ha a che fare con l'espansione della vista attraverso la fuoriuscita dei bulbi oculari dalle orbite (su due antenne di vene), che gli consente tra le altre cose di vedere ciò che normalmente non è fatto per essere visto. 
      Azith è un uomo dall'altezza imponenete, ben nutrito ma non grasso. Ha capelli bianchi e, ovviamente, una barba lunga fino al petto, ma ben curata. 

      Un Coverto, un membro di una razza di inferiori (o, più semplicemente demoni) abitanti di un livello detto il Buio Guardaroba. Quando si muovono, hanno l'aspetto di un uomo completamente coperto da un mantello nero. Pochi sanno che non c'è niente sotto al mantello. Hanno la capacità di dominare lo spazio, ma non è chiaro se si tratti di una potente capacità di illusione o di un effettivo controllo. Non hanno corde vocali, di conseguenza non sono in grado di parlare in una lingua diversa dalla loro, composta esclusivamente di sussuri, fruscii e singulti. Quando sono costretti a comunicare con esterni, i Coverti utilizzano bastoni su cui infilano tessere di legno con sopra impresse le lettere dell'alfabeto in questione. I Coverti sono stati di recente sottomessi dall'entità che ha venduto la Pozione della Vita ad Azith e Thshtths è stato incaricato di consegnargliela. Thshtths era un tempo un rivoltoso, ma è stato schiacciato come tutti i suoi fratelli.

      La Poltrona Rosa
      E' semplicemente una grossa poltrona con la tappezzeria rosa e le gambe di legno. Dai cuscini vengono fuori grosse zanne e una lingua eccessivamente lunga. Azith deve averla comprata su qualche livello inferiore o forse l'ha costruita lui stessa imprigionandoci uno spirito. La usa come segugio per i piani più alti del magazzino.
      4. Disegni/Fan Art
      (purtroppo per il momento ho soltanto i concept mostrati più in alto, quindi qui aggiungerò qualche disegno preparatorio; aggiornerò il topic abbastanza di frequente)

      5. Caratteristiche Tecniche/Gameplay *
      Purtroppo non ho grandi capacità di programmazione, quindi il BS sarà standard (laterale se riesco a recuperare qualche script), ma cercherò di renderlo interessante attraverso qualche piccolo accorgimento. Il Manichino, per esempio, combatterà per la prima parte del gioco interamente a mani nude, fino a quando non si sarà sbloccata la possibilità di intagliarlo e modificarlo per fargli tenere in mano un'arma. Il sistema di summon avrà una particolarità dovuta alla lore: non essendoci, sulla Scala, un piano che sia "più materiale" degli altri
      Se dovessi immaginare un sistema di combattimento custom, se un giorno qualcuno con capacità di programmazione avanzata decidesse di darmi una mano, manterrebbe le stesse features ma con il sistema della 3.5 di Dungeons &amp; Dragons (o una sua versione ridotta). Il mio ideale è il BS del Tempio del Male Elementale: so che è veramente troppo, ma sognare non è illegale.
      La grafica del gioco sarà interamente da 0. In origine, proprio per questo, pensavo di lavorare su 2000 o 2003. Poi però mi è capitato sotto mano il bellissimo CrownTrick e ho sognato un mondo in alta risoluzione. La mia pixel art è ancora di livello basso, quindi proprio per questo motivo ci metterò un po' di tempo in più, ma devo dire che i risultati mi rendono abbastanza fiero di me nonostante ci sia ancora molto da migliorare. 

      6. Screenshot * 

      7. Demo/Link alla versione giocabile * 

      8. Crediti Vari *
      Ringrazio Daniele Giampaolo per il character design dei personaggi principali (vedrete gli altri a breve). E qui colgo l'occasione per parlare del perché di questo topic: il mio gioco è un sogno e questo thread è una promessa. Ho approcciato in passato questo progetto nelle maniere più sbagliate, pretendendo tanto da me in poco tempo e finendo per pretendere dagli altri. Questa volta non avrò scadenze: non voglio fare in fretta, preferisco fare bene. Ho però una schedule, una demo di un paio di ore al massimo con due bossfight principali e una opzionale, che arrivi a un 10% della trama complessiva. Questo è quanto intendo fare per adesso, per testare le mie capacità e capire quanto in là posso spingermi. Qualsiasi aiuto, sia come partecipazione attiva al progetto (in qualsiasi ruolo: per quanto mi stia occupando io della grafica un altro paio di mani mi farebbero comodo) che come consiglio, critica, correzione, distruzione totale è più che ben accetto. Proprio per questo spero di mantenere attivo e in continuo aggiornamento questo topic e, soprattutto, spero che vi partecipiate in molti, anche solo come osservatori.