Inactive [RPG] Death and Rebirth v2.6.1 - Death like in MMOs [Spout] [1.2.3-R0.2]

Discussion in 'Inactive/Unsupported Plugins' started by muCkk, Aug 10, 2011.

  1. Offline

    muCkk

    Death and Rebirth moved to DevBukkit. This Thread is not updated anymore. Of course you can still post here, but I recommend to use DevBukkit.




    [​IMG]

    Old Thread (open)

    Death and Rebirth: v2.3.6
    Players die like in most MMORPGs and need to be resurrected.​

    !! If you update to v2.3.x use '/shrine update <shrine>' to update each shrine !!
    Download Github : Netload
    Source Github
    After installation you have to activate the plugin using /dar enable <yourWorld>.​
    Language files (open)

    If you translate them in your language please contact me so i can add them here. Thanks :).​
    Rename the file to "message.yml" and put it in /plugins/Death and Rebirth/​
    Additional info on editing:
    • never use tabs in yml (yaml) files
    • use UTF-8 encoding if you have special character like ä, é or something like that.
    Installation (open)

    1. Put the DeathAndRebirth.jar in you plugins folder.
    2. After you start the server the plugin will create all necessary files.
    3. You may now want to edit the config. An explanation of all variables can be found below or directly in the config file.
    4. Activate the plugin for each world using /dar enable <world>.
    5. Deactivate spawning features form other plugins (i.e. MyHome: Spawn at home).
    6. If you use Permissions give normal users 'dar.res' and admins 'dar.admin'. Special nodes are 'dar.ignore' and 'dar.nodrops'. If admins have the '*' node you may want to remove nodrop or ignore for them like this:

      Code:
      groups:
                            admins:
                                default: false
                                build: true
                                permissions:
                                    - '*'
                                    - '-dar.ignore'
                                    - '-dar.nodrop'
    7. Done :)!

    Features:
    • If a player dies he becomes a ghost
    • Ghosts can't use chests and furnaces and can't pickup items
    • ... are ignored by monsters
    • ... don't take damage
    • ... are not involved in pvp
    • ... can't interact with blocks (except doors, levers and buttons)
    • Ghost names ("Ghost of <Playername>")
    • Grave-signs
    • Dropping system
    • Shrines: get near a shrine to resurrect yourself and right click it to bind your soul
    • Resurrection through other players
    • Automatic version check on join (for Ops)
    • Skins, sounds and the colors of the gohst-sky are editable (using Spout)
    • Multi-language support
    • Supported by CraftBukkitUpToDate (Thanks!)
    • Supporting:
      • Permissions
      • Spout
      • NoCheat (see fly mode for additional infos)
    How to create shrines:
    A tutorial in french from JeasonP (Merci! :))

    Informations:
    • Ghosts: When a player dies he becomes a ghost and will respawn at his location of death. A lightning effect will appear on death and on rebirth (can be turned off). The location will be marked with a sign saying "R.I.P <Playername>". The player gets a new name: "Ghost of <Playername>". Ghosts are ignored by monsters, get no damage and are excluded from PvP. In the config file can be choosen if they can use doors, levers and buttons, if they can fly or chat. Picking up items and using chests and furnaces is not possible for ghosts.
    • Dropping: You can decide if players will drop their items like normal or if the items disappear and the player gets them upon resurrection.
    • Flying (for ghosts): To fly you have to hold crouch and steer with the mouse. Walking is not necessary. Flying is disabled by default. Also the server has to enable the fly mode in the server.properties file. That's a problem, because cheaters will be able to abuse this. If you want to protect your server I recommend using NoCheat.
    • Shrines: Shrines can be used by players to resurrect themselves. Admins can turn anything into a shrine. Therefore you need to select an area (just like in WorldEdit) using the selection mode and a stick or your crosshair and commands. Left clicking with a stick will show admins the name of a shrine.
      There are two modes (shrine only on and off):
      1. on : Ghosts have to get to a shrine to use resurrection.
      2. off: Players can bind their souls to a shrine (right click) and use the resurrection command (/res) anywhere to get resurrected.
    • Resurrection: Players can resurrect others. In the configuration can be determined how close the player has to be and if he needs a special item which will be consumed.
      A player can resurrect himself by right clicking a shrine or using /reb near a shrine. If reverseSpawning is enabled the player will spawn at the shrine (or at the spawn if he didn't bind his soul) and resurrection is possible at his grave.
    • Multiworld: Death and Rebirth has to be enabled for each world separately.
    • Admins: have the possibility to change all options ingame. Ops can also use left clicking to get the name of a shrine.
    Behold! A bunch of spoilers:
    Videos and Screenshots (open)

    Version 2.0 with Spout


    Ghost Skin
    [​IMG]

    Version 1.1

    Commands (open)

    • /rebirth <player>
      Resurrects the specified player. If no player is mentioned the plugin tries to resurrect the commandsender himself. A player who wants to resurrect himself needs to stand on a shrine or his soul bound to one.

      Alias: /reb <player>
      Example: /reb muckk
      If you don't use Permissions everybody has access to this command.

    • /mygrave
      Tells the player where his grave is.

    • /shrine <add, list, rm, pos1, pos2, select, update> <name>
      • add <name>: Adds a new shrine to the world.
      • rm <name>: Removes the shrine (but not the blocks!).
      • list: Shows a list of all shrines.
      • pos1: Selects the first position for a cuboid selection.
      • pos2: Selects the second position.
      • select: Turns the selection mode on and off. You can now use a stick to make a cuboid selection. Left clicking selects position 1, right clicking position 2.
      • update <name>: Turns a shrine from version 2.x to a shrine from version 2.3.

    • /dar <reb, reload, enable, disable, world, fly, shrinemode, ghostinteraction, ghostchat, dropping, versionCheck, lightningD, lightninR, signs, spawn, pvpDrop> <shrine/player>
      • reb <player>: Resurrects the player.
      • reload: Reloads all config files (includes config, shrines, ghosts and graves)
      • enable <world>: Enables Death & Rebirth in that world
      • disable<world>: Disables Death & Rebirth in that world
      • world: Gives you the name of your current world
      • fly: Toggles flying for ghosts on and off
      • shrinemode: If enabled ghosts have to get to a shrine to be resurrected.
      • ghostinteraction: If this is true ghosts can't use doors, buttons and levers.
      • ghostchat: Toggles if ghosts are allowed to chat.
      • dropping: Toggles if players will drop their items upon death
      • versionCheck: Toggles the version checking.
      • lightningD: Toggles the lightning effect on death.
      • lightningR: Toggles the lightning effect on rebirth.
      • signs: If disabled there won't be signs at the grave of a player.
      • spawn: Toggles reverseSpawning (see config).
      • pvpDrop: toggles PvPDrop (see config).
      Examples:
      /dar add MyFirstShrine
      /dar list
      /dar enable myWorld
      If you don't use Permissions only OPs can use this command.
    Config (open)

    You will find the config.txt in /plugins/Death and Rebirth/ after a server restart.
    • amount: Amount needed of that item to reserruct someone. Default is 1.
    • blockGhostInteraction: If set to true ghosts can't use doors, buttons and levers. Default false.
    • distance: Maximal distance to the dead player. Default is 10 blocks.
    • dropping: true: players drop their items upon death. false: players don't drop items and receive them after resurrection.
    • fly: Defines if ghosts can fly. Default false.
    • ghostChat: Enables or disables if ghosts can chat. Default true.
    • ghostName: Sets the name of ghosts. Use %player% for the Playername.
    • ghostPermissionsGroup: Without function at the moment. Ignore this.
    • graveSigns: Toggles if a sign is place upon death.
    • lightningOnDeath: Turns the lightning effect on death on/off.
    • lightningOnRebirth: Turns the lightning effect on rebirth on/off.
    • needItem: Defines if an item is needed to resurrect players. This option can be true or false. Default is false.
    • itemID: The id of the item which will be consumed. You can find a list here. Default is feather (288).
    • pvpDrop: If this is enabled players will drop one random item if they are killed by a player. This option overrides 'dropping'.
    • reverseSpawning: If set to true the player will spawn at his shrine and has to resurrect at his corpse.
    • shrineRadius: Radius of shriens. Default 3.
    • shrineOnly: If set to true dead players have to walk to a shrine. Default false.
    • versionCheck: Turns checking for a new version on/off.
    • 'worldName': Defines if Death & Rebirth is activated for this world. Can be true or false, default false.

      (Use a backslash before colons in URLs!)
    • ghostSkin: Url to the skin used for ghosts.
    • deathSound: Url to the sound played on death.
    • resSound: Url to the sound played on resurrection.

    • changeColors: Toggles if the colors get changed.
    • ghostSky, ghostFog, ghostClouds, normalSky, normalFog, normalClouds:
      The colors for the sky when using spout. Colors are defined using RGB values from 0 to 1. So 1;1;1 would be white, 1;0;0 would be red. Separate the values with ';'.

      Do not touch these options, they are set automatically:
    • citizens: true if the server runs citizens.
    • nocheat: true if the server runs nocheat
    Permissions (open)

    • dar.res: Needed for /reb command
    • dar.ignore: Players with this node are ignored by the plugin.
    • dar.nodrop: The drops will be saved and the player gets them on rebirth.
    • dar.admin: Gives access to all /dar commands
    If you give admins the '*' node, you maybe have to exclude dar.ignore and/or dar.nodrop for them. It should look like this:
    Code:
    groups:
        admins:
            default: false
            build: true
            permissions:
                - '*'
                - '-dar.ignore'
                - '-dar.nodrop'
    Spout (open)

    Spout is not required to use this plugin but if you want to use this plugin to it's full extent you may want to install Spout (Server and Client).
    • Dead players have a ghost model
    • Sound effects
    • Notifications (achievement-like) instead of chat messages
    • Ghosts get a different sky color.
    Known Bugs (open)

    • MyHome can't be overriden. Deactivate 'respawnToHome' in its config. This also applies to other plugins which influence spawning. Essentials and Commandbook are working without changes.
    • With Spout: If you have been a ghost the clouds will glow at night. The only way to prevent that is by turning of this feature (changeColors=false in the config).
    Changelog (open)

    Version 2.3.6
    • players can now unbind their souls
    • if reverse spawning is enabled: players will spawn at the nearest shrine if their soul is not bound anywhere instead of spawning at the spawn point
    • grave signs are now removed properly (half steps etc. wont get destroyed)
    • fly speed of ghosts is now configurable. the default value was redruced
    • new option: pvpdrop. if it's enabled a player will drop one random item if another player kills him. this overrides the dropping option
    • soulbinding can now be turned off for each shrine individually (toggle: /shrine binding name). resurrection is always possible
    • if ghostName ist left blank in the config, it's handled like it's disabled buggy
    • added new messages
    • fixed nodrop: items are now saved in a file and will be regained even if the server crashes or restarts without stopping
    • fixed displayname/title(spout) related problems. if you have custom names they should reset properly now
    • fixed resetting sky colors
    Version 2.3.5
    • added support for build in permissions system of bukkit. as a consequence, nocheat will prevent the flymode
    • added a reverse-spawning option
    • added an option to disable signs
    • new messages (for you translators out there)
    • spout name and skin is saved and restored after rebirth (e.g.if you use playereditor)
    • added permission node "dar.nodrop"
    • fixed lightning toggles
    • fixed self-rebirth
    • fixed bug on killing someone with a command
    • fixed onDisable not working properly
    • fixed /dar not working in the console
    Version 2.3.4
    • fixed: message bug
    • fixed: "Could not pass event ENTITY_DAMAGE" bug
    • fixed: permissions bug (dar.res not working properly)
    Version 2.3.3


    • CraftBukkitUpToDate support
    • new messages
    • if dropping is disabled all ghosts get their items back on server shutdown (else they would be lost)
    • fixed checking of amount not working properly
    • fixed message bug with spout
    • fixed a bug causing an error while adding shrines
    • fixed a bug where ghosts could attack with a bow
    Version 2.3.2


    • fixed crashing when running spout
    • fixed ghost toggle message
    • fixed reload not working
    • fixed checking of citizens and nocheat
    Version 2.3.1 (mirror)


    • fixed /shrine select not working correctly
    • admins now need to click with a stick to get a shrines name
    Version 2.3 (mirror)


    • new command: /shrine
    • new shrine system
    • new command: /mygrave
    • multi-language support
    • different sky color for ghosts (configurable)
    • lightning effect on death and on rebirth (configurable)
    • new permissions node: dar.ignore
    • shrine radius is now configurable
    • config gets saved on changes (to prevent damages on crashes)
    • D&R is now saver against the influence of other plugins (for example: EssentialsSpawn, AdminCMD, Towny)
    • players don't become ghosts if they die in the void
    • fixed grave bug (grave-signs lost the inscription)
    • fixed skin bug (no change on death)
    • rewritten message code (for multi-language support)
    • cleaned up the code a bit
    Version 2.2 (mirror)


    • works with bukkit #1060
    • code improvements (messages and shrines)
    • dar-command now works in the console
    • res is now reb to prevent problems with Towny
    • added automatic version check
    • added NoCheat support
    • skins and sounds are now changeable in the config
    • slabs and wool will be now resetted correctly when using /dar rm
    • added the possibility to left-click shrines for ops which will return the name of the shrine
    • added dropping system
    Version 2.1


    • shrines are now save from explosions
    • flying for ghosts
    • NPCs from citizens are ignored
    • new configuration options (fly, ghost interaction, shrine mode, ghost chat)
    • bugfix: no chat messages were displayed
    Version 2.0


    • added Spout and multiworld support
    • Permissions is no longer needed (but still supported)
    • Changed /shrine to /dar and added new arguments
    • Bugfixes
    Version 1.1
    • Players can now bin their souls by right clicking a shrine. /res will then work everywhere and teleport them to the shrine (if they are dead)
    • Ghosts can't be attacked by players and players not by ghosts
    • Ghosts can't interact with blocks (they are still able to use doors, buttons and levers)
    Version 1.0


    • first release
    Ressources I used (open)

    Read this if you update from 1.x to 2.x !! (open)

    Unfortunately i broke your shrines. Sorry =).
    That was necessary to add the multiworld support.
    There are two ways to fix this:

    1. Delete the shrines.yml located in \plugins\Death and Rebirth\data
    and add your shrines again to the world.

    2. Edit the shrines.yml and add the world name like this:


    Before (v1.1):
    Code:
    shrines:
        test:
            originalids:
                '3': 0
                '2': 0
                '10': 1
                '1': 0
                '0': 1
                '7': 1
                '6': 1
                '5': 1
                '4': 1
                '9': 1
                '8': 1
                '11': 1
            min:
                z: 101
                y: 63
                x: -45
            max:
                z: 103
                y: 66
                x: -43
            tb:
                z: 102
                y: 63
                x: -44
    After (v2.0):
    Code:
    shrines:
        yourWorldName:
            test:
                originalids:
                    '3': 0
                    '2': 0
                    '10': 1
                    '1': 0
                    '0': 1
                    '7': 1
                    '6': 1
                    '5': 1
                    '4': 1
                    '9': 1
                    '8': 1
                    '11': 1
                min:
                    z: 101
                    y: 63
                    x: -45
                max:
                    z: 103
                    y: 66
                    x: -43
                tb:
                    z: 102
                    y: 63
                    x: -44
    As you can see all you have to do is add the name of your world to it. It's important that the beginning of the worldname is between "shrines" and the name of the first shrine in the list.

    When you are finished check the yml with the Online YAML Parser.

     
    nazhrenn, JonasD and kahlilnc like this.
  2. Offline

    moonjokes

    Ghosts can break tall grass. Not a huge deal, but it would be nice if they couldn't.

    Edit: Never mind, the grass comes back it just takes longer than I anticipated. Nice plugin. :D
     
  3. Offline

    CJits

    Hehehe.. Silly me, it's because I'm an admin ^^"

    Yeah I use both, but it's just because I'm the admin. Everyone else can become a ghost except me. Oh well.. :D

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 18, 2016
  4. Offline

    LucidLethargy

    So first off, I just realized the current version is for 1060, and I am still on 1000... but it sounds like the issue is global. I cannot use the /dar reb command, perhaps THAT has to do with the fact I am not using the right version?

    Also is there a way to simply turn everyone into a mortal again before a restart? Like I restart like clockwork every 3 hours or so, is it possible somehow to set it up so every 2 hours and 55 minutes to run a command that makes all ghosts mortals? This might be a great workaround until you figure out how to retain after restarts! I don't know of any plugins that could do this, but there must be some sort of mechanism!
     
  5. Dropping is enabled and yet no one can drop anything when they die and turn into a ghost. There are no errors or anything

    Also, when you turn into a ghost, the night sky turns into a bright bluish sky so it doesn't look like night.

    I don't see any errors anywhere, ideas?
     
  6. Offline

    muCkk

    @Nicholas Totolos
    @CJits
    i guess you have the '*' permission. if that is the case try to add '-dar.ignore' and '-dar.nodrop'. the '-' tells permissions to exclude that node (in the main post is an example how it should look). that should solve those problems.
    if you cant use /dar reb either the plugin isn't enabled (/dar enable <world>) or you don't ve permission to use it. as far as i know the plugin should also work with 1000 but i didn't test it. anyhow i recommend to use the newest version.

    i can add an option to resurrect all ghosts on a server shutdown/restart (but not reload).
    at the moment all ghosts get their items back if the server shuts down using the stop command. if you just kill the task the drops are lost.
     
  7. Offline

    CJits

    Ah, thanks for the help. Now I've even learned something :)
     
  8. Offline

    LucidLethargy

    Turns out by right clicking the shrine I ended up becoming resurrected, although I did lose all of my items which was unfortunate... I'll restore from a backup though or something. I did have the world loaded (that's how I became a ghost to begin with) and I even tried re-enabling it to no effect. I can only imagine it's because i'm using 1000! Also my permissions work fine and are set up fine, so again must be 1000.

    Also I would love to use the stop command, but there is no option to do so for automated restarts. Those restarts are needed to keep my server up (and most if not all servers up) indefinitely so there's nothing we can do unless Bukkit patches any and all memory leaks. This is why I was looking for a workaround, or some plugin that could fire the command to re-mortalize everyone before a shut down!

    That being said I've warned my players, so hopefully they wont make the same mistake (and if they do I have some backups at least.)
     
  9. Offline

    mtbnunu

    It will be easier if you just added a "ressurect point" or however you want to name it, not configure each shrine.
    so once you select the points, you have a choice to say either /shrine add or /respoint add
     
  10. Offline

    muCkk

    i see. how exactly do you restart your server?
    i guess i have to write the inventory to a file to make it actually save in case of crashes/unexpected shutdowns.
    thats a good idea. i think it would be good to give shrines an option which says if you can resurrect there or not. that way admins don't have to run around and redefine all shrines again.
     
  11. This is what happens when someone dies on my server. It stays until the server is restarted/reloaded:

    [​IMG]
     
  12. Offline

    muCkk

    @Nicholas Totolos i know (it's also kinda listed in the "known bugs" spoiler, maybe i should rephrase that). the problem is that spout is not able to reset the sky colors. i hope they add that in the next version. until then the only options are to disable the changing of colors or to try to find a color setting which isn't srewing up the night ;).

    edit: i overlooked a part of spouts source, in the next version this will be fixed :)
     
  13. Offline

    BrassDoll

    Didn't see anyone mention it - As cool as the ghost namechange is, it refers to the account name, and it resets to the account name when you res. Is there a value to set the name of reference/reset to a modplayername? Specifically, we use DispNameChanger.

    a disable for the ghostname would suffice, although I don't see one. Sorry if I've overlooked.

    Very awesome plugin, by the way. Can't wait til they come up with a sky color check/reset feature over at Spout.

    Add: Do you think the Spout team knows that the sky reset feature would be useful? I can't think of any sky mods that worry about more than setting specific colors, or vanilla.

    Extra(Didn't check if mentioned): Although Citizens' mobs are in a testing phase of sorts, they ignore ghost-mode and maul you to death. It was pretty funny having one camping at a shrine - dying as a ghost a few times seems to perma-lock the ghost skin
     
  14. Offline

    muCkk

    @BrassDoll if you use spout you should get your custom name back. i'll add that for "non-spout" too.
     
  15. Offline

    BrassDoll

    We're using Spout, just not the launcher. New to the setup, seems the launcher is actually important, heh.
     
  16. Offline

    muCkk

    another plugin would be sky plus. but i'll write a suggestions for the spout team i guess.

    i didn't keep up with citizens lately, have to check that. thanks for reporting :)
     
  17. Offline

    paulsimonps

    Hey. We on my server have noticed that when a ghost tries to write something his name turns from for example ghost of paulsimonps to just paulsimonps. Great job on this otherwise :)
     
  18. Offline

    Lextao

    HELP! I found a terrible bug help!!
    This is conflicting with 'Heroes' plugin, cuz if you die having a class choosen you will NOT turn into a ghost, and also i think is conflicing with 'HeroChat' plugin, cuz if you revive someone their prefix color will be applied to their speech.
    Like this: Lextao: Hi all.
    If someone revives me: Lextao: Hi all.

    Help!
     
  19. Offline

    muCkk

    i'm trying to fix that problem right now. how do you give someone a prefix color in hero chat :p? i tried the moderator status, but that didn't change it.
     
  20. Offline

    Lextao

    Well no, it's not HeroChat i think, they get their name colors because of their permissions group...
     
  21. Offline

    muCkk

    Version 2.3.6
    • players can now unbind their souls
    • if reverse spawning is enabled: players will spawn at the nearest shrine if their soul is not bound anywhere instead of spawning at the spawn point
    • grave signs are now removed properly (half steps etc. wont get destroyed)
    • fly speed of ghosts is now configurable. the default value was redruced
    • new option: pvpdrop. if it's enabled a player will drop one random item if another player kills him. this overrides the dropping option
    • soulbinding can now be turned off for each shrine individually (toggle: /shrine binding name). resurrection is always possible
    • if ghostName ist left blank in the config, it's handled like it's disabled buggy
    • added new messages
    • fixed nodrop: items are now saved in a file and will be regained even if the server crashes or restarts without stopping
    • fixed displayname/title(spout) related problems. if you have custom names they should reset properly now
    • fixed resetting sky colors
    @Lextao this update should fix the prefix bug. i experienced no problems using permissions 3.1.6 and herochat (btw: you need permissions to define a prefix but herochat uses them to colorize names). i'll take a look at the heroes problem for the next update.

    @BrassDoll @Nicholas Totolos @LucidLethargy
    your problems should be fixed too
     
  22. Offline

    Lextao

    @muCkk Thank you so much!! Going to test right now... And also hope to see the upcoming Heroes fix!

    Oh and, I'm goin to update the spanish files :)

    EDIT: Here it is.
     
    muCkk likes this.
  23. Offline

    muCkk

    thank you :)! i updated the file in the main post.
     
    Lextao likes this.
  24. Offline

    lonewolf1221

    Hey ty for this cool plugin :D

    small bug, ghosts can still pick up bows. ty again :)
     
  25. Offline

    cennyr

    After the latest Spoutcraft update, and updating Death and Rebirth to 2.3.6, players on my server no longer see ghosts, or red sky. Shrines seem to work fine though.
     
  26. Offline

    Doctor G33K

    Can you get it so we can set a timer on the other player ressurection? Like, for example, in the middle of combat your friend falls over and dies. Your enemy is still attacking you. You go over your friend to res them, and a 10 second counter begins. If you move or are attacked in the counter, the counter stops and is interrupted.

    More balanced for PVP situations than just, oh my friend is dead, let's just rez him quickly and get it over with.

    Could we also enabled spout so that players in ghost mode see a different texture pack, rather than just skies?
     
  27. Offline

    BrassDoll

    @muCkk

    Thank you for your hard work, and the consideration. The new options make an already interesting plugin much more so.

    Unfortunately for our group, the name problem still persists - I think at this point it's more likely that the issue is how DispNameChanger must handle names.
     
  28. Offline

    Chilindron

    There is some way for admin with permissions: - '*' can play the plugin?
     
  29. Offline

    muCkk

    @lonewolf1221 thanks :).
    @cennyr do you use the dev builds of spoutcraft? my testserver uses the latest recommended builds. but i have a look at that
    @Doctor G33K sure, the timer is a good idea. also the texture pack shouldn't be a problem i guess.
    @BrassDoll i didn't test dispNameChanger yet, only playerEditor, i'll have a look.
    @Chilindron
     
  30. Offline

    JamesS

    The problem I have is not being able to die AT ALL... so I cant corpse run. How does one disable the ability to live forever so that I might use this? Spout appears to have disabled it.

    AHA! I found out how to die, but now I need to be able to corpse run. All in all, apart from the learning curve ( due to my lack of intelligence) a very nice addition to spout.
     
  31. Offline

    muCkk

    @JamesS sounds like some plugin provides a godmode. try to figure out which one and deactivate it. spout does not have something like that as far as i know.
     

Share This Page