Chaos Project

RPG Maker => RPG Maker Scripts => RMXP Script Database => Topic started by: winkio on February 14, 2009, 05:46:52 pm

Title: [XP] Touch Damage for Blizz-ABS
Post by: winkio on February 14, 2009, 05:46:52 pm
Touch Damage for Blizz-ABS
Authors: winkio
Version: 1.11
Type: Misc Add-on
Key Term: Blizz-ABS Plugin



Introduction

When you touch an enemy it hurts you.  It's as simple as that.


Features




Screenshots
no.  if you have ever played zelda or any game really, it's the same thing.



Script

Put below Blizz-ABS part 3, above main

#|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
# Blizz-ABS Touch Damage by Winkio
# Version: 1.11
#|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
#
#
#|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
# This script makes it so that when you touch an enemy, it deals damage to you.
#
# If you find any bugs, please report them here:
# http://forum.chaos-project.com
#|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|

#==============================================================================
# BlizzABS
#------------------------------------------------------------------------------
#  This is the master control, configuration, utility and battle process
#  module for Blizz-ABS.
#==============================================================================

module BlizzABS

 #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
 # BlizzABS::Enemies
 #----------------------------------------------------------------------------
 #  This module provides enemy configurations.
 #  when ID then return [DAMAGE, VARIANCE, [STATEID_1, STATEID_2, etc.]]
 #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
 
 module Enemies
   
   def self.touch_damage(id)
     case id
       when 1 then return [40, 4, [3]]
     end
     return [0, 0, 0]
   end
 end
 #============================================================================
 # BlizzABS::Processor
 #----------------------------------------------------------------------------
 #  This class provides methods for Blizz-ABS handling.
 #============================================================================
 
 class Processor
   #--------------------------------------------------------------------------
   # update
   #  Updates Blizz-ABS processes.
   #--------------------------------------------------------------------------
   alias update_touchd_before update
   def update
     update_touchd_before
     update_touch_damage
   end
   #--------------------------------------------------------------------------
   # update_touch_damage
   #  Updates Blizz-ABS update_touch_damage.
   #--------------------------------------------------------------------------
   def update_touch_damage
     # iterate through all actors
     ($BlizzABS.actors + $BlizzABS.pets).each {|actor|
       # iterate through all battlers
       if actor.valid?
         ($game_map.battlers + $BlizzABS.battlers).each {|battler|
             # if target can be hit considering all conditions
             if battler.battler != nil &&
                 !battler.battler.is_a?(Game_Actor) &&
                 !battler.battler.dead? && @utils.intersection(
                 Rect.new(actor.real_x / 4, actor.real_y / 4, 32, 32),
                 Rect.new(battler.real_x / 4, battler.real_y / 4, 32, 32))
               # execute attack
               actor.touch_effect(battler, battler.battler)
             end}
           end}
   end
 end
 
end

#==============================================================================
# ** Game_Battler (part 3)
#------------------------------------------------------------------------------
#  This class deals with battlers. It's used as a superclass for the Game_Actor
#  and Game_Enemy classes.
#==============================================================================

class Game_Battler
 #--------------------------------------------------------------------------
 # * Applying Normal Attack Effects
 #     attacker : battler
 #--------------------------------------------------------------------------
 def touch_effect(attacker)
   self.critical = false
   touchdata = BlizzABS::Enemies.touch_damage(attacker.id)
   return false if touchdata[0] == 0
   if touchdata[1] > 0
     self.damage = [touchdata[0]+rand(touchdata[1])-rand(touchdata[1]), 0].max
   end
   if self.damage != 0
     # State Removed by Shock
     remove_states_shock
     # Substract damage from HP
     self.hp -= self.damage
     # State change
     @state_changed = false
     states_plus(attacker.plus_state_set)
     states_minus(attacker.minus_state_set)
     states_plus(touchdata[2]) if touchdata[2]
     return true
   end
   return false
 end
end
#==============================================================================
# Map_Actor
#------------------------------------------------------------------------------
#  This class handles a map enemy character. It supports pixel movement,
#  complete AI handling, advanced sprite handling and battle handling.
#==============================================================================

class Map_Actor < Map_Battler
 
 #----------------------------------------------------------------------------
 # touch_effect
 #  character - the character that holds attack data (can be projectile)
 #  _battler  - the attacking battler
 #  This method executes attack upon a map character.
 #----------------------------------------------------------------------------
 def touch_effect(character, _battler)
   # stop attack if no battler assigned or still invincible
   return false if @battler == nil || @blinking != nil && @blinking > 0
   # stop attack if pressing CTRL in debug mode
   return false if $DEBUG && @ai.group != 0 && Input.press?(Input::CTRL)
   # if defending
   if BlizzABS::Config::FULL_DEFEND && @ai.act.defend?
     # set attacked counter
     self.attacked = $BlizzABS.pixel
     # request damage sprite
     $BlizzABS.utils.request_damage_sprite(self, BlizzABS::Cache::TXTDefend)
     # not executed
     return false
   end
   # needed for defend emulation
   @battler.current_action.kind = 0
   # set own battler's action as defend action if necessary
   @battler.current_action.basic = (@ai.act.defend? ? 1 : 0)
   # reset hpdamage and spdamage
   @battler.hpdamage, @battler.spdamage = 0, 0
   # State Removed by Shock
   result = @battler.touch_effect(_battler)
   if result
     # apply basic effects
     apply_action_effect(_battler)
     # request damage sprite
     $BlizzABS.utils.request_damage_sprite(self)
     # remove damage
     @battler.damage, @battler.damage_pop = nil, false
   end
   # send data to obeserver if attacked by actor
   $BlizzABS.AI.observe(_battler, @battler.damage) if _battler.is_a?(Game_Actor)
   # delete own charge data if executed
   @charge = nil if result
   # return result
   return result
 end
end



Instructions

configure in the code under the enemies module


Compatibility

shouldn't have any problems at all


Credits and Thanks




Author's Notes
Have fun with it.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: shdwlink1993 on February 14, 2009, 05:50:21 pm
It would be databased except that "<TELL US SOMETHING ABOUT YOUR SCRIPT>" isn't what you'd call an introduction to your script.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: winkio on February 14, 2009, 05:51:54 pm
XD I was in a hurry.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: shdwlink1993 on February 14, 2009, 06:00:21 pm
lol. Thanks for taking the time to do that, Winkio. Happily databased.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Calintz on February 14, 2009, 06:03:19 pm
This is a good add-on...
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: legacyblade on February 14, 2009, 06:11:55 pm
Great script Winkio, I already have a use for this in my game!
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Calintz on February 14, 2009, 06:29:16 pm
Now can you add events to this!?
Can you make special events take place instead of damage??
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: winkio on February 14, 2009, 06:33:40 pm
it is possible, but I'm not scripting it in.  What you would do is change this line:

actor.touch_effect(battler, battler.battler)

to execute whatever event you want.  I assume you plan to do this for the zombie game?
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: G_G on February 14, 2009, 07:02:18 pm
this is cool. power up
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Calintz on February 14, 2009, 07:08:52 pm
Yes, I do...
Does the BABS system nullify the event codes of enemies?
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Reno-s--Joker on February 15, 2009, 11:21:23 pm
*powers up*
This'd be really useful for those classic games where monsters seem to have spikes or poison or something all over them. :D
<333
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Memor-X on February 24, 2009, 05:31:35 pm
when i run into a enemy i get an error

Script 'Touch Damage for Blizz-ABS 1.0' line 103: TypeError occurred

nil can't be coerced into Fixnum

and on that line i have

      self.hp -= self.damage

and incase if it matters, i'm using SDK version 1.5
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Landith on February 24, 2009, 06:08:35 pm
Yeah it's probably the SDK System messing with it. SDK tends to do that  :roll:
Unless you don't have this script below BABS
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: winkio on February 24, 2009, 06:51:08 pm
There is definitely a conflict with one of your other scripts.  SDK I guess.  Or if you have anything else that drastically modifies game_battler...
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Memor-X on February 25, 2009, 05:44:27 pm
Quote from: winkio on February 24, 2009, 06:51:08 pm
There is definitely a conflict with one of your other scripts.  SDK I guess.  Or if you have anything else that drastically modifies game_battler...


well there's Tons but i doubt it, i havn't turned on any addons yet, if only i had an Al Bhed Script like Seph's i wouldn't need the bloody SDK
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Landith on March 06, 2009, 09:35:53 pm
Is there a way to make it do a skill instead of a damage?
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: winkio on March 06, 2009, 10:13:24 pm
if you mod this script.  That would be a totally different script though.  I am only duplicating the basic touch damage that we all know.  I might add states later, but thats about it.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Landith on March 07, 2009, 03:45:57 pm
Yeah, that's the main reason why I wanted the skills because of States.  :P
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: winkio on March 07, 2009, 10:26:44 pm
once Blizz eventually updates when enemies can execute their code, youll be able to event whatever you want.  I'll add states in when I get some time, just wait.

EDIT: lol, hooray for adding one line of code and changing the config!  v1.10: states.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Landith on March 09, 2009, 04:11:21 pm
Thanks Winkio <3

*Powers Up*
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Kagutsuchi on April 30, 2009, 12:26:42 pm
I would like the option to turn off blockable touch damage.. like rolling stones, or fire and such.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Kagutsuchi on May 10, 2009, 09:22:36 am
I get an error message after having updated to blizz abs v2.53

Spoiler: ShowHide
(http://img300.imageshack.us/img300/2198/touchdmgscripterror.png)
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Blizzard on May 10, 2009, 11:08:06 am
Corrupted savegame.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Kagutsuchi on May 10, 2009, 11:49:01 am
No tha can't be the problem, I started a new game, since the old savegames was already incompatible with the update to blizz abs 2.53.

    # stop attack if pressing CTRL in debug mode
    return false if $DEBUG && @ai.basic != 0 && Input.press?(Input::CTRL)

(The last line there is line 138)
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Blizzard on May 10, 2009, 12:22:17 pm
Right. Since Blizz-ABS now uses groups it's not "@ai.basic" but "@ai.group". I'll edit the first post.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Kagutsuchi on May 10, 2009, 12:36:16 pm
Yay ^^ it works. Thanks blizz.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Blizzard on August 16, 2009, 12:01:51 pm
It just came to my mind that this add-on kind of loses its purpose after I added Custom Event Triggers. >.<
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: winkio on August 16, 2009, 05:44:02 pm
yeah, I didn't update this for a reason.  It's outdated.  Sometime, when I have nothing else to do, I'll make it an actual system with more features.  But it was really a quick fix that became outdated because of Blizz's updates (a good thing, by the way).
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Boba Fett Link on March 30, 2011, 05:32:37 pm
When I move onto a map with enemies this error occurs:

Script 'Touch Damage' line 68: NoMethodError occurred.

undefined method 'intersection' for nil:NilClass


On that line I have:

!battler.battler.dead? && @utils.intersection(

I am using Blizz-ABS version 2.84.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Boba Fett Link on April 08, 2011, 09:53:39 am
bump?
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: winkio on April 08, 2011, 11:54:49 am
Quote from: Blizzard on August 16, 2009, 12:01:51 pm
It just came to my mind that this add-on kind of loses its purpose after I added Custom Event Triggers. >.<


Quote from: winkio on August 16, 2009, 05:44:02 pm
yeah, I didn't update this for a reason.  It's outdated.  Sometime, when I have nothing else to do, I'll make it an actual system with more features.  But it was really a quick fix that became outdated because of Blizz's updates (a good thing, by the way).


This script doesn't work because the feature was built into Blizz-ABS.  I will remake it and add more features eventually.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Boba Fett Link on April 08, 2011, 05:10:37 pm
Thanks. I think I have it figured out now. Just got to try it.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: Boba Fett Link on April 08, 2011, 05:21:34 pm
But wait. If I use custom event triggers for touch damage, I won't be able to use them for triggering events once you kill the enemy or other similiar stuff, right?
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: MarkHest on December 24, 2013, 07:38:09 pm
Quote
Script ' ' line 68 NoMethodError occurred.

undefined method 'intersection' for nil:NilClass


Got this as I entered a map with an enemy on it. The enemy has ID1 and the script is set to deal touch damage with enemy ID1
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: KK20 on December 25, 2013, 12:14:44 am
Try replacing (CTRL + H) utils with util.
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: MarkHest on December 25, 2013, 01:14:57 am
The game didn't crash once entering the map like before. However, I did get this when I touched the enemy:

Quote
Script 'Blizz-ABS Touch Damage' line 153: NoMethodError occurred.

undefined method 'apply_action_effect' for #<Game_Player:0x691d738>
Title: Re: [XP] Touch Damage for Blizz-ABS
Post by: KK20 on December 25, 2013, 01:24:27 am
Hmm...I guess BlizzABS has made too many changes since the time of this script. It needs to be updated.