約 1,745,386 件
https://w.atwiki.jp/scrapbooking/pages/57.html
Scrapbooking Blog(国内) enjoy crop 横浜市在住のpopoさんのBlogです。 現在妊娠中の1児のママさんですが、お教室はしばらく産休のため オリジナルkitsの販売をされています。 詳細はpopoさんのBlogにてご確認下さい。 8月キット 9月キット 10月キット 企業・お店・個人の方のHPをご紹介しています。 ご紹介・リンク掲載ご希望の方は、 support@scrapbooking-wiki.com までご連絡下さい。
https://w.atwiki.jp/dominions3/pages/961.html
The Sickle whose Crop is Pain 死の苦痛という作物を狩る鎌。上手くやれば死のGemを大量に得られる The Sickle whose Crop is Pain 片手武器 研究Lv 属性 属性2 内部ID 106 8 5 威力 攻撃補正 攻撃回数 長さ 5 4 1 1 防御力 防御補正 回避率 重さ 4 射程 弾数 特殊 防御貫通 その他 命中時効果:Decay特殊:敵を倒すと死Gemを得る ゲーム内解説文 A sickle made from beaten bronze with runes inscribed along its edges and a blood-groove running down the center of the blade, this tool is not used to cut rye or wheat. Instead, its harvest is of a far more sinister nature. When used in battle, the magic in the blade awakens and the sickle will harvest the pain of all those killed. Anyone surviving a hit from the sickle will start to decay and will die within minutes. 和訳 打ち延ばされた青銅で作られ、端に沿ってルーンが刻まれ、刃の中心に溝が走っている鎌。この道具は、ライ麦や小麦を刈り取るためには用いられません。その代わりとなる収穫物は、遥かに不吉なものです。戦いにおいて用いられるとき、刃の魔力は目覚めます。そして、鎌は死に逝く人々全ての苦痛を集めます。鎌の一撃を生き残る誰もが腐敗し始め、数分のうちに死に至ります。 注記 殺した相手の苦痛を死のGemとして収穫するアーティファクト。形状は農耕用の鎌だが、装備者には死神の如く暴れ回ることが期待される。 武器としては控えめな威力しか持たないが、技能補正は高め。またダメージを与えられればDecay効果を抵抗可能な判定で付加する。 特徴は倒した相手がMindlessでない限り、死Gemを1個得られること。これは近接武器攻撃かつ単体攻撃で満たす必要があり、装備して魔法で殲滅したり、Trampleで暴れたりしても意味は無い。 装備して手薄な土地を荒らしまわれば、1ターンで膨大な数のGemを収穫できる夢のある武器である。実際、単独で守備隊を蹴散らして回るだけでGemが山ほど手に入るので、機動力のある指揮官で使えば大きな利益になる。 これ1本では少々火力不足な感もあるが、条件はあくまで単体攻撃武器を用いて接近戦で敵を殺すことであるため、二刀流で他の武器に頼っても良い。ただしFire Brandの爆風などの範囲ダメージで倒すと無効なので、それらがついていない武器を使うのが無難。 侵攻の際には所有者のGem欄がきちんと空いているかは確認しておくこと。一人が持てるのは30個が限界なので、既に何か持っているなら研究所で置いてくるか、他の指揮官に預けるかしなくてはならない。忘れていると無駄な殺戮をする破目になる。 所有者が十分に殺害数を稼げる状態にできるなら、無理に単独行動をとらずに普通の軍と動くのも悪くない。また同行する魔術師に死Gemの需要があれば、研究所無しでも進軍しながら補充・消費することができるので手間がかからない。 コメント 名前 コメント
https://w.atwiki.jp/scrapbooking/pages/174.html
Scrapbooking関連wiki Crop Party * スクラップブッキング * simpleapi_img Crop Party * スクラップブッキング *は、日本中にいるスクラッパーが集まって、スクラップブッキングのことや、日常のたわいのない話ができるサイトです。 完全会員制のため、スクラップブッキングに関係ない人がなかなか参加しにくいので、LOを見せ合ったり、仲良し同士で日記を読みあったりと、仲間同士だけのコミュニケーションが気軽にきます。 Crop Party * スクラップブッキング *に参加するためには、すでに会員になっている方からの招待状が必要です。 もしくは、DECORUに参加希望とメールしていただき、洋二郎 [DECORU] から招待してもらわないといけません。 興味がある方はお気軽にお問い合わせください。 お問い合わせ先 ⇒ toya136@khaki.plala.or.jp(担当:外谷洋二郎) お気軽にご参加ください^^ タグ Crop Party DECORU スクラップブッキング
https://w.atwiki.jp/asdfqwert/pages/35.html
輪作 内容 牧場をLV3にすることが可能になる。 前提技術 無し 発展先 Animal Husbandry Recruit Steppe Horseman? Sheep Ranching? 技術一覧へ戻る
https://w.atwiki.jp/mtgflavortext/pages/5063.html
修練者は一門で生活し訓練する。それが試練を共に始める仲間なのだ。 Initiates live and train with their crop, the unit that begins the trials together. アモンケット 【M TG Wiki】 名前
https://w.atwiki.jp/touhoumtg/pages/2175.html
神穀「ディバイニングクロップ」/Divine Husk, Divining Crop 神穀「ディバイニングクロップ」/Divine Husk, Divining Crop(2)(G)(W) インスタント 好きな数のクリーチャーとプレイヤーの組み合わせを対象とする。このターン、それらに与えられる次のダメージを合計5点、好きなように割り振って軽減する。これによりクリーチャーに与えられるダメージが軽減された場合、軽減されたダメージ1点につき、そのクリーチャーの上に+1/+1カウンターを1個置く。 参考 風神録-レア
https://w.atwiki.jp/yamiorica/pages/278.html
《Pumper Crop the Pumpking of Ghosts》 効果モンスター 星6/闇属性/アンデッド族/攻1800/守2000 ①:このカードは守備力の合計が2000になるように自分フィールドの表側表示のアンデット族モンスター2体を墓地へ送り、手札・デッキから特殊召喚できる。 ②:自分・相手フィールドのアンデット族モンスター1体を対象として発動できる。 レベルの合計が対象のモンスターのレベル以下となるように、デッキから「パンプキング」モンスターまたは「パンプリンセス」モンスターを任意の数だけ選んで守備表示で特殊召喚する。 その後、対象のモンスターを墓地へ送る。 ③:このカードが効果で墓地へ送られた場合に発動できる。 お互いのプレイヤーは、それぞれデッキから1枚ドローする。 概要 闇属性・アンデッド族の上級モンスター。 オリカ作成者 AFSC(Beller) このカードを使用する代表的なデッキ 関連リンク OCG関連
https://w.atwiki.jp/wcrop/pages/26.html
100313 ■事業 ー todoリストには本がない todoリストの古典をつくろう ひめくり形式 ―― ■会社のPC壊してメーラー変更、TB3に †よいところ カレンダー同期(googleと) todo、メール、カレンダー 消す快感がほしい pdfの安心感(消えてしまうのではないか) 野村総合研究所はこうして紙を無くした! http //www.amazon.co.jp/dp/4048684094 http //ascii.asciimw.jp/books/books/detail/978-4-04-868409-5.shtml □を塗る(完了)、斜線(先送り)、バツ(しない)、+(ルーチン格上げ) RTMはモヤモヤする 時間の視覚化に成功できていないのでは?>Gカレンダ 手触り感というか now 〆切 ↓ 10 11 ▽ 12 13 ―+――――+――――+――――+――――+――――→ +―――――――――――+ 105分 aマルチ (日 月 年 生涯 10 11 12 13 ―+――――+――――+――――+――――+――――→ ↑―――――――――――↑ now 105分... 〆切x ↑――――――――――――――――――↑ now 150分... 〆切y bシングル ギチギチ (ま 10 11 12 13 ―+――――+――――+――――+――――+――――――――――→ ↑―――――――――――↑―――――――――――↑ now 105分... 〆切x 95分.. 〆切y bシングル バッファ 10 11 12 13 ―+――――+――――+――――+――――+――――――――――→ ↑―――――――↑ ↑―――――――――↑ now 70分... 〆切x 95分.. 〆切y =今日の詰まり方を見れる bシングル+マルチ (36年9か月) ◆ 10 11 12 13 ―+――――+――――+――――+――――+――――――――――――〃――→65歳 ↑―――――――↑ ↑―――――――――↑ 臨終 now 70分... 〆切x 95分.. 〆切y ↑――――――――――――――――――――――――――↑ now 4時間30分... 来客 bシングル+マルチ 10 11 12 13 □+□□□□+□□□□+□□□□+□□□□+□□□□□□□□□□→ ↑□□□□□□□↑ ↑□□□□□□□□□↑ now 70分..〆切x 95分.. 〆切y ↑□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□↑ now 4時間30分... 来客 コンセプト 時間の流れは1本 「ライフライン」 人生という名の列車 寿命のろうそく タスク詰めすぎると短くなる 休憩入れないと激減 似た表現 http //realscale.jp/index.html 時間はくりかえされる(時計やカレンダーのイメージ のではなく、 消費されるもの ネット事業の企画を書いてください -- てすと (2009-09-28 23 16 40) ここにどんどん書いてください -- 名無しさん (2009-09-28 23 17 02) 実は地味だけどやりたいことがある。通信教育。 -- cab (2009-09-29 01 52 59) 自殺の阻止サービス -- 名無しさん (2009-09-30 00 41 39) コレクションの自慢場所を提供するサービス -- nanami (2009-10-03 08 38 35) マイナーな観光地のみを紹介するサイト。審査あり(有名だとボツ) -- nanami (2009-10-03 22 30 14) 本気で良い製品だけを紹介するハード版通販生活のようなさいと -- 名無しさん (2009-10-04 23 18 35) 気づき.com -- おくの (2009-10-06 02 01 36) スカイプとお絵描きチャットみたいなの組み合わせてうまいこと家庭教師できないですかね -- goo (2009-10-11 14 48 40) 学級文庫入れるマンガをアドバイスする -- 名無しさん (2009-10-13 08 38 03) 名前 コメント 100213 ■格言プロジェクト とりあえず数を 上の句と下の句がある 格言カルタ そこに○○があるから どういうものをあげていくべきか ひらめきを感じるような、短歌てきなイメージのある。 とにかくかいていきましょう 名言でもいい「美しい花はあるが、花の美しさというものはない」 「僕も今それ思ってました!」と言わせるようなインパクト 「図書館は心の病院である」(古代エジプト碑文) 「人が独身でいるのはよくない」(聖書) 日本の子供には、もっと孤独を教えないと、思想は生まれませんね。by川端康成 コピーライティングに近い 参考 http //twitter.com/copy_writter 新聞に圏外は、ない。(奈良日日新聞社/2009/西島知宏) 芥川「侏儒の言葉」http //www.aozora.gr.jp/cards/000879/files/158_15132.html ビアス「悪魔の辞典」 マーフィーの法則 1メタファー型 結婚とは包囲された砦である。外にいるものは入りたがり、中にいるものはそこから出たがる。 2対比型 子供が、大人が。男は、女は。 3同じ型 読書して考えないのは、食事をして消化しないのと同じである。 byエドマンド・バーク 4名詞 転ばぬ先の杖。 5はったり型=それ自体は何も言っていないが、読者の妄想に任すもの 「尻が割れる」「女は女である」「明日は明日の風が吹く」 やさしくなければ生きていけない。やさしくなければ生きている値打ちがない。 男はタフでなければ生きて行けない、 優しくなければ生きて行く資格がない 出典 作家(著名人、学者) 現代もの(宇宙飛行士) 聖書(各種経典) 言い伝え(よみ人知らず) アルバイトの格言 出会い系サイトの格言は、まだない 業界のいいつたえ、あるある。 091114 サイト サーバを専用にするか? たてる方向で検討 共有口座をつくる wrop bbb ブンゲイ・ブーム ■wcrop 業務案内 発起人紹介 組織図 ■BBB BBBとは? バックナンバー 読むコンテンツ ライター紹介 ★コンテンツから考えるべき podcast ネットラジオ 本の紹介 本の評論 ブランチ的? BBB次回録音してみましょう 好きな本(シェービングクリーム)一冊、5分 インタビュアーをつける 見えるシュレッダー(演出) 醍醐味ラジオ こうおもってるけどほんとはこうなんですよ 裁判 ★既存インフラ http //ladio.net/ youtube シュレッダ ガム 画鋲 飴のベトベト 錠剤 銭湯でのタオル ケンタッキーの残りで出汁 魚の内臓 貝の内臓 なか卯のアナウンスはいかに お釣りをキレイにする 切手の盛り合わせ 食い物をラジオで 音楽映画本 ランキング のど飴、歯ブラシ オーダーメイド歯ブラシ 開運グッズ 091107 □土八会議のルール 休む場合はwikiトップにコメント 議題なども思いついたら書いておく なるべく8時から8時10分までに集合 □15日ブンゲイ段取り 文芸 091111〆切 091115発行 □サイトを作る BBBのメインサイト 発行元のwcropのサイト 「ダブクロ」 →企画書、目論見書をつくれ11/14 □新年会スケジュール 今年は年越し!イベント 27日21 00が今年最後。年が変わります。 2年参りもできます。録画します。 @京都 090926 鳩山会館 東京都文京区音羽1丁目7-1 昭和の暮らし博物館 東京都大田区久が原 切手の博物館 目白 ていぱーく 大手町 東京国立博物館 上野 国会議事堂 永田町 国立科学博物館 上野 国会・鳩山コース 科学・国立コース ていぱーく・切手コース 集合場所=有楽町線「永田町駅」2番出口に http //www.sangiin.go.jp/japanese/taiken/bochou/kengaku.html http //www.tokyoguide.net/spot/188/ =========================== 0901003 国会→鳩山→?→屋形船(15時) http //www.4900yen.com/ 持ち込みOKか聞いてみる(ワイン) 国会に確認 =========================== ■起業 ●設立費 30万程度 ●維持費(税金) 7万/年=6000/月(県民税5万・市民税2万) 5人でシュミレーション 6万+月1200 合同会社 株式会社=取締役が必要 各自いまの会社の就業規則をよく読むこと 設立=1月1日 ■事業内容=サイト運営(ニュース)、アフィリエイト ■コスト=サーバー代 ■ コンテンツ案=映画情報、朗読、展覧会情報、ニュース、ネーミング募集情報サイト(公募ガイド)、アイデアのエージェント、一般人からネーミング案を集めて納品、広告代理店(コンカツみたいな言葉を流行らせる)、勝手にキャラを作って売る、漫画原作・キャラクターのプロダクション(アメコミ)、じゃくあん的な機能、受験生相談、居酒屋マップ、neet.com、北朝鮮の(世界の)女子アナ、作文支援、文通交換サービス、メールキャバクラ、祈願代行、 →3日に考える! ■仕組みを考えて実行 ■やって面白い、個人的な願望を実現できる仕事で(×コピペブログ)、更新頻度低い =========================== http //www.charactoy.com/index.html http //www.mediacome.net/chara/order_select.html http //www.vendian.org/envelope/dir2/day_of_dots_clock/?do=09 45 20#topofclock 1ブロック=15分の場合……1行6時間(■×96) ■■■■■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■■■■■■■■ ================================================================================ 1ブロック=20分の場合……1行6時間(■×72) ■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■■■■■ ================================================================================ 1ブロック=30分の場合……1行6時間(■×48) ■■■■■■■■■■■■ ■■■■■■■■■■■■ ■■■■■■■■■■■■ ■■■■■■■■■■■■ ================================================================================ 1ブロック=45分の場合……1行6時間(■×36) ■■■■■■■■ ■■■■■■■■ ■■■■■■■■ ■■■■■■■■ ================================================================================ 1ブロック=60分の場合……1行6時間(■×24) ■■■■■■ ■■■■■■ ■■■■■■ ■■■■■■ =========================== リメンバーザミルク……todoリスト =========================== ●どのタイプで行く? ●睡眠時間は何時間欲しい? ●食事やお風呂にはどれくらいかける? ●しなければならないことは何? ●やりたいことは? ================================================================================ ●30分刻みを使うサラリーマンA子さんの場合 睡眠は8時間 ■■■■■■■■■■■■■■■■ 【生活に必要】 朝食と新聞に1時間 ■■ ランチに30分 ■ 夕食に1時間 ■■ お風呂に1時間 ■■ 通勤に2時間半 ■■■■■ 【タスク】 会議に1時間半 ■■■ 報告書作成に1時間半 ■■■ メールに30分 ■ 顧客と打ち合わせに移動時間込みで2時間半 ■■■■■ 【楽しみ】 英語の勉強に1時間 ■■ ドラマを見る ■■ ブログ更新とネット ■■ 余り1時間 ■■ http //www.benricho.org/game/arrange/ =========================== 十年砂時計 http //logipara.com/zaregoto/sandglass.html 河津絶賛 =========================== 小野田さんの本が読みたい 陸軍中野学校出身 =========================== ■その他 仕事するのにオフィスはいらない 動かないものを試作して面白いかどうか試す。プログラマーの友人つくる? グーグルに預けるのは悔しい 合宿したい(小説、手塚治虫) アイデアはあるが技術がない http //www.youtube.com/watch?v=8EaUJ4e2B7M http //www.webdesignlibrary.jp/2006/06/flash_gravity.php http //www.colorado.edu/physics/2000/applets/satellites.html =========================== 090718【wcrop会議】 ■読書会アウトプット wiki内に「クロスレビュー」ページ作成 「これまでの土八本」が目次、このページの中に ここの中を充実させていく ■事業計画 SWOT分析(組織で何ができるか) 法人作ろう(会社法の勉強) コンテンツ作成 評価会社(いまあるものの編集) しおりをつくる ツールを作りたい(igoogleのガジェット) ガジェット作るのはお金かかる(高ハードル) webサービスを開始する。エキサイト翻訳とかルパン三世タイトルメーカーとか 「インタビュー記事メーカー」を作ろう(私の履歴書) 教えてgooみたいな ■みんなのtodoリスト(SNS) todoはパターン化できる ワタミのtodoリストはこうなっています エビちゃんのtodoリストはこうなっています 広告とリンクできる 他人のを参考に簡易マニュアル化 「そろそろ梅の季節か・・・」きづき 社内の人の 一般のひとの NOT ToDo 年齢別、職業別 「参考」http //twitter.com/about#contact ■雑務 googleグループ内の議事録をwikiに引っ越し→閉店 090711 wcop会議 細かい議題は来週へ 読書会のアウトプット ●古典に特化(○○文庫に特化) ●新ブログをたてる ●各人レビューをきっちり文章化(ファミ通みたいなの) 次々回以降の土八本 ・小説神髄は絶版 ・ベートーベンの生涯/ロマンロラン(評伝) ・トリストラムシャンディ/スターン/岩波 ・西郷札/松本清張/新潮 ・魔の山/マン ・永久平和のために/カント ・それでも人生にイエスという ・異邦人/カミュ/新潮 ・性のアウトサイダー/コリン・ウィルソン ・車輪の下/ヘッセ/新潮 ・マンガの創り方/山本おさむ 事業計画 SWOT分析 ミッシー 購読拡大計画 wcrop@nanami_yuki 読者増策よいと思います。めざせ100人!まとめるとgoogleグループは廃止、対外ブログをBBBと読書会、アイディアはTWITTER、編集会議は@WIKI。でしょうか nanami_yukiメルマガ読者増やしたいですね。 ・BBB登録画面からリンクされている「発行者サイト」を、差し呑み!ではなく一般向けのものに変更。ライターの紹介など。 取りあえずこんなのどうでしょう。1 47 AM Jul 6th webで =========================== 090724(金)決行 大阪起業家ミュージアム(堺筋本町)火木金土のみ まほうびん記念館(天満橋)土日祝日休み ★造幣博物館(天満橋)10日前までに予約 イトーキ記念館(北浜)土日祝休み ★松下幸之助歴史観(西三荘)日祝休館 ★インスタントラーメン発明記念館(池田)火曜祝日休み 15時30分まで =========================== 【Wcrop】 決算=3月末 岩瀬幹事長 奥野司令官 今村チーフ 池田監査役 佐藤事務官Officer 河津工作員 社長=キャプテン、 社員=クルー、 非正規社員=キャスト、 顧客=ゲスト、 株主=ホスト、 株主(♀)=ホステス、 仕事=ミッション、 始業=ショウタイム !、 終業=ゲームオーバー、 残業=オーバービジネス、 会議=インスパイアメント、 説教=パニッシュメント、 呑み会=ハウリング 次回までに、所管業務、自分の仕事を決めておく =========================== 090718【wcrop会議】 ■読書会アウトプット wiki内に「クロスレビュー」ページ作成 「これまでの土八本」が目次、このページの中に ここの中を充実させていく ■事業計画 SWOT分析(組織で何ができるか) 法人作ろう(会社法の勉強) コンテンツ作成 評価会社(いまあるものの編集) しおりをつくる ツールを作りたい(igoogleのガジェット) ガジェット作るのはお金かかる(高ハードル) webサービスを開始する。エキサイト翻訳とかルパン三世タイトルメーカーとか 「インタビュー記事メーカー」を作ろう(私の履歴書) 教えてgooみたいな ■みんなのtodoリスト(SNS) todoはパターン化できる ワタミのtodoリストはこうなっています エビちゃんのtodoリストはこうなっています 広告とリンクできる 他人のを参考に簡易マニュアル化 「そろそろ梅の季節か・・・」きづき 社内の人の 一般のひとの NOT ToDo 年齢別、職業別 「参考」http //twitter.com/about#contact ■雑務 googleグループ内の議事録をwikiに引っ越し→閉店 090711 wcop会議 細かい議題は来週へ 読書会のアウトプット ●古典に特化(○○文庫に特化) ●新ブログをたてる ●各人レビューをきっちり文章化(ファミ通みたいなの) 次々回以降の土八本 ・小説神髄は絶版 ・ベートーベンの生涯/ロマンロラン(評伝) ・トリストラムシャンディ/スターン/岩波 ・西郷札/松本清張/新潮 ・魔の山/マン ・永久平和のために/カント ・それでも人生にイエスという ・異邦人/カミュ/新潮 ・性のアウトサイダー/コリン・ウィルソン ・車輪の下/ヘッセ/新潮 ・マンガの創り方/山本おさむ 事業計画 SWOT分析 ミッシー 購読拡大計画 wcrop@nanami_yuki 読者増策よいと思います。めざせ100人!まとめるとgoogleグループは廃止、対外ブログをBBBと読書会、アイディアはTWITTER、編集会議は@WIKI。でしょうか nanami_yukiメルマガ読者増やしたいですね。 ・BBB登録画面からリンクされている「発行者サイト」を、差し呑み!ではなく一般向けのものに変更。ライターの紹介など。 取りあえずこんなのどうでしょう。1 47 AM Jul 6th webで =========================== 090724(金)決行 大阪起業家ミュージアム(堺筋本町)火木金土のみ まほうびん記念館(天満橋)土日祝日休み ★造幣博物館(天満橋)10日前までに予約 イトーキ記念館(北浜)土日祝休み ★松下幸之助歴史観(西三荘)日祝休館 ★インスタントラーメン発明記念館(池田)火曜祝日休み 15時30分まで =========================== 【Wcrop】 決算=3月末 岩瀬幹事長 奥野司令官 今村チーフ 池田監査役 佐藤事務官Officer 河津工作員 社長=キャプテン、 社員=クルー、 非正規社員=キャスト、 顧客=ゲスト、 株主=ホスト、 株主(♀)=ホステス、 仕事=ミッション、 始業=ショウタイム !、 終業=ゲームオーバー、 残業=オーバービジネス、 会議=インスパイアメント、 説教=パニッシュメント、 呑み会=ハウリング 次回までに、所管業務、自分の仕事を決めておく ===========================
https://w.atwiki.jp/hmiku/pages/46034.html
【登録タグ H VOCALOID 名誉会長P 曲 鏡音レン】 作詞:名誉会長P 作曲:名誉会長P 編曲:名誉会長P 唄:鏡音レン 歌詞 (PIAPROより転載) ショッピングモールの店員が 腐った魚を野良猫に それを正義のヒーローが 大義名分掲げて追い回す 本末転倒のこの社会 ゴキブリだらけのバックヤード 飯も食えない給料で 怖い目をして踊り出す 神も天皇も仏もいないこの街で 何もかも消えてしまえばいいのに 同じ空気も吸いたくないよ こんな組織は遺伝子レベルから イカれてる ああ 繋いだ手を はやく離せ 俺とお前は同じじゃないよ こんな鎖は遺伝子レベルから断ち切って 吹き飛ばして消し飛ばせ ここは俺の居場所じゃない 万引き 盗撮 ストーカー 死体が浮かぶ貯水槽 今日も楽しい毎日が 笑顔振りまきながら走り回る 荒唐無稽のこの社会 ネズミが這いずるフードコート 不潔極まる環境で 頭抱えて踊り出す アッラーもヤハウェも異端もいないこの街で 存在がそれ自体誤りだろ 頭イカれた連中ばかり 下劣極まる愚者の集合なら 今すぐに ああ 絆結ぶ わけないだろ 俺とお前は無関係だよ 鎖自慢は何も生まない そう、覚えとけ! 諦めるな無に返せ ここは最果ての地じゃない 口を開けばまたフーゾクの話 聞き飽きた 次は出会い系のサイト勧められるのさ 何もかも消えてしまえばいいのに 同じ空気も吸いたくないよ こんな組織は遺伝子レベルから イカれてる ああ 繋いだ手を はやく離せ 俺とお前は同じじゃないよ こんな鎖は遺伝子レベルから断ち切って 吹き飛ばして消し飛ばせ ここは俺の居場所じゃない コメント 名前 コメント
https://w.atwiki.jp/mi_ic2/pages/134.html
TileEntityCrop 私はこのコードについて真に驚くべき解説ができるが、ここに記すには@Wikiの制限容量が少なすぎる。 バージョン: industrialcraft-2-2.2.828-experimental package ic2.core.crop; import ic2.api.crops.BaseSeed; import ic2.api.crops.CropCard; import ic2.api.crops.Crops; import ic2.api.crops.ICropTile; import ic2.api.network.INetworkDataProvider; import ic2.api.network.INetworkUpdateListener; import ic2.core.IC2; import ic2.core.Ic2Items; import ic2.core.block.machine.tileentity.TileEntityCropmatron; import ic2.core.item.ItemCropSeed; import ic2.core.network.NetworkManager; import ic2.core.util.StackUtil; import ic2.core.util.Util; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Set; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.StatCollector; import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.World; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; public class TileEntityCrop extends TileEntity implements INetworkDataProvider, INetworkUpdateListener, ICropTile { public byte humidity = -1; public byte nutrients = -1; public byte airQuality = -1; private static final boolean debug = false; private CropCard crop = null; public int size = 0; public int statGrowth = 0; public int statGain = 0; public int statResistance = 0; public int scanLevel = 0; public NBTTagCompound customData = new NBTTagCompound(); public int nutrientStorage = 0; public int waterStorage = 0; public int exStorage = 0; public int growthPoints = 0; public boolean upgraded = false; public char ticker; public boolean dirty; public static int tickRate = 256; public int weedlevel; public int Infestedlevel; public TileEntityCrop() { this.ticker = (char)IC2.random.nextInt(tickRate); this.dirty = true; this.weedlevel = 0; this.Infestedlevel = 0; } public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); if (nbt.hasKey( cropOwner ) nbt.hasKey( cropName )) { this.crop = Crops.instance.getCropCard(nbt.getString( cropOwner ), nbt.getString( cropName )); } else if (nbt.hasKey( cropid )) { this.crop = IC2Crops.getCropFromId(nbt.getShort( cropid )); } this.size = nbt.getByte( size ); this.statGrowth = nbt.getByte( statGrowth ); this.statGain = nbt.getByte( statGain ); this.statResistance = nbt.getByte( statResistance ); if (nbt.hasKey( data0 )) { for(int x = 0; x 16; ++x) { this.customData.setShort( legacy + x, nbt.getShort( data + x)); } } else if (nbt.hasKey( customData )) { this.customData = nbt.getCompoundTag( customData ); } this.growthPoints = nbt.getInteger( growthPoints ); this.nutrientStorage = nbt.getInteger( nutrientStorage ); this.waterStorage = nbt.getInteger( waterStorage ); this.exStorage = nbt.getInteger( exStorage ); this.upgraded = nbt.getBoolean( upgraded ); this.scanLevel = nbt.getByte( scanLevel ); this.weedlevel = nbt.getInteger( weedlevel ); this.Infestedlevel = nbt.getInteger( Infestedlevel ); } public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); if (this.crop != null) { nbt.setString( cropOwner , this.crop.owner()); nbt.setString( cropName , this.crop.name()); } nbt.setByte( size , (byte)this.size); nbt.setByte( statGrowth , (byte)this.statGrowth); nbt.setByte( statGain , (byte)this.statGain); nbt.setByte( statResistance , (byte)this.statResistance); nbt.setTag( customData , this.customData); nbt.setInteger( growthPoints , this.growthPoints); nbt.setInteger( nutrientStorage , this.nutrientStorage); nbt.setInteger( waterStorage , this.waterStorage); nbt.setInteger( exStorage , this.exStorage); nbt.setBoolean( upgraded , this.upgraded); nbt.setByte( scanLevel , (byte)this.scanLevel); nbt.setInteger( weedlevel , this.weedlevel); nbt.setInteger( Infestedlevel , this.Infestedlevel); } public void updateEntity() { super.updateEntity(); ++this.ticker; if (this.ticker % tickRate == 0) { this.tick();// 256MinecraftTickに1回呼ばれる } if (this.dirty) {// 更新が必要なら更新する this.dirty = false; this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); this.worldObj.updateLightByType(EnumSkyBlock.Block, this.xCoord, this.yCoord, this.zCoord); if (IC2.platform.isSimulating()) { Iterator var1 = this.getNetworkedFields().iterator(); while(var1.hasNext()) { String field = (String)var1.next(); ((NetworkManager)IC2.network.get()).updateTileEntityField(this, field); } } } } public List getNetworkedFields() { List ret = new ArrayList(4); ret.add( crop ); ret.add( size ); ret.add( upgraded ); ret.add( customData ); ret.add( weedlevel ); ret.add( Infestedlevel ); return ret; } public void tick() { if (IC2.platform.isSimulating()) { if (this.ticker % (tickRate 2) == 0) {// 1024Minecraftに1度、位相そのまま this.humidity = this.updateHumidity(); } if ((this.ticker + tickRate) % (tickRate 2) == 0) {// 1024Minecraftに1度、上の256tick前 this.nutrients = this.updateNutrients(); } if ((this.ticker + tickRate * 2) % (tickRate 2) == 0) {// 1024Minecraftに1度、上の256tick前 this.airQuality = this.updateAirQuality(); } if (this.crop == null) { if (!this.upgraded || !this.attemptCrossing()) {// upgradedなら何もしない、upgradedでないなら交配試行して成功したらスルー、交配失敗だと内部を実行 if (IC2.random.nextInt(100) != 0 || this.hasEx()) { if (this.exStorage 0 IC2.random.nextInt(10) == 0) { --this.exStorage; } return; } this.reset(); this.crop = IC2Crops.weed; this.size = 1; } assert this.crop != null; } this.crop.tick(this); if (this.crop.canGrow(this)) { this.growthPoints += this.calcGrowthRate(); if (this.crop == null) { return; } if (this.growthPoints = this.crop.growthDuration(this)) { this.growthPoints = 0; ++this.size; this.dirty = true; } } if (this.nutrientStorage 0) { --this.nutrientStorage; } if (this.waterStorage 0) { --this.waterStorage; } if (this.crop.isWeed(this) IC2.random.nextInt(50) - this.statGrowth = 2) { this.generateWeed(); } } } public void generateWeed() { int x = this.xCoord; int y = this.yCoord; int z = this.zCoord; switch(IC2.random.nextInt(4)) { case 0 ++x;// breakが足りない case 1 --x;// breakが足りない case 2 ++z;// breakが足りない case 3 --z; } if (this.worldObj.getTileEntity(x, y, z) instanceof TileEntityCrop) { TileEntityCrop teCrop = (TileEntityCrop)this.worldObj.getTileEntity(x, y, z); CropCard neighborCrop = teCrop.getCrop(); if (neighborCrop == null || !neighborCrop.isWeed(teCrop) IC2.random.nextInt(32) = teCrop.statResistance !teCrop.hasEx()) { int newGrowth = Math.max(this.statGrowth, teCrop.statGrowth); if (newGrowth 31 IC2.random.nextBoolean()) { ++newGrowth; } teCrop.reset(); teCrop.crop = IC2Crops.weed; teCrop.size = 1; teCrop.statGrowth = (byte)newGrowth; } } else if (this.worldObj.isAirBlock(x, y, z)) { Block block = this.worldObj.getBlock(x, y - 1, z); if (block == Blocks.dirt || block == Blocks.grass || block == Blocks.farmland) { this.worldObj.setBlock(x, y - 1, z, Blocks.grass, 0, 7); this.worldObj.setBlock(x, y, z, Blocks.tallgrass, 1, 7); } } } public boolean hasEx() { if (this.exStorage 0) { this.exStorage -= 5; return true; } else { return false; } } public boolean attemptCrossing() { if (IC2.random.nextInt(3) != 0) {// 確率で無条件失敗 return false; } else { List cropTes = new ArrayList(4);// 交配参加可能植物を列挙 this.askCropJoinCross(this.xCoord - 1, this.yCoord, this.zCoord, cropTes); this.askCropJoinCross(this.xCoord + 1, this.yCoord, this.zCoord, cropTes); this.askCropJoinCross(this.xCoord, this.yCoord, this.zCoord - 1, cropTes); this.askCropJoinCross(this.xCoord, this.yCoord, this.zCoord + 1, cropTes); if (cropTes.size() 2) {// 参加可能が2個未満で失敗 return false; } else { CropCard[] crops = (CropCard[])Crops.instance.getCrops().toArray(new CropCard[0]);// 全植物を列挙 if (crops.length == 0) {// 植物がないときは失敗 return false; } else { int[] ratios = new int[crops.length];// ここまでの累積交配比重 int total = 0; int search;// 全植物の交配比重の合計を計算 for(search = 0; search ratios.length; ++search) { CropCard crop = crops[search]; TileEntityCrop te; if (crop.canGrow(this)) { for(Iterator var7 = cropTes.iterator(); var7.hasNext(); total += this.calculateRatioFor(crop, te.getCrop())) { te = (TileEntityCrop)var7.next(); } } ratios[search] = total; } search = IC2.random.nextInt(total);// 累積交配比重に準じた乱数 int min = 0; int max = ratios.length - 1; int count; while(min max) {// minをsearchに対応したcropsのインデックスにする count = (min + max) / 2; int value = ratios[count]; if (search value) { max = count; } else { min = count + 1; } } assert min == max; assert min = 0 min ratios.length; assert ratios[min] search; assert min == 0 || ratios[min - 1] = search; this.upgraded = false; this.crop = crops[min]; this.dirty = true; this.size = 1; this.statGrowth = 0; this.statResistance = 0; this.statGain = 0; TileEntityCrop te;// 交配参加した作物の合計計算 for(Iterator var13 = cropTes.iterator(); var13.hasNext(); this.statGain += te.statGain) { te = (TileEntityCrop)var13.next(); this.statGrowth += te.statGrowth; this.statResistance += te.statResistance; } count = cropTes.size(); this.statGrowth /= count; this.statResistance /= count; this.statGain /= count;// ここまででGGRが交配参加した作物の平均になっている this.statGrowth += IC2.random.nextInt(1 + 2 * count) - count;// -count~count this.statGain += IC2.random.nextInt(1 + 2 * count) - count; this.statResistance += IC2.random.nextInt(1 + 2 * count) - count; this.statGrowth = Util.limit(this.statGrowth, 0, 31); this.statGain = Util.limit(this.statGain, 0, 31); this.statResistance = Util.limit(this.statResistance, 0, 31); return true; } } } } public int calculateRatioFor(CropCard newCrop, CropCard oldCrop) { if (newCrop == oldCrop) {// 同一植物だと500 return 500; } else { int value = 0;// 交配比重、初期値0 int diff;// statが完全に同一の時+10、statが1ずれるごとに-1のペナルティ int delta; for(diff = 0; diff 5; ++diff) { delta = Math.abs(newCrop.stat(diff) - oldCrop.stat(diff)); value += -delta + 2; } String[] var12 = newCrop.attributes();// 属性が大文字小文字無視で一致するごとに+5 delta = var12.length; for(int var6 = 0; var6 delta; ++var6) { String attributeNew = var12[var6]; String[] var8 = oldCrop.attributes(); int var9 = var8.length; for(int var10 = 0; var10 var9; ++var10) { String attributeOld = var8[var10]; if (attributeNew.equalsIgnoreCase(attributeOld)) { value += 5; } } } diff = newCrop.tier() - oldCrop.tier();// Tier増分が正の場合2倍ペナルティ、負の場合1倍ペナルティ if (diff 1) { value -= 2 * diff; } if (diff -3) { value -= -diff; } return Math.max(value, 0); } } public void askCropJoinCross(int x, int y, int z, List crops) { TileEntity te = this.worldObj.getTileEntity(x, y, z); if (te instanceof TileEntityCrop) {// ブロックが支柱で、 TileEntityCrop sideCrop = (TileEntityCrop)te; CropCard neighborCrop = sideCrop.getCrop(); if (neighborCrop != null) {// 植物が存在し、 if (neighborCrop.canGrow(this) neighborCrop.canCross(sideCrop)) {// その植物種が交配後の位置で成長可能であり、交配前の位置で交配可能である場合、 int base = 4;// 初期値4 if (sideCrop.statGrowth = 16) {// Gr16で1のボーナス ++base; } if (sideCrop.statGrowth = 30) {// Gr30で1のボーナス ++base; } if (sideCrop.statResistance = 28) {// Re28以降1ずつペナルティ base += 27 - sideCrop.statResistance; } if (base = IC2.random.nextInt(20)) {// (base + 1) / 20が交配参加確率。 crops.add(sideCrop); } } } } } public boolean leftClick(EntityPlayer player) { if (this.crop == null) { if (this.upgraded) { this.upgraded = false; this.dirty = true; if (IC2.platform.isSimulating()) { StackUtil.dropAsEntity(this.worldObj, this.xCoord, this.yCoord, this.zCoord, new ItemStack(Ic2Items.crop.getItem())); } return true; } else { return false; } } else { return this.crop.leftclick(this, player); } } public boolean pick(boolean manual) { if (this.crop == null) { return false; } else { boolean bonus = this.harvest(false); float firstchance = this.crop.dropSeedChance(this); int drop; for(drop = 0; drop this.statResistance; ++drop) { firstchance *= 1.1F; } drop = 0; int x; if (bonus) { if (IC2.random.nextFloat() = (firstchance + 1.0F) * 0.8F) { ++drop; } float chance = this.crop.dropSeedChance(this) + (float)this.statGrowth / 100.0F; if (!manual) { chance *= 0.8F; } for(x = 23; x this.statGain; ++x) { chance *= 0.95F; } if (IC2.random.nextFloat() = chance) { ++drop; } } else if (IC2.random.nextFloat() = firstchance * 1.5F) { ++drop; } ItemStack[] re = new ItemStack[drop]; for(x = 0; x drop; ++x) { re[x] = this.crop.getSeeds(this); } this.reset(); if (IC2.platform.isSimulating() re.length 0) { for(x = 0; x re.length; ++x) { if (re[x].getItem() != Ic2Items.cropSeed.getItem()) { re[x].stackTagCompound = null; } StackUtil.dropAsEntity(this.worldObj, this.xCoord, this.yCoord, this.zCoord, re[x]); } } return true; } } public boolean rightClick(EntityPlayer player) { ItemStack current = player.getCurrentEquippedItem(); boolean creative = player.capabilities.isCreativeMode; if (current != null) { if (this.crop == null) { if (current.getItem() == Ic2Items.crop.getItem() !this.upgraded) { if (!creative) { --current.stackSize; if (current.stackSize = 0) { player.inventory.mainInventory[player.inventory.currentItem] = null; } } this.upgraded = true; this.dirty = true; return true; } if (this.applyBaseSeed(player)) { return true; } } if (current.getItem() == Items.water_bucket || current.getItem() == Ic2Items.waterCell.getItem()) { if (this.waterStorage 10) { this.waterStorage = 10; return true; } return current.getItem() == Items.water_bucket; } if (current.getItem() == Items.wheat_seeds) { if (this.nutrientStorage = 50) { this.nutrientStorage += 25; --current.stackSize; if (current.stackSize = 0) { player.inventory.mainInventory[player.inventory.currentItem] = null; } return true; } return false; } if (current.getItem() == Items.dye current.getItemDamage() == 15 || current.getItem() == Ic2Items.fertilizer.getItem()) { if (this.applyFertilizer(true)) { if (creative) { return true; } else { --current.stackSize; if (current.stackSize = 0) { player.inventory.mainInventory[player.inventory.currentItem] = null; } return true; } } else { return false; } } if (current.getItem() == Ic2Items.hydratingCell.getItem()) { if (this.applyHydration(true, current, player)) { if (current.stackSize = 0) { player.inventory.mainInventory[player.inventory.currentItem] = null; } return true; } return false; } if (current.getItem() == Ic2Items.weedEx.getItem() this.applyWeedEx(true)) { current.damageItem(1, player); if (current.stackSize = 0) { player.inventory.mainInventory[player.inventory.currentItem] = null; } return true; } } if (this.crop == null) { return false; } else { return this.crop.rightclick(this, player); } } public boolean applyBaseSeed(EntityPlayer player) { ItemStack current = player.getCurrentEquippedItem(); BaseSeed seed = Crops.instance.getBaseSeed(current); if (seed != null) { if (current.stackSize seed.stackSize) { return false; } if (this.tryPlantIn(seed.crop, seed.size, seed.statGrowth, seed.statGain, seed.statResistance, 1)) { if (player.capabilities.isCreativeMode) { return true; } if (current.getItem().hasContainerItem(current)) { if (current.stackSize 1) { return false; } player.inventory.mainInventory[player.inventory.currentItem] = current.getItem().getContainerItem(current); } else { current.stackSize -= seed.stackSize; if (current.stackSize = 0) { player.inventory.mainInventory[player.inventory.currentItem] = null; } } return true; } } return false; } public boolean tryPlantIn(CropCard crop, int si, int statGr, int statGa, int statRe, int scan) { if (crop != null crop != IC2Crops.weed !this.upgraded) { if (!crop.canGrow(this)) { return false; } else { this.reset(); this.crop = crop; this.size = (byte)si; this.statGrowth = (byte)statGr; this.statGain = (byte)statGa; this.statResistance = (byte)statRe; this.scanLevel = (byte)scan; return true; } } else { return false; } } public boolean applyFertilizer(boolean manual) { if (this.nutrientStorage = 100) { return false; } else { this.nutrientStorage += manual ? 100 90; return true; } } public boolean applyHydration(TileEntityCropmatron cropmatron) { if (this.waterStorage = 200) { return false; } else { int apply = 200 - this.waterStorage; FluidStack drain = cropmatron.getFluidTank().drain(apply, true); if (drain != null) { this.waterStorage += drain.amount; return true; } else { return false; } } } public boolean applyHydration(boolean manual, ItemStack itemStack, EntityPlayer player) { if ((manual || this.waterStorage 180) this.waterStorage 200) { int apply = manual ? 200 - this.waterStorage 180 - this.waterStorage; apply = Math.min(apply, itemStack.getMaxDamage() - itemStack.getItemDamage()); if (!player.capabilities.isCreativeMode itemStack.attemptDamageItem(apply, IC2.random)) { player.inventory.mainInventory[player.inventory.currentItem] = Ic2Items.cell; } this.waterStorage += apply; return true; } else { return false; } } public boolean applyWeedEx(boolean manual) { if ((this.exStorage 100 || !manual) this.exStorage 150) { this.exStorage += 50; boolean triggerDecline; if (manual) { triggerDecline = this.worldObj.rand.nextInt(5) == 0; } else { triggerDecline = this.worldObj.rand.nextInt(3) == 0; } if (this.crop != null this.crop.isWeed(this) this.exStorage = 75 triggerDecline) { switch(this.worldObj.rand.nextInt(5)) { case 0 if (this.statGrowth 0) { --this.statGrowth; } case 1 if (this.statGain 0) { --this.statGain; } default if (this.statResistance 0) { --this.statResistance; } } } return true; } else { return false; } } public ItemStack[] harvest_automated(boolean optimal) { if (this.crop == null) { return null; } else if (!this.crop.canBeHarvested(this)) { return null; } else if (optimal this.size != this.crop.getOptimalHavestSize(this)) { return null; } else { double chance = (double)this.crop.dropGainChance(); chance *= Math.pow(1.03D, (double)this.statGain); int dropCount = (int)Math.max(0L, Math.round(IC2.random.nextGaussian() * chance * 0.6827D + chance)); ItemStack[] ret = new ItemStack[dropCount]; for(int i = 0; i dropCount; ++i) { ret[i] = this.crop.getGain(this); if (ret[i] != null IC2.random.nextInt(100) = this.statGain) { ++ret[i].stackSize; } } this.size = this.crop.getSizeAfterHarvest(this); this.dirty = true; return ret; } } public boolean harvest(boolean manual) { ItemStack[] drops = this.harvest_automated(false); if (drops == null) { return false; } else { if (IC2.platform.isSimulating() drops.length 0) { ItemStack[] var3 = drops; int var4 = drops.length; for(int var5 = 0; var5 var4; ++var5) { ItemStack drop = var3[var5]; StackUtil.dropAsEntity(this.worldObj, this.xCoord, this.yCoord, this.zCoord, drop); } } return true; } } public void onNeighbourChange() { if (this.crop != null) { this.crop.onNeighbourChange(this); } } public int emitRedstone() { return this.crop == null ? 0 this.crop.emitRedstone(this); } public void onBlockDestroyed() { if (this.crop != null) { this.crop.onBlockDestroyed(this); } } public int getEmittedLight() { return this.crop == null ? 0 this.crop.getEmittedLight(this); } public byte getHumidity() { if (this.humidity == -1) { this.humidity = this.updateHumidity(); } return this.humidity; } public byte getNutrients() { if (this.nutrients == -1) { this.nutrients = this.updateNutrients(); } return this.nutrients; } public byte getAirQuality() { if (this.airQuality == -1) { this.airQuality = this.updateAirQuality(); } return this.airQuality; } public byte updateHumidity() { int value = Crops.instance.getHumidityBiomeBonus(this.worldObj.getBiomeGenForCoords(this.xCoord, this.zCoord)); if (this.worldObj.getBlockMetadata(this.xCoord, this.yCoord - 1, this.zCoord) = 7) { value += 2; } if (this.waterStorage = 5) { value += 2; } value += (this.waterStorage + 24) / 25; return (byte)value; } public byte updateNutrients() { int value = Crops.instance.getNutrientBiomeBonus(this.worldObj.getBiomeGenForCoords(this.xCoord, this.zCoord)); for(int i = 2; i 5 this.worldObj.getBlock(this.xCoord, this.yCoord - i, this.zCoord) == Blocks.dirt; ++i) { ++value; } value += (this.nutrientStorage + 19) / 20; return (byte)value; } public byte updateAirQuality() { int value = 0; int height = (this.yCoord - 64) / 15; if (height 4) { height = 4; } if (height 0) { height = 0; } int value = value + height; int fresh = 9; for(int x = this.xCoord - 1; x = this.xCoord + 1 fresh 0; ++x) { for(int z = this.zCoord - 1; z = this.zCoord + 1 fresh 0; ++z) { if (this.worldObj.isBlockNormalCubeDefault(x, this.yCoord, z, false) || this.worldObj.getTileEntity(x, this.yCoord, z) instanceof TileEntityCrop) { --fresh; } } } value += fresh / 2; if (this.worldObj.canBlockSeeTheSky(this.xCoord, this.yCoord + 1, this.zCoord)) { value += 2; } return (byte)value; } public int updateMultiCulture() { Set crops = new HashSet(); for(int x = -1; x 1; ++x) { for(int z = -1; z 1; ++z) { TileEntity te = this.worldObj.getTileEntity(x + this.xCoord, this.yCoord, z + this.zCoord); if (te instanceof TileEntityCrop) { CropCard neighborCrop = ((TileEntityCrop)te).getCrop(); if (neighborCrop != null) { crops.add(neighborCrop); } } } } return crops.size() - 1; } public void addIfNotPresent(CropCard crop, LinkedList crops) { for(int i = 0; i crops.size(); ++i) { if (crop == crops.get(i)) { return; } } crops.add(crop); } public int calcGrowthRate() { if (this.crop == null) { return 0; } else { int base = 3 + IC2.random.nextInt(7) + this.statGrowth; int need = (this.crop.tier() - 1) * 4 + this.statGrowth + this.statGain + this.statResistance; if (need 0) { need = 0; } int have = this.crop.weightInfluences(this, (float)this.getHumidity(), (float)this.getNutrients(), (float)this.getAirQuality()) * 5; if (have = need) { base = base * (100 + (have - need)) / 100; } else { int neg = (need - have) * 4; if (neg 100 IC2.random.nextInt(32) this.statResistance) { this.reset(); base = 0; } else { base = base * (100 - neg) / 100; if (base 0) { base = 0; } } } return base; } } public void calcTrampling() { if (IC2.platform.isSimulating()) { if (IC2.random.nextInt(100) == 0 IC2.random.nextInt(40) this.statResistance) { this.reset(); this.worldObj.setBlock(this.xCoord, this.yCoord - 1, this.zCoord, Blocks.dirt, 0, 7); } } } public void onEntityCollision(Entity entity) { if (this.crop != null) { if (this.crop.onEntityCollision(this, entity)) { this.calcTrampling(); } } } public void reset() { this.crop = null; this.size = 0; this.customData = new NBTTagCompound(); this.dirty = true; this.statGain = 0; this.statResistance = 0; this.statGrowth = 0; this.nutrients = -1; this.airQuality = -1; this.humidity = -1; this.growthPoints = 0; this.upgraded = false; this.scanLevel = 0; } public void updateState() { this.dirty = true; } public String getScanned() { if (this.crop == null) { return null; } else if (this.scanLevel = 0) { return null; } else { String name = StatCollector.translateToLocal(this.crop.displayName()); return this.scanLevel = 4 ? String.format( %s - Gr %d Ga %d Re %d S %d/%d , name, this.statGrowth, this.statGain, this.statResistance, this.size, this.crop.maxSize()) String.format( %s - Size %d/%d , name, this.size, this.crop.maxSize()); } } public boolean isBlockBelow(Block reqBlock) { if (this.crop == null) { return false; } else { for(int i = 1; i this.crop.getrootslength(this); ++i) { Block block = this.worldObj.getBlock(this.xCoord, this.yCoord - i, this.zCoord); if (block.isAir(this.worldObj, this.xCoord, this.yCoord - i, this.zCoord)) { return false; } if (block == reqBlock) { return true; } } return false; } } public boolean isBlockBelow(String oreDictionaryName) { if (this.crop == null) { return false; } else { for(int i = 1; i this.crop.getrootslength(this); ++i) { Block block = this.worldObj.getBlock(this.xCoord, this.yCoord - i, this.zCoord); int metaData = this.worldObj.getBlockMetadata(this.xCoord, this.yCoord - i, this.zCoord); if (block.isAir(this.worldObj, this.xCoord, this.yCoord - i, this.zCoord)) { return false; } for(int aux = 0; aux OreDictionary.getOres(oreDictionaryName).size(); ++aux) { ItemStack itemStack = (ItemStack)OreDictionary.getOres(oreDictionaryName).get(aux); if (itemStack.getItem() == Item.getItemFromBlock(block) itemStack.getItemDamage() == metaData) { return true; } } } return false; } } public ItemStack generateSeeds(CropCard crop, byte growth, byte gain, byte resis, byte scan) { return ItemCropSeed.generateItemStackFromValues(crop, growth, gain, resis, scan); } public ItemStack generateSeeds(short plant, byte growth, byte gain, byte resis, byte scan) { return this.generateSeeds(IC2Crops.getCropFromId(plant), growth, gain, resis, scan); } public void onNetworkUpdate(String field) { this.dirty = true; } public CropCard getCrop() { return this.crop; } public short getID() { return (short)Crops.instance.getIdFor(this.crop); } public byte getSize() { return (byte)this.size; } public byte getGrowth() { return (byte)this.statGrowth; } public byte getGain() { return (byte)this.statGain; } public byte getResistance() { return (byte)this.statResistance; } public byte getScanLevel() { return (byte)this.scanLevel; } public NBTTagCompound getCustomData() { return this.customData; } public int getNutrientStorage() { return this.nutrientStorage; } public int getHydrationStorage() { return this.waterStorage; } public int getWeedExStorage() { return this.exStorage; } public int getLightLevel() { return this.worldObj.getBlockLightValue(this.xCoord, this.yCoord, this.zCoord); } public void setCrop(CropCard cropCard) { this.crop = cropCard; this.dirty = true; } public void setID(short id) { this.setCrop(IC2Crops.getCropFromId(id)); } public void setSize(byte size1) { this.size = size1; this.dirty = true; } public void setGrowth(byte growth) { this.statGrowth = growth; } public void setGain(byte gain) { this.statGain = gain; } public void setResistance(byte resistance) { this.statResistance = resistance; } public void setScanLevel(byte scanLevel1) { this.scanLevel = scanLevel1; } public void setNutrientStorage(int nutrientStorage1) { this.nutrientStorage = nutrientStorage1; } public void setHydrationStorage(int hydrationStorage) { this.waterStorage = hydrationStorage; } public void setWeedExStorage(int weedExStorage) { this.exStorage = weedExStorage; } public World getWorld() { return this.worldObj; } public ChunkCoordinates getLocation() { return new ChunkCoordinates(this.xCoord, this.yCoord, this.zCoord); } public int getvisualweedlevel() { return this.weedlevel; } public int getvisualInfestedlevel() { if (this.Infestedlevel 10) { return 0; } else if (this.Infestedlevel 30) { return 1; } else if (this.Infestedlevel 50) { return 2; } else if (this.Infestedlevel 70) { return 3; } else { return this.Infestedlevel 90 ? 4 5; } } }