¼¢»ÄʵÓÃÐ޸ļ¼ÇÉ(--¸üÐÂ)
Ò×Äþ£º¼¢»ÄÓÎϷʵÓÃÐ޸ļ¼ÇÉ
8ÔÂ18ÈÕ¸üУºÓ¦¡°dkvup¡±ÒªÇóÔö¼Ó¡°Ê®Ò».¿³Ê÷ÎÞÊ÷×®¡±£¬Ó¦¡°‰ô¬w†YœÒÄܘUÒŠ¡±ÒªÇóÔö¼Ó¡°ÆßÊ®.ÖíÈËÓÀ¾Ã¸úËæ¡±£¬Ôö¼Ó¡°°ËÊ®.×°±¸²¶ÄñÆ÷¿ÉÎüÄñ£¨Ëü¾ø²»º±ÓУ¬Íù½ÖÀïÈÆ¹ýÒ»ÖÜ£¬Ëü±ã»¯ÎÚÓУ©¡± Ë÷Òý£º
Ò».Ìá¸ßÖ÷½ÇѪÁ¿10±¶ ¶þ.Ö÷½Ç×Ô¶¯»ØÑª
Èý.Ö÷½Ç×Ô¶¯²¹ÄÔ£¨ÂèÂèÔÙÒ²²»Óõ£ÐÄÎÒµÄѧϰ£© ËÄ.Ìá¸ßÖ÷½Ç¹¥»÷Á¦ Îå.Ö÷½ÇÅܵøü¿ì
Áù.È«ÈËÎï²»ÓûúÆ÷¾Í¿ÉÔìÈ«²¿ÎïÆ·£¨Ö»Ö§³Ö18°æ¼°ÒÔºó°æ±¾£© Æß.¸´»îʯÎÞÏÞʹÓã¨Ö÷½ÇÓÀÉú£©
°Ë.±³ÖíÆ¤°ü¡¢´©´óÀíʯ¿ø¼×ÐÐ×ßËٶȲ»¼õÂý ¾Å.Ìá¸ßÄÃÊÖÕÈÐÐ×ßËÙ¶È
Ê®.Ò»¸«¿³µ¹Ò»¿ÃÊ÷¡¢Ò»¸ä¿ªµôÒ»¿éʯ ʮһ.¿³Ê÷ÎÞÊ÷×® Ê®¶þ.Ò»´Î²É¼¯Îå¸ö Ê®Èý.¼Ó¿ì²É¼¯ËÙ¶È Ê®ËÄ.ÑÓ»º¶³¡¢¶öËÀÍöʱ¼ä Ê®Îå.Ôö¼ÓʳÎï¼°ÁÏÀí²¹ÑªÁ¿10±¶
Ê®Áù.¶ö¼±Á˲ݸùÊ÷è¾Ò²Äܳԣ¨²¹¼¢¶ö£¬µ«ÉËѪºÍÄÔ£© Ê®Æß.½¨ÔìÈâ¿éµñÏñ²»·£Ñª£¨Õý³£Òª´ÓѪµÄÉÏÏÞ¼õ30£© Ê®°Ë.µØ°åÒ»´ÎÔì4¸ö Ê®¾Å.¼Ó´óµ¥¸ñ¶ÑµþÊýÁ¿
¶þÊ®.ͬʱЯ´ø¶à¸ö±³°ü£¨±³°ü¿É¿â´æ£©
¶þʮһ.ÖÆÔ쿲ÆÕ˹±³°ü£¨18°æ¼°ÒÔºóÓÎϷʹÓã© ¶þÊ®¶þ.ÎäÆ÷É˺¦Öµ¼Ó´ó
¶þÊ®Èý.ÐÞ¸ÄħÕÈÉ˺¦Öµ£¨Ä§ÕÈÒ»»÷±ØÉ±£© ¶þÊ®ËÄ.ÐÞ¸Ä×°±¸Ê¹ÓôÎÊý¼°Ê±¼ä
¶þÊ®Îå.¿ø¼×ÔھͲ»µôѪ£¨¿ø¼×100%ÎüÊÕÉ˺¦Öµ£© ¶þÊ®Áù.Ìá¸ß¿ø¼×Ä;ÃÁ¦
¶þÊ®Æß.¿ø¼×²»Óþ¡£¨Óõ½Ê£0%²»Ïûʧ£¬¿É¼ÌÐøÓã© ¶þÊ®°Ë.»ð¾æ²»Óþ¡£¨Óõ½Ê£0%²»Ïûʧ£¬¿É¼ÌÐøÓã© ¶þÊ®¾Å.¿ó¹¤µÆÎÞÏÞʹÓà ÈýÊ®.ÌáµÆ¿ÉÒÔµã50Ìì
Èýʮһ.ÄϹϵÆÓÀ²»»µ£¨ÎÞÏÞʹÓã©
ÈýÊ®¶þ.ʯͷӪ»ðÓÀ²»Ã𣨱£Áô×îС³¤Ã÷»ð£©
ÈýÊ®Èý.ÓòÝÖÖ¸öС̫Ñô£¨ºÚÒ¹±ä°×Ö磬¿ÉÉÕ¿¾Ê³ÎÊÊÓÃ18°æ£©
ÈýÊ®ËÄ.¹ø¿ÉËæÉíЯ´ø
ÈýÊ®Îå.±£ÎÂʯ±£ÎÂʱ¼äÑÓ³¤1±¶ ÈýÊ®Áù.ħÕÈ¡¢»¤Éí·ûÎÞÏÞʹÓÃ
ÈýÊ®Æß.³ÈÉ«»¤Éí·ûÎüÈ¡ÎïÆ·¼ÓËÙ¡¢·¶Î§¼Ó´ó£¬²»ÎüÏÝÚå ÈýÊ®°Ë.ÑÀ³ÝÏÝÚå×Ô¶¯ÖØÖã¨1ÃëºóÖØÖã© ÈýÊ®¾Å.«δµ³ö´ßÃßÇú ËÄÊ®.×°±¸ÖíÆ¤°üÄܲ¹ÄÔ
ËÄʮһ.È«ÈËÎï¿ÉÖÆÔì´ò»ð»ú£¨ÔÀ´Ö»ÓÐÞ±ÂåרÓã©
ËÄÊ®¶þ.È«ÈËÎï¿ÉÖÆÔìÎéµÏµÄ¸«×Ó£¨8Ï¿³µ¹1¿ÃÊ÷£¬ÆÕͨ¸«×Ó15Ï£© ËÄÊ®Èý.È«ÈËÎï¿ÉÖÆÔìħ·¨Êé ËÄÊ®ËÄ.ÑÓ³¤±ùÏä±£ÏÊʱ¼ä ËÄÊ®Îå.±³°ü¿ÉÀä²ØÊ³Æ· ËÄÊ®Áù.ÖÖ×Ó¸¯ÀñäÂý
ËÄÊ®Æß.´©Ç½Êõ£¨¶¼È¦ÆðÀ´°É£¬²»ÐèÒªÁôÃÅÁË£© ËÄÊ®°Ë.Ôö¼ÓǽµÄÄ;ÃÁ¦
ËÄÊ®¾Å.ǽ±ÚÓÀ¹Ì£¨×Ô¼º¿ÉÔÒ£¬¹ÖÎïÎÞ·¨ÆÆ»µ£©
ÎåÊ®.ÈÃÓÎÏ·ÖеÄÒ»Ìì¸üÂþ³¤£¨1Ìì´ÓÕæÊµÊÀ½çµÄ8·ÖÖÓÐÞ¸ÄΪ16·ÖÖÓ£© Îåʮһ.Ð޸İ×Ìì¡¢°øÍí¡¢ºÚÒ¹Õ¼Ò»ÌìµÄ±ÈÀý ÎåÊ®¶þ.µØÍ¼È«¿ª£¨ÓÎÏ·Öа´Ctrl +1£©
ÎåÊ®Èý.Ëõ¶Ì²Ý¡¢Ê÷辡¢Â«Î¡¢¶´Ñ¨»¨³¤³öʱ¼ä ÎåÊ®ËÄ.Öֲݲ»ÓÃÊ©·Ê
ÎåÊ®Îå.ÓëÎÖÖֲ«Σ¨·ÖÖêÖÖÖ²£© ÎåÊ®Áù.ÓÃľͷ¡¢Ä¾Ì¿
¡¢»ÒÖÖֲʯ¿ó£¨¿É³ÖÐø·¢Õ¹£© ÎåÊ®Æß.²É¿óʱ50%¸ÅÂÊÍÚ³ö±¦Ê¯ ÎåÊ®°Ë.ÿ¶ä»¨Ï¶¼ÓÐÂüµÂÀ²Ý ÎåÊ®¾Å.»¨°êÖÖ»¨£¨»¨¿ÉÒÆÖ²£©
ÁùÊ®.ÉúÃüºÅ½Ç£¨´µÅ£½ÇÈÃÅ©Ìï¡¢Ê÷辸ù¡¢²Ý¸ù¡¢Â«Î¸ù¡¢¿Õ¹ûÊ÷´ÔѸËÙ³¤³ö£© Áùʮһ.Éñ֮죨ì¹¥»÷ʱÕÙ»½ÉÁµç£© ÁùÊ®¶þ.×°±¸»ØÐýïÚÕÙ»½»ð¼¦£¨´òÁÔÓÎÏ·£© ÁùÊ®Èý.È®ÑÀ·ÉïÚ£¨×°±¸È®ÑÀ£¬Ò»ÕÐÖÆµÐ£©
ÁùÊ®ËÄ.ÖÖ¸¯ÀÃʳÎïµÃ¸ßÄñ£¬¸ßÄñÎÞ¹¥»÷ÐÐΪ¡¢Ï¸ßÄñµ°
ÁùÊ®Îå.ÇàÄê¸ßÄñ²»³¤´ó£¬²¢Ôö¼ÓѪÁ¿¼°¹¥»÷Á¦£¬Î¹Ê³¿ÉÖØÐÂÈÏÈË ÁùÊ®Áù.ι×ÔÑø¸ßÄñ²ú±ã±ã
ÁùÊ®Æß.×ÔÑø¸ßÄñ²»ÓÃιʳ£¨²»ÒªÓëι×ÔÑø¸ßÄñ²ú±ã±ãͬʱÐ޸ģ© ÁùÊ®°Ë.ÑÀ³ÝÏÝÚå²»É˺¦×ÔÑø¸ßÄñ ÁùÊ®¾Å.Ö÷½Ç´øÈâ²»±»ÍÃÈ˹¥»÷ ÆßÊ®.ÖíÈËÓÀ¾Ã¸úËæ Æßʮһ.ιÄñ·èÈâµÃ±¦Ê¯ ÆßÊ®¶þ.Å©ÌïÊÕ»ñ¸ü¶à²úÆ· ÆßÊ®Èý.Å©×÷Îï1Ã볤³öÀ´
ÆßÊ®ËÄ.ÁÀÈâÎÞÐèµÈ´ý£¨½«Èâ·ÅÔÚÁÀÈâ¼ÜÉϼ´¸É£© ÆßÊ®Îå.ÖóÒ»¹øÊÕ¶à¸öÁÏÀí ÆßÊ®Áù.Ëõ¶ÌÖóÁÏÀíʱ¼ä ÆßÊ®Æß.Ëõ¶ÌµöÓãʱ¼ä ÆßÊ®°Ë.ÊÕ»ñ·äÏä²»±»ÕÝ
ÆßÊ®¾Å.¿ÕÊÖ×¥Ã۷䡢ɱÈË·ä¡¢ºûµû¡¢Ó©»ð³æ£¨ÓóÈÉ«»¤Éí·û¿ÉÒÔ¿ìËÙÎüÈ¡£© °ËÊ®.×°±¸²¶ÄñÆ÷¿ÉÎüÄñ£¨Ëü¾ø²»º±ÓУ¬Íù½ÖÀïÈÆ¹ýÒ»ÖÜ£¬Ëü±ã»¯ÎÚÓУ© °Ëʮһ.°×ÌìÒ²ÄÜ˯ÕÊÅñ£¬Ë¯ÕÊÅñ²»¼õ¼¢¶ö °ËÊ®¶þ.Óø¯ÀÃʳÎïÖÖ³ö³ØÌÁ °ËÊ®Èý.Óòù×ÓÍÚµô³ØÌÁ
°ËÊ®ËÄ.³ýµôÈ«²¿Æó¶ì¼°Æó¶ì±ù£¨ÊÀ½ç´Ó´ËÇå¾²ÁË£© °ËÊ®Îå.ÑÓ³¤È¼ÁÏȼÉÕʱ¼ä °ËÊ®Áù.ʹ²»ÄܶѵþµÄÎïÆ·¿É¶Ñµþ °ËÊ®Æß.ʹ²»¿ÉȼÎïÆ·¿É×÷ȼÁÏ °ËÊ®°Ë.ÈÃÎïÆ·²»¸¯»µ °ËÊ®¾Å.ÐÞ¸ÄÖÆ×÷µÀ¾ßµÄÅä·½
Ò».Ìá¸ßÖ÷½ÇѪÁ¿10±¶
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º
local wilson_health = 150 WX78_MIN_HEALTH = 100, WX78_MAX_HEALTH = 400, WOLFGANG_HEALTH_MIGHTY = 300, WOLFGANG_HEALTH_NORMAL = 200, WOLFGANG_HEALTH_WIMPY = 150, ÐÞ¸ÄΪ£º
local wilson_health = 1500 WX78_MIN_HEALTH = 1000, WX78_MAX_HEALTH = 4000, WOLFGANG_HEALTH_MIGHTY = 3000, WOLFGANG_HEALTH_NORMAL = 2000, WOLFGANG_HEALTH_WIMPY = 1500,
¼´¿ÉÈÃÈ«²¿Ö÷½ÇѪÁ¿Ìá¸ß10±¶£¬ÐÞ¸ÄÕâÀïҲʹ¿ø¼×µÄÄ;öÈͬ²½ÉÏÉý10±¶
¶þ.Ö÷½Ç×Ô¶¯»ØÑª
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\player_common.lua
inst.components.health:StartRegen(30, 10)
¼´¿ÉÈÃÖ÷½Ç×Ô¶¯»ØÑª£¬ÆäÖÐ30ΪѪÁ¿£¬10Ϊ10Ãë»ØÑªÒ»´Î£¬¿É×ÔÐе÷Õû
Èý.Ö÷½Ç×Ô¶¯²¹ÄÔ£¨ÂèÂèÔÙÒ²²»Óõ£ÐÄÎÒµÄѧϰ£©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«SANITY_DAY_GAIN = 0,--100/(day_time*32),ÐÞ¸ÄΪSANITY_DAY_GAIN = 100/(day_time),¼´¿ÉÒ»¸ö°×Ìì²¹100µã¾«ÉñÖµ
ËÄ.Ìá¸ßÖ÷½Ç
¹¥»÷Á¦
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«local wilson_attack = 34ÐÞ¸ÄΪlocal wilson_attack = 500¼´¿É
Îå.Ö÷½ÇÅܵøü¿ì
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º
WILSON_WALK_SPEED = 4, WILSON_RUN_SPEED = 6, ÐÞ¸ÄΪ£º
WILSON_WALK_SPEED = 8, WILSON_RUN_SPEED = 12,
¼´¿ÉÈÃÖ÷½ÇÅܲ½ËÙ¶ÈÔö¼Ó1±¶
Îļþ£¬ÔÚ
inst.components.health:SetMaxHealth(TUNING.WILSON_HEALTH)µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
Áù.È«ÈËÎï²»ÓûúÆ÷¾Í¿ÉÔìÈ«²¿ÎïÆ·£¨Ö»Ö§³Ö18°æ¼°ÒÔºó°æ±¾£©
1.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\player_common.luainst:AddComponent("builder")ÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
inst.components.builder.science_bonus = 3 inst.components.builder.magic_bonus = 3 inst.components.builder.ancient_bonus = 3
2.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\wickerbottom.lua
¼´¿ÉÈ«ÈËÎï²»ÓûúÆ÷¾Í¿ÉÔìÈ«²¿ÎïÆ·
Æß.¸´»îʯÎÞÏÞʹÓã¨Ö÷½ÇÓÀÉú£©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\resurrectionstone.luaÎļþ£¬ÔÚinst:Remove()µÄÏÂÒ»ÐвåÈëÏÂÁÐÄÚÈÝ£º
SpawnPrefab("resurrectionstone").Transform:SetPosition(inst.Transform:GetWorldPosition())
Ö÷½Ç¸´»îºó£¬ÔÙµãÉíϵĸ´»îʯ£¬¿Éʹ¸´»îʯÔÙ´ÎÍêÕû
°Ë.±³ÖíÆ¤°ü¡¢´©´óÀíʯ¿ø¼×ÐÐ×ßËٶȲ»¼õÂý
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º
PIGGYBACK_SPEED_MULT = 0.8, ARMORMARBLE_SLOW = 0.7, ÐÞ¸ÄΪ£º
PIGGYBACK_SPEED_MULT = 1, ARMORMARBLE_SLOW = 1,
Îļþ£¬½«
inst.components.builder.science_bonus = 1Ìæ»»Îª--inst.components.builder.science_bonus = 1
Îļþ£¬ÔÚ
¾Å.Ìá¸ßÄÃÊÖÕÈÐÐ×ßËÙ¶È
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«CANE_SPEED_MULT = 1.25,ÐÞ¸ÄΪCANE_SPEED_MULT = 2.5,¼´¿É
Ê®.Ò»¸«¿³µ¹Ò»¿ÃÊ÷¡¢Ò»¸ä¿ªµôÒ»¿éʯ
1.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\axe.luainst.components.tool:SetAction(ACTIONS.CHOP)Ìæ»»ÎªÒÔÏÂÄÚÈÝ£º
inst.components.tool:SetAction(ACTIONS.CHOP, 15)
2.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«ÏÂÁÐÄÚÈÝ£º
ROCKS_MINE = 6, MARBLEPILLAR_MINE = 10, MARBLETREE_MINE = 8, ÐÞ¸ÄΪ£º ROCKS_MINE = 1, MARBLEPILLAR_MINE = 1, MARBLETREE_MINE = 1,
¼´¿ÉÒ»¸«¿³µ¹Ò»¿ÃÊ÷¡¢Ò»¸ä¿ªµôÒ»¿éʯ
ʮһ.¿³Ê÷ÎÞÊ÷×®
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\evergreens.luainst.AnimState:PushAnimation(inst.anims.stump)µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
inst:Remove()
¼´¿É¿³Ê÷ÎÞÊ÷×®
Ê®¶þ.Ò»´Î²É¼¯Îå¸ö
Îļþ£¬Îļþ£¬½«
ÔÚ
È«²¿²É¼¯Æ·Ò»´Î²É¼¯Îå¸ö£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\components\\pickable.luaÎļþ£¬½«self.numtoharvest = number or 1ÐÞ¸ÄΪself.numtoharvest = 5¼´¿É
Ò²¿Éµ¥¶ÀÐÞ¸ÄijÏîÎïÆ·
Ò»´Î²É¼¯Îå¸ö£º
1.²Ý£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\grass.lua
Îļþ£¬½«
inst.components.pickable:SetUp("cutgrass", TUNING.GRASS_REGROW_TIME)Ìæ»»Îªinst.components.pickable:SetUp("cutgrass", TUNING.GRASS_REGROW_TIME, 5)
2.Ê÷è¾£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\sapling.lua
Îļþ£¬½«
inst.components.pickable:SetUp("twigs", TUNING.SAPLING_REGROW_TIME)Ìæ»»Îªinst.components.pickable:SetUp("twigs", TUNING.SAPLING_REGROW_TIME, 5)
3.Ä¢¹½£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\mushrooms.luaÎļþ£¬½«inst.components.pickable:SetUp(data.pickloot, inst.components.pickable:SetUp(data.pickloot, nil, 5)
4.ºúÂܲ·£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\carrot.luainst.components.pickable:SetUp("carrot", inst.components.pickable:SetUp("carrot", 10, 5)
5.«ΣºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\reeds.lua
Îļþ£¬½«
inst.components.pickable:SetUp("cutreeds", TUNING.REEDS_REGROW_TIME)Ìæ»»Îªinst.components.pickable:SetUp("cutreeds", TUNING.REEDS_REGROW_TIME, 5)
6.½¬¹û£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\berrybush.lua
Îļþ£¬½«
inst.components.pickable:SetUp("berries", TUNING.BERRY_REGROW_TIME)Ìæ»»Îªinst.components.pickable:SetUp("berries", TUNING.BERRY_REGROW_TIME, 5)
7.»¨£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\flower.luainst.components.pickable:SetUp("petals", inst.components.pickable:SetUp("petals", 10, 5)
8.¶ñħ»¨£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\flower_evil.luaÎļþ£¬½«inst.components.pickable:SetUp("petals_evil", inst.components.pickable:SetUp("petals_evil", 10, 5)
9.¶´Ñ¨»¨£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\flower_evil.luaÎļþ£¬½«inst.components.pickable:SetUp("lightbulb", TUNING.FLOWER_CAVE_REGROW_TIME)Ìæ
10)
Ìæ
»»
Ϊ
10)
Ìæ
Îļþ£¬½«»»
Ϊ
10)
Ìæ
Îļþ£¬½«»»
Ϊ
nil)
Ìæ
»»
Ϊ
»»
Ϊinst.components.pickable:SetUp("lightbulb",
TUNING.FLOWER_CAVE_REGROW_TIME, 5)
10.Ïã½¶£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\flower_evil.luaÎļþ£¬½«inst.components.pickable:SetUp("cave_banana", TUNING.CAVE_BANANA_GROW_TIME)Ìæ
11.Þ§ÀࣺÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\cave_fern.luaÎļþ£¬½«»»
Ϊ
inst.components.pickable:SetUp("cave_banana",
TUNING.CAVE_BANANA_GROW_TIME, 5)
inst.components.pickable:SetUp("foliage", 10)
Ìæ
»»
inst.components.pickable:SetUp("foliage", 10, 5)
12.ľ̿£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\evergreens.luaÎļþ£¬inst.components.lootdropper:SpawnLootPrefab("charcoal")Ìæ»»ÎªÏÂÁÐÄÚÈÝ£º
inst.components.lootdropper:SpawnLootPrefab("charcoal") inst.components.lootdropper:SpawnLootPrefab("charcoal") inst.components.lootdropper:SpawnLootPrefab("charcoal") inst.components.lootdropper:SpawnLootPrefab("charcoal") inst.components.lootdropper:SpawnLootPrefab("charcoal")
Ê®Èý.¼Ó¿ì²É¼¯ËÙ¶È
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\¿É²É¼¯ÎïÆ·.luaÎļþ£¬inst:AddComponent("pickable")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
inst.components.pickable.quickpick = true
¼´¿É¼Ó¿ì¿É²É¼¯Æ·²É¼¯ËÙ¶È
¿É²É¼¯ÎïÆ·£º
berrybush.lua ½¬¹û¹àľ´Ô cave_banana_tree.lua ¶´Ñ¨Ïã½¶Ê÷ flower_cave.lua ¶´Ñ¨»¨
grass.lua ²Ý marsh_bush.lua
¼â´Ì¹àľ
Ϊ
½«ÔÚ
reeds.lua «Πsapling.lua
Ê®ËÄ.ÑÓ»º¶³¡¢¶öËÀÍöʱ¼ä
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º
FREEZING_KILL_TIME = 120, STARVE_KILL_TIME = 120, ÐÞ¸ÄΪ£º
FREEZING_KILL_TIME = 1200, STARVE_KILL_TIME = 1200,
¼´¿ÉÑÓ»º¶³¡¢¶öËÀÍöʱ¼ä10±¶
Ê®Îå.Ôö¼ÓʳÎï¼°ÁÏÀí²¹ÑªÁ¿10±¶
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º
HEALING_TINY = 1, HEALING_SMALL = 3, HEALING_MEDSMALL = 8, HEALING_MED = 20, HEALING_MEDLARGE = 30, HEALING_LARGE = 40, HEALING_HUGE = 60, HEALING_SUPERHUGE = 100, ÐÞ¸ÄΪ£º
HEALING_TINY = 10, HEALING_SMALL = 30, HEALING_MEDSMALL = 80, HEALING_MED = 200, HEALING_MEDLARGE = 300, HEALING_LARGE = 400, HEALING_HUGE = 600, HEALING_SUPERHUGE = 1000,
Ê÷Ãç
tallbirdnest.lua ¸ßÄñ³²
¼´¿ÉÔö¼ÓʳÎï¼°ÁÏÀí²¹ÑªÁ¿10±¶
Ê®Áù.¶ö¼±Á˲ݸùÊ÷è¾Ò²Äܳԣ¨²¹¼¢¶ö£¬µ«ÉËѪºÍÄÔ£©
1.²ÝÄܳԣºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\cutgrass.luaÎļþ£¬ÔÚinst:AddComponent("inspectable")µÄÏÂÒ»ÐвåÈëÏÂÁÐÄÚÈÝ£º
inst:AddComponent("edible")
inst.components.edible.foodtype = "VEGGIE" inst.components.edible.healthvalue = -TUNING.HEALING_TINY*.5 inst.components.edible.hungervalue = TUNING.CALORIES_SMALL inst.components.edible.sanityvalue = -TUNING.SANITY_TINY
2.Ê÷è¾ÄܳԣºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\cutgrass.luaÎļþ£¬ÔÚinst:AddComponent("inspectable")µÄÏÂÒ»ÐвåÈëÏÂÁÐÄÚÈÝ£º
inst:AddComponent("edible")
inst.components.edible.foodtype = "VEGGIE" inst.components.edible.healthvalue = -TUNING.HEALING_TINY*.5 inst.components.edible.hungervalue = TUNING.CALORIES_SMALL inst.components.edible.sanityvalue = -TUNING.SANITY_TINY
¼´¿ÉÈòݡ¢Ê÷è¾¶¼ÄܳÔ
Ê®Æß.½¨ÔìÈâ¿éµñÏñ²»·£Ñª£¨Õý³£Òª´ÓѪµÄÉÏÏÞ¼õ30£©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«EFFIGY_HEALTH_PENALTY = 30,ÐÞ¸ÄΪEFFIGY_HEALTH_PENALTY = 0,¼´¿É
Ê®°Ë.µØ°åÒ»´ÎÔì4¸ö
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\turfs.luaÎļþ£¬
1.ÔÚinst.data = dataµÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
inst:AddComponent("stackable")
inst.components.stackable.maxsize = TUNING.STACK_SIZE_MEDITEM inst.components.stackable.s
tacksize = data.stacksize
2.½«ÏÂÁÐÄÚÈÝ£º
{name="road", {name="rocky",
anim="road", anim="rocky", anim="forest", anim="marsh", anim="grass", anim="dirt",
tile=GROUND.ROAD},
tile=GROUND.ROCKY}, tile=GROUND.FOREST}, tile=GROUND.MARSH}, tile=GROUND.GRASS},
{name="forest", {name="marsh", {name="grass", {name="dirt",
{name="savanna", {name="woodfloor",
tile=GROUND.WOODFLOOR},
anim="savanna", tile=GROUND.SAVANNA}, tile=GROUND.DIRT},
anim="woodfloor",
tile=GROUND.CARPET}, tile=GROUND.CHECKER}, tile=GROUND.CAVE},
tile=GROUND.FUNGUS},
{name="carpetfloor", anim="carpet",
{name="cave",
{name="checkerfloor", anim="checker",
anim="cave", anim="fungus", anim="rock", anim="mud",
{name="fungus", {name="sinkhole", {name="underrock", {name="mud", ÐÞ¸ÄΪ£º
{name="road",
tile=GROUND.ROAD},
{name="rocky",
tile=GROUND.ROCKY},
anim="sinkhole", tile=GROUND.SINKHOLE},
tile=GROUND.UNDERROCK},
tile=GROUND.MUD},
anim="road",stacksize = 4, anim="rocky",stacksize = 4, anim="forest",stacksize = 4, anim="marsh",stacksize = 4, anim="grass",stacksize = 4,
{name="forest",
tile=GROUND.FOREST}, tile=GROUND.MARSH},
tile=GROUND.GRASS}, {name="marsh", {name="grass",
{name="savanna",
tile=GROUND.SAVANNA},
{name="dirt",
tile=GROUND.DIRT},
anim="savanna",stacksize = 4,
anim="dirt",stacksize = 4, anim="woodfloor",stacksize
=
4,
{name="woodfloor",
tile=GROUND.WOODFLOOR}, tile=GROUND.CARPET}, tile=GROUND.CHECKER},
anim="cave",stacksize = 4, anim="fungus",stacksize = 4,
=
4,
{name="carpetfloor", anim="carpet",stacksize = 4, {name="checkerfloor", anim="checker",stacksize = 4,
{name="cave",
tile=GROUND.CAVE}, tile=GROUND.FUNGUS},
{name="fungus", {name="sinkhole",
tile=GROUND.SINKHOLE}, {name="underrock",
tile=GROUND.UNDERROCK},
{name="mud",
tile=GROUND.MUD},
anim="sinkhole",stacksize
anim="rock",stacksize = 4, anim="mud",stacksize = 4,
¼´¿ÉÒ»´ÎÔì4¸öµØ°å£¬ÆäÖÐ4¿ÉÒÔÐÞ¸ÄΪСÓÚ20µÄÆäËûÊý×Ö
Ê®¾Å.¼Ó´óµ¥¸ñ¶ÑµþÊýÁ¿
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º STACK_SIZE_LARGEITEM = 10, STACK_SIZE_MEDITEM = 20, STACK_SIZE_SMALLITEM = 40, ÐÞ¸ÄΪ£º
STACK_SIZE_LARGEITEM = 20, STACK_SIZE_MEDITEM = 50, STACK_SIZE_SMALLITEM = 99,
¼´¿É¼Ó´óµ¥¸ñ¶ÑµþÊýÁ¿£¬Èç¹ûÄãÏë¶¼ÐÞ¸ÄΪ999Ò²¿ÉÒÔŶ
¶þÊ®.ͬʱЯ´ø¶à¸ö±³°ü£¨±³°ü¿É¿â´æ£©
1.ͬʱЯ´ø¶à¸öÆÕͨ±³°ü£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\backpack.luaÎļþ£¬½«inst.components.inventoryitem.cangoincontainer inst.components.inventoryitem.cangoincontainer = true
=
false
ÐÞ
¸Ä
Ϊ
2.ͬʱЯ´ø¶à¸öСÖí°ü£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\piggyback.luaÎļþ£¬½«inst.components.inventoryitem.cangoincontainer inst.components.inventoryitem.cangoincontainer = true
3.ͬʱЯ´ø¶à¸ö¿²ÆÕ˹±³°ü£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\krampus_sack.luaÎļþ£¬½«inst.components.inventoryitem.cangoincontainer = falseÐÞ¸ÄΪinst.components.inventoryitem.cangoincontainer = true
¼´¿ÉͬʱЯ´ø¶à¸ö±³°ü
¶þʮһ.ÖÆÔ쿲ÆÕ˹±³°ü£¨18°æ¼°ÒÔºóÓÎϷʹÓã©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\recipes.luaÎļþ£¬ÔÚRecipe("piggyback", {Ingredient("pigskin", 4), Ingredient("silk", 6), Ingredient("rope", 2)}, RECIPETABS.SURVIVAL, TECH.SCIENCE_TWO)µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
Recipe("krampus_sack",
¼´¿ÉÓÃ5¸ö²Ý¡¢5¸öÊ÷è¾ÖÆÔ쿲ÆÕ˹±³°ü
¶þÊ®¶þ.ÎäÆ÷É˺¦Öµ¼Ó´ó
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬²éÕÒÒÔÏÂÄÚÈÝ£º
UNARMED_DAMAGE = 10,
¿ÕÊÖ
NIGHTSWORD_DAMAGE = wilson_attack*2, °µÓ°½£ BATBAT_DAMAGE = wilson_attack * 1.25, òùòð°ô BATBAT_DRAIN = wilson_attack * 0.2, SPIKE_DAMAGE = wilson_attack*1.5, SPEAR_DAMAGE = wilson_attack, ì AXE_DAMAGE = wilson_attack*.8, ¸«Í· PICK_DAMAGE = wilson_attack*.8, ¸ä
¿Ý½ßòùòð°ô ÀÇÑÀ°ô
{Ingredient("cutgrass",
5),Ingredient("twigs", 5)}, RECIPETABS.SURVIVAL, TECH.NONE)
=
false
ÐÞ
¸Ä
Ϊ
HAMBAT_DAMAGE = wilson_attack, »ðÍȹ÷°ô
BOOMERANG_DAMAGE = wilson_attack*.8, »ØÐýïÚ TORCH_DAMAGE = wilson_attack*.5, SHOVEL_DAMAGE = wilson_attack*.5,
»ð¾æ ²ù×Ó
²Ý²æ
HAMMER_DAMAGE = wilson_attack*.5, ´¸ PITCHFORK_DAMAGE = wilson_attack*.5,
BUGNET_DAMAGE = wilson_attack*.125, ²¶³æÍø FISHINGROD_DAMAGE = wilson_attack*.125, Óã¸Ë UMBRELLA_DAMAGE = wilson_attack*.5, ÓêÉ¡ CANE_DAMAGE = wilson_attack*.5, ÊÖÕÈ BEAVER_DAMAGE = wilson_attack*1.5, º£Àê MULTITOOL_DAMAGE = wilson_attack*.9, PIPE_DART_DAMAGE = 100, ´µ¼ý TRAP_TEETH_DAMAGE = 60, ÑÀ³ÝÏÝÚå
¼Ó´óÿÐÐ×îºóµÄÊý×Ö£¬¼´¿ÉÔö´ó¸÷ÖÖÎäÆ÷µÄÉ˺¦Öµ£¬ÓÎÏ·ÖеÄÉ˺¦ÖµÊÇÄãÐ޸ĵÄÊý×Ö³Ë34£¨Ö÷½Ç¹¥»÷Á¦£©
¶þÊ®Èý.ÐÞ¸ÄħÕÈÉ˺¦Öµ£¨Ä§ÕÈÒ»»÷±ØÉ±£© ÓÃ
¼Ç
ÊÂ
±¾
´ò
¿ª
ÓÎ
Ï·
Ä¿
¼
\\data\\scripts\\prefabs\\staff.lua
ÐÞ
¸Ä
ÎÄ
¼þ
£¬
½«Îª
inst.components.weapon:SetDamage(0)inst.components.weapon:SetDamage(0)ÒªÐÞ¸Ä
¶þÊ®ËÄ.ÐÞ¸Ä×°±¸Ê¹ÓôÎÊý¼°Ê±¼ä
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬²éÕÒÒÔÏÂÄÚÈÝ£º
AXE_USES = 100,
¸«Í·
´¸
HAMMER_USES = 75,
¶à¹¦Äܹ¤¾ß
inst.components.weapon:SetDamage(TUNING.PIPE_DART_DAMAGE*30)¼´¿É£¬Ò»¹²ÓÐÁ½´¦
SHOVEL_USES = 25, ²ù×Ó PITCHFORK_USES = 25, ²Ý²æ PICKAXE_USES = 33, ¸ä BUGNET_USES = 10, ²¶³æÍø SPEAR_USES = 150, ì SPIKE_USES = 100, ÀÇÑÀ°ô FISHINGROD_USES = 9, Óã¸Ë TRAP_USES = 8,
ÏÝÚå
BOOMERANG_USES = 10, »ØÐýïÚ NIGHTSWORD_USES = 100, ICESTAFF_USES = 20, ±ùħÕÈ FIRESTAFF_USES = 20,
»ðħÕÈ TELESTAFF_USES = 5,
Ô¶³ÌħÕÈ
³ÈɫħÕÈ
YELLOWSTAFF_USES = 20, »ÆÉ«Ä§ÕÈ ORANGESTAFF_USES = 20, HAMBAT_USES = 100,
GREENSTAFF_USES = 5, ÂÌɫħÕÈ
»ðÍȹ÷°ô
BATBAT_USES = 75, òùòð°ô
MULTITOOL_AXE_PICKAXE_USES = 230, ¶à¹¦Äܹ¤¾ß¸«Í·ºÍ³úÍ· REDAMULET_USES = 20, ºìÉ«»¤Éí·û
BLUEAMULET_FUEL = total_day_time * 0.75, À¶É«»¤Éí·û PURPLEAMULET_FUEL = total_day_time * 0.4, ×ÏÉ«»¤Éí·û YELLOWAMULET_FUEL = total_day_time, »ÆÉ«»¤Éí·û ORANGEAMULET_USES = 225, ³ÈÉ«»¤Éí·û GREENAMULET_USES = 5, PANFLUTE_USES = 10, HORN_USES = 10, Å£½Ç
TRAP_TEETH_USES = 10, ÑÀ³ÝÏÝÚå TENT_USES = 6,
ÕÊÅñ
É¡ ÕëÏß°ü
»ð¾æ
ÌáµÆ
UMBRELLA_USES = 20, SEWINGKIT_USES = 5,
TORCH_FUEL = night_time*1.25,
MINERHAT_LIGHTTIME = (night_time+dusk_time)*2.6, ¿ó¹¤Ã± LANTERN_LIGHTTIME = (night_time+dusk_time)*2.6, SPIDERHAT_PERISHTIME = 4*seg_time, Ö©Öëñ ONEMANBAND_PERISHTIME = 6*seg_time,
¶À×àÀÖÆ÷
¶¬Ã± ţëñ ±³ÐÄ º£Ïóñ×Ó Óðëñ
EARMUFF_PERISHTIME = total_day_time*5, ÍöúÕÖ WINTERHAT_PERISHTIME = total_day_time*10, BEEFALOHAT_PERISHTIME = total_day_time*10,
TRUNKVEST_PERISHTIME = total_day_time*15, WALRUSHAT_PERISHTIME = total_day_time*25, FEATHERHAT_PERISHTIME = total_day_time*8, TOPHAT_PERISHTIME = total_day_time*8,
¼Ó´óÿÐеÄÊý×Ö£¬¼´¿ÉÔö¼Ó¸Ã×°±¸Ê¹ÓôÎÊý¼°Ê±¼ä SWEATERVEST_PERISHTIME = total_day_time*10, ë±³ÐÄ
ÂÌÉ«»¤Éí·û ÅÅóï
°µÓ°½£
¸ßÀññ
¶þÊ®Îå.¿ø¼×ÔھͲ»µôѪ£¨¿ø¼×100%ÎüÊÕÉ˺¦Öµ£©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º
ARMORGRASS_ABSORPTION = .6, ARMORWOOD_ABSORPTION = .8, ARMORMARBLE_ABSORPTION = .95, ARMOR_FOOTBALLHAT_ABSORPTION = .8, ARMOR_SLURTLEHAT_ABSORPTION = 0.9, ARMOR_BEEHAT_ABSORPTION = .8, ARMOR_SANITY_ABSORPTION = .95, ÐÞ¸ÄΪ£º
ARMORGRASS_ABSORPTION = 1, ARMORWOOD_ABSORPTION = 1, ARMORMARBLE_ABSORPTION = 1, ARMOR_FOOTBALLHAT_ABSORPTION = 1, ARMOR_SLURTLEHAT_ABSORPTION = 1, ARMOR_BEEHAT_ABSORPTION = 1, ARMOR_SANITY_ABSORPTION = 1,
¶þÊ®Áù.Ìá¸ß¿ø¼×Ä;ÃÁ¦
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º
ARMORGRASS = wilson_health*1.5, ²Ý¿ø¼× ARMORWOOD = wilson_health*3, ľ¿ø¼× ARMORMARBLE = wilson_health*7, ´óÀíʯ¿ø¼× ARMOR_FOOTBALLHAT = wilson_health*3, ARMOR_BEEHAT = wilson_health*5, ARMOR_SANITY = wilson_health * 5,
¼Ó´óÿÐÐ×îºóµÄÊý×Ö£¬¼´¿ÉÌá¸ß¿ø¼×Ä;ÃÁ¦
×ãÇòñ
ARMOR_SLURTLEHAT = wilson_health*5, ÎÏţñ
·äñ ҹħ¿ø¼×
¶þÊ®Æß.¿ø¼×²»Óþ¡£¨Óõ½Ê£0%²»Ïûʧ£¬¿É¼ÌÐøÓã©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\components\\armor.luaÎļþ£¬½«self.inst:Remove()ÐÞ¸ÄΪ--self.inst:Remove()¼´¿ÉʵÏÖ¿ø¼×²»ÓÃ
¾¡
¶þÊ®°Ë.»ð¾æ²»Óþ¡£¨Óõ½Ê£0%²»Ïûʧ£¬¿É¼ÌÐøÓã©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\torch.luaÎļþ£¬ÒÀ´Î²éÕÒÒÔÏÂÄÚÈÝ£º inst:Remove()
inst.components.fueled:SetDepletedFn(function(inst) inst:Remove() end) ÐÞ¸ÄΪ£º --inst:Remove()
--inst.components.fueled:SetDepletedFn(function(inst) inst:Remove() end)
¼´¿ÉÈÃ»ð¾æ²»Óþ¡£¬ÔÚÓï¾äǰ¼ÓÈë--µÄ¹¦ÄܾÍÊǽ«¸Ã¾ä·Ïµô
¶þÊ®¾Å.¿ó¹¤µÆÎÞÏÞʹÓÃ
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\hats.luaÎļþ£¬ÏȲéÕÒlocal function miner()ºó£¬ÔÙÏòϲéÕÒÒÔÏÂÄÚÈÝ£º
inst:AddComponent("fueled")
inst.components.fueled.fueltype = "MINERHAT"
inst.components.fueled:InitializeFuelLevel(TUNING.MINERHAT_LIGHTTIME) inst.components.fueled:SetDepletedFn(miner_perish) ÐÞ¸ÄΪ£º
--inst:AddComponent("fueled")
--inst.components.fueled.fueltype = "MINERHAT"
--inst.components.fueled:InitializeFuelLevel(TUNING.MINERHAT_LIGHTTIME) --inst.components.fueled:SetDepletedFn(miner_perish)
¼´¿ÉÈÿ󹤵ÆÎÞÏÞʹÓÃ
ÈýÊ®.ÌáµÆ¿ÉÒÔµã50Ìì
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬ÒÀ´Î²éÕÒÒÔÏÂÄÚÈÝ£º MED_LARGE_FUEL = seg_time * 3,
LANTERN_LIGHTTIME = (night_time+dusk_time)*2.6, ÐÞ¸ÄΪ£º
MED_LARGE_FUEL = total_day_time*50, LANTERN_LIGHTTIME = total_day_time*50,
¼´¿ÉʹÌáµÆ¿ÉÒÔµã50Ì죬µ±È»¸Ä999ÌìÒ²ÐÐ
Èýʮһ.ÄϹϵÆÓÀ²»»µ£¨ÎÞÏÞʹÓã©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\pumpkin_lantern.lua
ÈýÊ®¶þ.ʯͷӪ»ðÓÀ²»Ã𣨱£Áô×îС³¤Ã÷»ð£©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\firepit.luaÎļþ£¬½«if section == 0 thenÐÞ¸ÄΪif section < 0 then¼´¿É
ÈýÊ®Èý.ÓòÝÖÖ¸öС̫Ñô£¨ºÚÒ¹±ä°×Ö磬¿ÉÉÕ¿¾Ê³ÎÊÊÓÃ18°æ£©
1.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\cutgrass.luainst:AddComponent("inspectable")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
local function OnDeploy (inst, pt)
local stafflight = SpawnPrefab("stafflight") if stafflight then
stafflight:PushEvent("growfromcutgrass") stafflight.Transform:SetPosition(pt.x, pt.y, pt.z) inst.components.stackable:Get():Remove() end
Îļþ£¬ÔÚÎļþ£¬½«
inst.components.perishable:StartPerishing()ÐÞ¸ÄΪinst.components.perishable:StopPerishing()¼´¿É
end
inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy
2.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\stafflight.luaÎļþ£¬½«ÏÂÁÐÄÚÈÝ£º
local rad = Lerp(4, 5, s)
local intentsity = Lerp(0.8, 0.7, s)
Ìæ»»ÎªÒÔÏÂÄÚÈÝ£º
local rad = Lerp(4, 50, 1) local intentsity = Lerp(0.8, 0.7, 1)
3.½«inst.init_time = 1
20Ìæ»»Îªinst.init_time = 360
4.½«inst.components.propagator.heatoutput = 15Ìæ»»Îªinst.components.propagator.heatoutput = 0
ÈýÊ®ËÄ.¹ø¿ÉËæÉíЯ´ø
1.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\cookpot.luaÎļþ£¬ÔÚÏÂÁÐÄÚÈÝ£º
local function onbuilt(inst)
inst.AnimState:PlayAnimation("place") inst.AnimState:PushAnimation("idle_empty") end
µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
local function onequip(inst, owner)
owner.AnimState:OverrideSymbol("swap_body", "swap_body") end
local function onunequip(inst, owner)
owner.AnimState:ClearOverrideSymbol("swap_body")
"swap_backpack",
end
local function turnon(inst)
inst.components.machine.ison = true
inst:AddComponent("inventoryitem") end
local function turnoff(inst)
inst.components.machine.ison = false
inst:RemoveComponent("inventoryitem") end
local function ondropped(inst) turnoff(inst) turnon(inst) end
2.ÔÚinst.AnimState:PlayAnimation("idle_empty")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
inst:AddComponent("machine") inst.components.machine.turnonfn = turnon inst.components.machine.turnofffn = turnoff
inst:AddComponent("equippable") inst.components.equippable:SetOnEquip( onequip ) inst.components.equippable:SetOnUnequip( onunequip )
¶Ô·ÅÔÚµØÉϵĹø°´Êó±êÓÒ¼ü½â³ý¹Ì¶¨£¬¼´¿É½«¹øËæÉíЯ´ø¡£ÒªÖó¶«Î÷ʱ£¬ÏȰѹø·ÅÔÚµØÉÏ£¬ÔÙ¶ÔÆä°´Êó±êÓÒ¼ü¹Ì¶¨ºó£¬¾Í¿ÉÕý³£Ê¹ÓÃ
ÈýÊ®Îå.±£ÎÂʯ±£ÎÂʱ¼äÑÓ³¤1±¶
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\heatrock.luainst.components.temperature.inherentinsulation
ÈýÊ®Áù.ħÕÈ¡¢»¤Éí·ûÎÞÏÞʹÓÃ
=
TUNING.INSULATION_MED
Îļþ£¬½«
ÐÞ
¸Ä
Ϊ
inst.components.temperature.inherentinsulation = TUNING.INSULATION_MED*2¼´¿É
1.ħÕÈÎÞÏÞʹÓãºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\staff.luaÎļþ£¬½«ÏÂÁÐÄÚÈÝ£º
inst:AddComponent("finiteuses") inst.components.finiteuses:SetOnFinished( onfinished )
inst.components.finiteuses:SetMaxUses(TUNING.FIRESTAFF_USES) inst.components.finiteuses:SetUses(TUNING.FIRESTAFF_USES)
inst.components.finiteuses:SetMaxUses(TUNING.ICESTAFF_USES) inst.components.finiteuses:SetUses(TUNING.ICESTAFF_USES)
inst.components.finiteuses:SetMaxUses(TUNING.TELESTAFF_USES) inst.components.finiteuses:SetUses(TUNING.TELESTAFF_USES)
inst.components.finiteuses:SetMaxUses(TUNING.YELLOWSTAFF_USES) inst.components.finiteuses:SetUses(TUNING.YELLOWSTAFF_USES)
ÐÞ¸ÄΪÒÔÏÂÄÚÈÝ£¨¼´ÔÚÿ¾äÇ°Ãæ¼Ó--£©£º
--inst:AddComponent("finiteuses")
--inst.components.finiteuses:SetOnFinished( onfinished )
--inst.components.finiteuses:SetMaxUses(TUNING.FIRESTAFF_USES) --inst.components.finiteuses:SetUses(TUNING.FIRESTAFF_USES)
--inst.components.finiteuses:SetMaxUses(TUNING.ICESTAFF_USES) --inst
.components.finiteuses:SetUses(TUNING.ICESTAFF_USES)
--inst.components.finiteuses:SetMaxUses(TUNING.TELESTAFF_USES) --inst.components.finiteuses:SetUses(TUNING.TELESTAFF_USES)
--inst.components.finiteuses:SetMaxUses(TUNING.YELLOWSTAFF_USES) --inst.components.finiteuses:SetUses(TUNING.YELLOWSTAFF_USES)
2.»¤Éí·ûÎÞÏÞʹÓãºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\amulet.luaÎļþ£¬½«ÏÂÁÐÄÚÈÝ£º
inst.components.finiteuses:Use(1)
amulet.components.finiteuses:Use(1)
inst:AddComponent("finiteuses") inst.components.finiteuses:SetOnFinished( onfinished )
inst.components.finiteuses:SetMaxUses(TUNING.REDAMULET_USES) inst.components.finiteuses:SetUses(TUNING.REDAMULET_USES)
inst:AddComponent("finiteuses") inst.components.finiteuses:SetOnFinished( onfinished )
inst.components.finiteuses:SetMaxUses(TUNING.ORANGEAMULET_USES) inst.components.finiteuses:SetUses(TUNING.ORANGEAMULET_USES)
ÐÞ¸ÄΪÒÔÏÂÄÚÈÝ£¨¼´ÔÚÿ¾äÇ°Ãæ¼Ó--£©£º
--inst.components.finiteuses:Use(1)
--amulet.components.finiteuses:Use(1)
--inst:AddComponent("finiteuses")
--inst.components.finiteuses:SetOnFinished( onfinished )
--inst.components.finiteuses:SetMaxUses(TUNING.REDAMULET_USES) --inst.components.finiteuses:SetUses(TUNING.REDAMULET_USES)
--inst:AddComponent("finiteuses")
--inst.components.finiteuses:SetOnFinished( onfinished )
--inst.components.finiteuses:SetMaxUses(TUNING.ORANGEAMULET_USES) --inst.components.finiteuses:SetUses(TUNING.ORANGEAMULET_USES)
½«ÏÂÁÐÄÚÈÝ£º
inst.components.fueled:DoDelta(-(inst.components.fueled.maxfuel * 0.03))
inst.components.fueled:StartConsuming()
inst.components.fueled:StopConsuming()
inst.components.fueled:StartConsuming()
inst.components.fueled:StopConsuming()
inst:AddComponent("fueled")
inst.components.fueled.fueltype = "MAGIC"
inst.components.fueled:InitializeFuelLevel(TUNING.BLUEAMULET_FUEL) inst.components.fueled:SetDepletedFn(onfinished)
inst:AddComponent("fueled")
inst.components.fueled.fueltype = "MAGIC"
inst.components.fueled:InitializeFuelLevel(TUNING.PURPLEAMULET_FUEL) inst.components.fueled:SetDepletedFn(onfinished)
ÐÞ¸ÄΪÒÔÏÂÄÚÈÝ£¨¼´ÔÚÿ¾äÇ°Ãæ¼Ó--£©£º
--inst.components.fueled:DoDelta(-(inst.components.fueled.maxfuel * 0.03))
--inst.components.fueled:StartConsuming()
--inst.components.fueled:StopConsuming()
--inst.components.fueled:StartConsuming()
--inst.components.fueled:StopConsuming()
--inst:AddComponent("fueled")
--inst.components.fueled.fueltype = "MAGIC" --inst.components.fueled:InitializeFuelLevel(TUNING.BLUEAM
ULET_FUEL)
--inst.components.fueled:SetDepletedFn(onfinished)
--inst:AddComponent("fueled")
--inst.components.fueled.fueltype = "MAGIC"
--inst.components.fueled:InitializeFuelLevel(TUNING.PURPLEAMULET_FUEL) --inst.components.fueled:SetDepletedFn(onfinished)
¼´¿ÉÈÃħÕÈ¡¢»¤Éí·ûÎÞÏÞʹÓÃ
ÈýÊ®Æß.³ÈÉ«»¤Éí·ûÎüÈ¡ÎïÆ·¼ÓËÙ¡¢·¶Î§¼Ó´ó£¬²»ÎüÏÝÚå
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\amulet.luaÎļþ£¬
1.ÎüÈ¡ÎïÆ·¼ÓËÙ£º½«inst.task = inst:DoPeriodicTask(TUNING.ORANGEAMULET_ICD, function() pickup(inst, owner) end)Ìæ»»ÎªÒÔÏÂÄÚÈÝ£º
inst.task = inst:DoPeriodicTask(TUNING.ORANGEAMULET_ICD*.1, function() pickup(inst, owner) end)
¼´¿É¼Ó¿ìÎüÈ¡ÎïÆ·ËÙ¶È10±¶
2.ÎüÈ¡ÎïÆ··¶Î§¼Ó´ó£º½«
local ents = TheSim:FindEntities(pt.x, pt.y, pt.z, TUNING.ORANGEAMULET_RANGE*5)
¼´¿ÉÈÃÎüÈ¡·¶Î§¼Ó´ó5±¶
3.²»ÎüÏÝÚ壺½«v.components.inventoryitem:IsHeld() thenÌæ»»ÎªÒÔÏÂÄÚÈÝ£º
v.components.inventoryitem:IsHeld() and not v:HasTag("trap") then
¼´¿ÉÈóÈÉ«»¤Éí·û²»ÎüÏÝÚ壬°üÀ¨ÑÀ³ÝÏÝÚå¡¢²¶ÄñÏÝÚå¡¢ÍÃÏÝÚå
ÈýÊ®°Ë.ÑÀ³ÝÏÝÚå×Ô¶¯ÖØÖã¨1ÃëºóÖØÖã©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\trap_teeth.luainst.components.finiteuses:Use(1)µÄÏÂÒ»ÐвåÈëÏÂÁÐÄÚÈÝ£º end
if inst.components.mine then
inst:DoTaskInTime(1, function() inst.components.mine:Reset() end )
¼´¿ÉÈÃÑÀ³ÝÏÝÚåÔÚ´¥·¢ºó1ÃëÖÓ×Ô¶¯ÖØÖá£ÐÞ¸ÄÆäÖеÄ1ΪÈÎÒâÊý×Ö£¬¼´¿ÉÉèÖü¸ÃëÖÓ×Ô¶¯ÖØÖá£Õâ²»ÊÇÎÒÑо¿µÄ£¬ÊDZðÈËMODµÄ³É¹û£¬Ö»ÊÇÒòΪ¸üÐÂÓÎÏ·ºóÔMOD²»ÄÜÓ㬲ŰÑÐ޸ķ½·¨¹«²¼³öÀ´£¬ÒÔ·½±ã´ó¼Ò
ÈýÊ®¾Å.«δµ³ö´ßÃßÇú£¨ÔÚЯ´øµÄ«ÎÉϰ´Êó±êÓÒ¼ü£¬¿É´ßÃß¶¯Î
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\cutreeds.luainst:AddComponent("inventoryitem")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
inst:AddTag("flute")
local function HearPanFlute(inst, musician, instrument) if inst.components.sleeper then
Îļþ£¬ÔÚÎļþ£¬ÔÚ
local ents = TheSim:FindEntities(pt.x, pt.y, pt.z,
TUNING.ORANGEAMULET_RANGE)Ìæ»»ÎªÒÔÏÂÄÚÈÝ£º
inst.components.sleeper:AddSleepiness(10, TUNING.PANFLUTE_SLEEPTIME*1) end end
inst:AddComponent("tool") inst.components.tool:SetAction(ACTIONS.PLAY)
inst:AddComponent("instrument")
inst.components.instrument.range = TUNING.PANFLUTE_SLEEPRANGE*2 inst.components.instrument:SetOnHeardFn(HearPanFlute)
¼´¿ÉÓÃ«δµ³ö´ßÃßÇú¡£ÆäÖÐ*1Ϊ´ßÃßʱ¼ä20Ã룬Ïë´ßÃß60Ãë¾Í*3¼´¿É¡£ÆäÖÐ*2Ϊ´ßÃß·¶Î§30¸ñ£¬ÏëÀ©´óÖÁ60¸ñ¾Í*4¼´¿É
ËÄÊ®.×°±¸ÖíÆ¤°üÄܲ¹ÄÔ
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\piggyback.luainst:AddComponent("inspectable")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚ
ÈÝ£º
inst:AddComponent("dapperness")
inst.components.dapperness.dapperness = TUNING.DAPPERNESS_HUGE
¼´¿ÉʹÖíÆ¤°ü¾ß±¸²¹ÄÔ¹¦ÄÜ
ËÄʮһ.È«ÈËÎï¿ÉÖÆÔì´ò»ð»ú£¨ÔÀ´Ö»ÓÐÞ±ÂåרÓã©
1.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\recipes.luaÎļþ£¬ÔÚRecipe("torch", {Ingredient("cutgrass",
2),Ingredient("twigs",
2)},
RECIPETABS.LIGHT,
TECH.NONE)µÄÏÂÒ»ÐвåÈëRecipe("lighter", {Ingredient("goldnugget", 1),Ingredient("nitre", 1)}, RECIPETABS.LIGHT, TECH.NONE)
2.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\lighter.luaÎļþ£¬½«inst:DoTaskInTime(0, function() if not GetPlayer() or GetPlayer().prefab ~= "willow" then inst:Remove() end end)ÐÞ¸ÄΪ--inst:DoTaskInTime(0, function() if not GetPlayer() or GetPlayer().prefab ~= "willow" then
Îļþ£¬ÔÚ
inst:Remove() end end)
¼´¿ÉÓÃ1¸ö½ð¿é¡¢1¸öÏõʯÔÚÕÕÃ÷Ñ¡ÏîÀïÖÆÔì´ò»ð»ú
ËÄÊ®¶þ.È«ÈËÎï¿ÉÖÆÔìÎéµÏµÄ¸«×Ó£¨8Ï¿³µ¹1¿ÃÊ÷£¬ÆÕͨ¸«×Ó15Ï£©
1.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\recipes.luaÎļþ£¬ÔÚRecipe("razor", {Ingredient("twigs",
2),
Ingredient("flint",
2)},
RECIPETABS.TOOLS,
TECH.SCIENCE_ONE)µÄÏÂÒ»ÐвåÈëRecipe("Lucy", {Ingredient("twigs", 4), Ingredient("goldnugget", 4)}, RECIPETABS.TOOLS, TECH.SCIENCE_ONE)
2.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\lucy.luaÎļþ£¬½«ÏÂÁÐÄÚÈÝ£º
inst:AddComponent("sentientaxe")
inst:DoTaskInTime(0, function() if not GetPlayer() or GetPlayer().prefab ~= "woodie" then inst:Remove() end end) ÐÞ¸ÄΪ£º
--inst:AddComponent("sentientaxe")
--inst:DoTaskInTime(0, function() if not GetPlayer() or GetPlayer().prefab ~= "woodie" then inst:Remove() end end)
¼´¿ÉÓÃ4¸öÊ÷辡¢4¸ö½ð¿éÔÚ¹¤¾ßÑ¡ÏîÀïÖÆÔìÎéµÏµÄ¸«×Ó
ËÄÊ®Èý.È«ÈËÎï¿ÉÖÆÔìħ·¨Êé
1.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\recipes.luaÎļþ£¬ÔÚRecipe("batbat", {Ingredient("batwing", ÏÂÄÚÈÝ£º
Recipe("book_birds", Recipe("book_gardening", Ingredient("seeds", TECH.MAGIC_TWO)
Recipe("book_sleep", Recipe("book_brimstone",
{Ingredient("papyrus", {Ingredient("papyrus",
2), 2),
Ingredient("nightmarefuel", 2)}, RECIPETABS.MAGIC, TECH.MAGIC_TWO)
1),
{Ingredient("papyrus", {Ingredient("papyrus",
Ingredient("poop",
1)},
2), 2),
Ingredient("bird_egg", 2)}, RECIPETABS.MAGIC, TECH.MAGIC_TWO)
RECIPETABS.MAGIC,
5),
Ingredient("livinglog",
2),
Ingredient("purplegem", 1)}, RECIPETABS.MAGIC, TECH.MAGIC_THREE)µÄÏÂÒ»ÐвåÈëÒÔ
Ingredient("redgem", 1)}, RECIPETABS.MAGIC, TECH.MAGIC_TWO) Recipe("book_tentacles",
2.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\player_common.luainst:AddComponent("temperature")inst:AddComponent("reader")
¼´¿ÉÔÚħ·¨Ñ¡ÏîÀïÖÆÔìħ·¨Êé
ËÄÊ®ËÄ.ÑÓ³¤±ùÏä±£ÏÊʱ¼ä
ÓüÇʱ¾
´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«PERISH_FRIDGE_MULT = .5ÐÞ¸ÄΪPERISH_FRIDGE_MULT = .01¼´¿É
ËÄÊ®Îå.±³°ü¿ÉÀä²ØÊ³Æ·
1.ÆÕͨ±³°ü¿ÉÀä²ØÊ³Æ·£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\backpack.luaÎļþ£¬ÔÚlocal inst = CreateEntity()µÄÏÂÒ»ÐвåÈëinst:AddTag("fridge")
2.СÖí°ü¿ÉÀä²ØÊ³Æ·£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\piggyback.luaÎļþ£¬ÔÚlocal inst = CreateEntity()µÄÏÂÒ»ÐвåÈëinst:AddTag("fridge")
3.¿²ÆÕ˹±³°ü¿ÉÀä²ØÊ³Æ·£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\krampus_sack.luaÎļþ£¬ÔÚlocal inst = CreateEntity()µÄÏÂÒ»ÐвåÈëinst:AddTag("fridge")
¼´¿ÉÈñ³°ü¾ß±¸À䲨¹¦ÄÜ
ËÄÊ®Áù.ÖÖ×Ó¸¯ÀñäÂý
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«PERISH_SUPERSLOW =
µÄ
ÏÂ
Ò»
ÐÐ
Îļþ£¬ÔÚ²å
Èë
{Ingredient("papyrus",
2),
Ingredient("tentaclespots", 1)}, RECIPETABS.MAGIC, TECH.MAGIC_TWO)
40*total_day_time*perish_warp,ÐÞ¸ÄΪPERISH_SUPERSLOW = 200*total_day_time*perish_warp,¼´¿É
ËÄÊ®Æß.´©Ç½Êõ£¨¶¼È¦ÆðÀ´°É£¬²»ÐèÒªÁôÃÅÁË£©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\walls.luaÎļþ£¬
1.ÔÚÏÂÁÐÄÚÈÝ£º
local function onremoveentity(inst) --print("walls - onremoveentity") clearobstacle(inst) end
µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
local function turnon(inst)
inst.components.machine.ison = true clearobstacle(inst) end
local function turnoff(inst)
inst.components.machine.ison = false makeobstacle(inst) end
2.ÔÚinst.components.workable:SetOnWorkCallback(onhit)µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
inst:AddComponent("machine") inst.components.machine.turnonfn = turnon inst.components.machine.turnofffn = turnoff
¶Ôǽ°´Êó±êÓÒ¼ü¼´¿Éͨ¹ý£¬ÔÙ°´Êó±êÓÒ¼üÔò»Ö¸´Ç½µÄ×èµ²
ËÄÊ®°Ë.Ôö¼ÓǽµÄÄ;ÃÁ¦
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º HAYWALL_HEALTH = 100,
WOODWALL_HEALTH = 200, STONEWALL_HEALTH = 400, ÐÞ¸ÄΪ£º
HAYWALL_HEALTH = 1000, WOODWALL_HEALTH = 2000, STONEWALL_HEALTH = 4000,
¼´¿ÉÔö¼ÓǽµÄÄ;ÃÁ¦10±¶
ËÄÊ®¾Å.ǽ±ÚÓÀ¹Ì£¨×Ô¼º¿ÉÔÒ£¬¹ÖÎïÎÞ·¨ÆÆ»µ£© ÓÃ
inst.components.health:SetInvincible(true)
¼´¿ÉÈÃǽ±ÚÓÀ¹Ì
ÎåÊ®.ÈÃÓÎÏ·ÖеÄÒ»Ìì¸üÂþ³¤£¨1Ìì´ÓÕæÊµÊÀ½çµÄ8·ÖÖÓÐÞ¸ÄΪ16·ÖÖÓ£©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«local seg_time = 30ÐÞ¸ÄΪlocal seg_time = 60¼´¿É
Îåʮһ.Ð޸İ×Ìì¡¢°øÍí¡¢ºÚÒ¹Õ¼Ò»ÌìµÄ±ÈÀý
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬²éÕÒÒÔÏÂÄÚÈÝ£º
local day_segs = 10 °×ÌìСʱÊý local dusk_segs = 4 °øÍíСʱÊý local night_segs = 2 ºÚҹСʱÊý
ÐÞ¸ÄÿÐÐ×îºóµÄÊý×Ö£¬¼´¿É
¼Ç
ÊÂ
±¾
´ò
¿ª
ÓÎ
Ï·
Ä¿
¼
\\data\\scripts\\prefabs\\walls.lua
ÎÄ
¼þ
£¬
ÔÚ
inst:AddTag("noauradamage")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
Ð޸İ×Ìì¡¢°øÍí¡¢ºÚÒ¹Õ¼Ò»ÌìµÄ±ÈÀý£¬×ÜÊý²»Òª³¬¹ý16
ÎåÊ®¶þ.µØÍ¼È«¿ª£¨ÓÎÏ·Öа´Ctrl +1£©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\main.luaÎļþ£¬ÔÚKnownModIndex:Load(function() end)µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
TheInput:AddKeyUpHandler(KEY_1, function() if TheInput:IsKeyDown(KEY_CTRL) then
local MainCharacter = TheSim:FindFirstEntityWithTag("player") local map = TheSim:FindFirstEntityWithTag("minimap") if MainCharacter and map then
local x, y, z = MainCharacter.Transform:GetWorldPosition() map.MiniMap:ShowArea(x, y, z, 10000) end end end );
¼´¿ÉÔÚÓÎÏ·Öа´Ctrl + 1ʹµØÍ¼È«¿ª¡£Õâ²»ÊÇÎÒµÄÑо¿£¬ÊÇ×ªÔØÀ´µÄ£¬ÒÔ·½±ã´ó¼Ò
ÎåÊ®Èý.Ëõ¶Ì²Ý¡¢Ê÷辡¢Â«Î¡¢¶´Ñ¨»¨³¤³öʱ¼ä
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º GRASS_REGROW_TIME = total_day_time*3, SAPLING_REGROW_TIME = total_day_time*4, REEDS_REGROW_TIME = total_day_time*3, FLOWER_CAVE_REGROW_TIME = total_day_time*3, ÐÞ¸ÄΪ£º
GRASS_REGROW_TIME = total_day_time*1, SAPLING_REGROW_TIME = total_day_time*1, REEDS_REGROW_TIME = total_day_time*1, FLOWER_CAVE_REGROW_TIME = total_day_time*1,
¼´¿ÉÈÃÕ⼸ÖÖÖ²Îï1Ì쳤1´Î
ÎåÊ®ËÄ.Öֲݲ»ÓÃÊ©·Ê
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\grass.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º
inst.components.pickable:MakeBarren()
inst.components.pickable.makebarrenfn = makebarrenfn inst.components.pickable.makefullfn = makefullfn inst.components.pickable.max_cycles = 20 inst.components.pickable.cycles_left = 20 ÐÞ¸ÄΪ£º
inst.components.pickable:MakeEmpty()
--inst.components.pickable.makebarrenfn = makebarrenfn --inst.components.pickable.makefullfn = makefullfn --inst.components.pickable.max_cycles = 20 --inst.components.pickable.cycles_left = 20
¼´¿ÉÖֲݲ»ÓÃÊ©·Ê
ÎåÊ®Îå.ÓëÎÖÖֲ«Σ¨·ÖÖêÖÖÖ²£©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\cutreeds.luaÎļþ£¬inst:AddComponent("inspectable")µÄÏÂÒ»ÐвåÈëÏÂÁÐÄÚÈÝ£º
local function OnDeploy (inst, pt)
local reeds = SpawnPrefab("reeds") if reeds then
reeds:PushEvent("growfromcutreeds") reeds.Transform:SetPosition(pt.x, pt.y, pt.z) inst.components.stackable:Get():Remove() end end
inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy
¼´¿ÉÓëÎÖÖֲ«Σ¨·ÖÖêÖÖÖ²£©£¬Èç¹ûÏëÒÆÖ²£¬ÔÀ´µÄ«θù²»ÏëÁô£¬Óûð¾æÉÕµô¼´¿É
ÔÚ
ÎåÊ®Áù.ÓÃľͷ¡¢Ä¾Ì¿¡¢»ÒÖÖֲʯ¿ó£¨¿É³ÖÐø·¢Õ¹£©
1.ÓÃľͷÖÖµÚÒ»ÖÖʯ¿ó£¨Ö»ÓÐʯͷ£©£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\log.luaÎļþ£¬ÔÚinst:AddComponent("stackable")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
local function OnDeploy (ins
t, pt)
local rock_flintless = SpawnPrefab("rock_flintless") if rock_flintless then
rock_flintless:PushEvent("growfromlog") rock_flintless.Transform:SetPosition(pt.x, pt.y, pt.z) inst.components.stackable:Get():Remove() end end
inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy
2.ÓÃľ̿ÖÖµÚ¶þÖÖʯ¿ó£¨´øÏõʯµÄ£©£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\charcoal.luaÎļþ£¬ÔÚinst:AddComponent("inspectable")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
local function OnDeploy (inst, pt)
local rock1 = SpawnPrefab("rock1") if rock1 then
rock1:PushEvent("growfromcharcoal") rock1.Transform:SetPosition(pt.x, pt.y, pt.z) inst.components.stackable:Get():Remove() end end
inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy
3.ÓûÒÖÖµÚÈýÖÖʯ¿ó£¨´ø»Æ½ðµÄ£©£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\ash.luaÎļþ£¬ÔÚinst.AnimState:PlayAnimation("idle")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
local function OnDeploy (inst, pt)
local rock2 = SpawnPrefab("rock2") if rock2 then
rock2:PushEvent("growfromash") rock2.Transform:SetPosition(pt.x, pt.y, pt.z) inst.components.stackable:Get():Remove() end end
inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy
¼´¿Éʹʯ¿óÑ»·ÀûÓÃ
ÎåÊ®Æß.²É¿óʱ50%¸ÅÂÊÍÚ³ö±¦Ê¯
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\rocks.luaÎļþ£¬ÒÀ´Î²éÕÒÒÔÏÂÄÚÈÝ£º
inst.components.lootdropper:AddChanceLoot("nitre", 0.25) inst.components.lootdropper:AddChanceLoot("goldnugget", 0.25) inst.components.lootdropper:AddChanceLoot("rocks", 0.6) ÔÚÕâÈý¾äÿ¾äµÄÏÂÒ»ÐУ¬¾ù²åÈëÒÔÏÂÄÚÈÝ£º
inst.components.lootdropper:AddChanceLoot("bluegem", 0.5) inst.components.lootdropper:AddChanceLoot("redgem", 0.5) inst.components.lootdropper:AddChanceLoot("orangegem", 0.5) inst.components.lootdropper:AddChanceLoot("yellowgem", 0.5) inst.components.lootdropper:AddChanceLoot("greengem", 0.5)
¼´¿ÉÔڲɿóʱ50%¸ÅÂÊÍÚ³ö±¦Ê¯£¬Ò²¿É½«bluegem£¨À¶±¦Ê¯£©¡¢redgem£¨ºì±¦Ê¯£©¡¢orangegem£¨³È±¦Ê¯£©¡¢yellowgem£¨»Æ±¦Ê¯£©¡¢greengem£¨Â̱¦Ê¯£©»»³ÉÆäËûÎïÆ·£¨±ÈÈçkoalefant_summerºìÏó¡¢koalefant_winter¶¬Ï󣩣¬²¢µ÷Õû0.5£¨³öÏÖ¸ÅÂÊ£©ÎªÄãÏëÒªµÄÊý×Ö
ÎåÊ®°Ë.ÿ¶ä»¨Ï¶¼ÓÐÂüµÂÀ²Ý
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\flower.luaÎļþ£¬
1.ÔÚinst:Remove()µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
inst.components.lootdropper:SpawnLootPrefab("mandrake")
2.ÔÚinst:AddComponent("inspectable")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
inst:AddComponent("lootdropper")
¼´¿ÉÔÚÕª»¨Ê±·¢ÏÖÂüµÂÀ²Ý£¬ÒòΪºûµû¿ÉÖÖΪ»¨£¬µÈÓÚÓÐÎÞÏÞ¶àµÄÂüµÂÀ²Ý¿ÉÒÔ²ÉÕª ÎåÊ®
¾Å.»¨°êÖÖ»¨£¨»¨¿ÉÒÆÖ²£© ÓüÇ
ÊÂ
±¾
´ò
¿ª
ÓÎ
Ï·
Ä¿
¼
\\data\\scripts\\prefabs\\petals.lua
ÎÄ
inst:AddComponent("tradable")µÄÏÂÒ»ÐвåÈëÏÂÁÐÄÚÈÝ£º
local function OnDeploy (inst, pt)
local flower = SpawnPrefab("flower") if flower then
flower:PushEvent("growfrompetals") flower.Transform:SetPosition(pt.x, pt.y, pt.z) inst.components.stackable:Get():Remove() end end
inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy
¼´¿ÉÓû¨°êÖÖ»¨
ÁùÊ®.ÉúÃüºÅ½Ç£¨´µÅ£½ÇÈÃÅ©Ìï¡¢Ê÷辸ù¡¢²Ý¸ù¡¢Â«Î¸ù¡¢¿Õ¹ûÊ÷´ÔѸËÙ³¤³ö£©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\horn.luaÎļþ£¬
1.ÔÚÏÂÁÐÄÚÈÝ£º
local function onfinished(inst) inst:Remove() end
¼þ
£¬
ÔÚ
µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
function growfn(inst, reader)
reader.components.sanity:DoDelta(TUNING.SANITY_LARGE) local range = 30
local pos = Vector3(reader.Transform:GetWorldPosition()) local ents = TheSim:FindEntities(pos.x,pos.y,pos.z, range) for k,v in pairs(ents) do if v.components.pickable then v.components.pickable:FinishGrowing() end
if v.components.crop then
v.components.crop:DoGrow(TUNING.TOTAL_DAY_TIME*3) end end return true end
2.½«ÏÂÁÐÄÚÈÝ£º
inst.components.instrument.range = TUNING.HORN_RANGE inst.components.instrument:SetOnHeardFn(HearHorn)
Ìæ»»ÎªÒÔÏÂÄÚÈÝ£º
inst.components.instrument.onheard = growfn
¼´¿ÉÔڲɼ¯¹ýµÄÖ²Îï¸ù¸½½ü´µÅ£½Ç£¬´ÙʹֲÎï¿ìËÙÉú³¤³öÀ´£¬µ«Å£½ÇÔÓÐÈÃÅ£¸úËæ¹¦ÄÜʧЧ
Áùʮһ.Éñ֮죨ì¹¥»÷ʱÕÙ»½ÉÁµç£©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\spear.luaÎļþ£¬
1.ÔÚÏÂÁÐÄÚÈÝ£º
local function onunequip(inst, owner)
owner.AnimState:Hide("ARM_carry") owner.AnimState:Show("ARM_normal") end
µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
function firefn(inst, reader)
local num_lightnings = 32
reader.components.sanity:DoDelta(TUNING.SANITY_LARGE) reader:StartThread(function() for k = 0, num_lightnings do
local rad = math.random(3, 15) local angle = k*((4*PI)/num_lightnings)
local pos = Vector3(reader.Transform:GetWorldPosition()) + Vector3(rad*math.cos(angle), 0, rad*math.sin(angle))
GetSeasonManager():DoLightningStrike(pos) Sleep(math.random( .3, .5)) end end) return true end
2.½«inst.components.weapon:SetDamage(TUNING.SPEAR_DAMAGE)Ìæ»»ÎªÏÂÁÐÄÚÈÝ£º
inst.components.weapon:SetDamage(TUNING.SPEAR_DAMAGE*100) inst.components.weapon:SetRange(8, 10) inst.components.weapon.onattack = firefn
¼´¿ÉÈÃìÔÚ¹¥»÷ʱÕÙ»½ÉÁµç
ÁùÊ®¶þ.×°±¸»ØÐýïÚÕÙ»½»ð¼¦£¨´òÁÔ
ÓÎÏ·£©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\boomerang.luainst:AddComponent("inspectable")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
local function cancreatelight(staff, caster, target, pos) local ground = GetWorld() if ground and pos then
Îļþ£¬ÔÚ
local tile = ground.Map:GetTileAtPoint(pos.x, pos.y, pos.z)
return tile ~= GROUND.IMPASSIBLE and tile < GROUND.UNDERGROUND end return false end
local function createlight(staff, target, pos) local light = SpawnPrefab("perd") light.Transform:SetPosition(pos.x, pos.y, pos.z) local caster = staff.components.inventoryitem.owner end
inst:AddComponent("spellcaster") inst.components.spellcaster:SetSpellFn(createlight) inst.components.spellcaster:SetSpellTestFn(cancreatelight)
inst.components.spellcaster.canuseonpoint = true inst.components.spellcaster.canusefrominventory = false
¼´¿É×°±¸»ØÐýïÚºó£¬ÔÚ¿ÕµØÉϵãÊó±êÓÒ¼üÕÙ»½»ð¼¦¡£ÆäÖÐperd£¨»ð¼¦£©¿ÉÒÔÌæ»»ÎªÆäËûÎïÆ·
ÁùÊ®Èý.È®ÑÀ·ÉïÚ£¨×°±¸È®ÑÀ£¬Ò»ÕÐÖÆµÐ£©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\houndstooth.luaÎļþ£¬
1.ÔÚÏÂÁÐÄÚÈÝ£º
local assets= {
Asset("ANIM", "anim/hounds_tooth.zip"), }
µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
local function onequip(inst, owner)
owner.AnimState:OverrideSymbol("swap_object", "swap_houndstooth")
owner.AnimState:Show("ARM_carry") owner.AnimState:Hide("ARM_normal") end
"swap_houndstooth",
local function onunequip(inst, owner)
owner.AnimState:ClearOverrideSymbol("swap_object") owner.AnimState:Hide("ARM_carry") owner.AnimState:Show("ARM_normal") end
local function onhit(inst, attacker, target)
local impactfx = SpawnPrefab("impact") if impactfx then
local follower = impactfx.entity:AddFollower()
follower:FollowSymbol(target.GUID, target.components.combat.hiteffectsymbol, 0, 0, 0 ) impactfx:FacePoint(Vector3(attacker.Transform:GetWorldPosition())) end
inst:Remove() end
local function onthrown(inst, data)
inst.AnimState:SetOrientation( ANIM_ORIENTATION.OnGround ) end
2.ÔÚinst:AddComponent("inspectable")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
inst:AddComponent("weapon") inst.components.weapon:SetDamage(3000) inst.components.weapon:SetRange(15, 18)
inst:AddComponent("equippable") inst.components.equippable:SetOnEquip(onequip) inst.components.equippable:SetOnUnequip(onunequip) inst.components.equippable.equipstack = true
inst:AddComponent("projectile") inst.components.projectile:SetSpeed(60) inst.components.projectile:SetOnHitFn(onhit) inst:ListenForEvent("onthrown", onthrown)
¼´¿ÉʹȮÑÀ³ÉΪװ±¸µÄÎäÆ÷£¬Ë¦³öÈ¥¿ÉÒ»ÕÐÖÆµÐ¡£ÓÃÈ®ÑÀÖÆÔìÎïÆ·Ê±£¬·ÅÔÚ·Ç×°±¸¸ñ£¨ÆÕͨ¿â´æ¸ñ»ò±³°ü¸ñ£©¼´¿É
ÁùÊ®ËÄ.ÖÖ¸¯ÀÃʳÎïµÃ¸ß
Äñ£¬¸ßÄñÎÞ¹¥»÷ÐÐΪ¡¢Ï¸ßÄñµ°£¬¸ßÄñµ°¿É¶Ñµþ
1.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\spoiledfood.luaÎļþ£¬ÔÚ
inst.components.edible.hungervalue = TUNING.SPOILED_HUNGERµÄÏÂÒ»ÐвåÈëÏÂÁÐÄÚÈÝ£º
local function OnDeploy (inst, pt)
local tallbird = SpawnPrefab("tallbird") if tallbird then
tallbird:PushEvent("growfromspoiledfood") tallbird.Transform:SetPosition(pt.x, pt.y, pt.z) inst.components.stackable:Get():Remove() end end
inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy
2.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\tallbird.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º
inst.components.combat:SetRange(TUNING.TALLBIRD_ATTACK_RANGE) ÐÞ¸ÄΪ£º
inst.components.combat:SetRange(TUNING.TALLBIRD_ATTACK_RANGE*0)
ÔÚinst:AddComponent("inspectable")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
inst:AddComponent("periodicspawner")
inst.components.periodicspawner:SetPrefab("tallbirdegg") inst.components.periodicspawner:SetRandomTimes(80, 110) inst.components.periodicspawner:SetDensityInRange(20, 2) inst.components.periodicspawner:SetMinimumSpacing(8) inst.components.periodicspawner:Start()
3.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\tallbirdegg.luainst:AddComponent("edible")µÄÏÂÒ»ÐвåÈëÏÂÁÐÄÚÈÝ£º
inst:AddComponent("stackable")
inst.components.stackable.maxsize = TUNING.STACK_SIZE_SMALLITEM
Îļþ£¬ÔÚ
ÁùÊ®Îå.ÇàÄê¸ßÄñ²»³¤´ó£¬²¢Ôö¼ÓѪÁ¿¼°¹¥»÷Á¦£¬Î¹Ê³¿ÉÖØÐÂÈÏÈË
1.ÇàÄê¸ßÄñ18000Ìì²»³¤´ó£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\smallbird.luaÎļþ£¬½«return TUNING.TEENBIRD_GROW_TIMEÌæ»»Îªreturn TUNING.TEENBIRD_GROW_TIME*1000¼´¿É
2.Ìá¸ßÇàÄê¸ßÄñѪÁ¿µ½30000µã£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\smallbird.luaÎļþ£¬½«
3.Ìá¸ßÇàÄê¸ßÄñ¹¥»÷Á¦µ½180µã£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\smallbird.luaÎļþ£¬½«
4.ͨ¹ýιʳÈøßÄñÖØÐÂÈÏÈË£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\smallbird.luaÎļþ£¬ÔÚ--print("smallbird - OnGetItemFromPlayer")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
local player = GetPlayer()
if player and player.components.leader then player.components.leader:AddFollower(inst) end
ÁùÊ®Áù.ι×ÔÑø¸ßÄñ²ú±ã±ã
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\smallbird.luaÎļþ£¬ÔÚlocal function OnEat(inst, food)µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
if food.components.edible then
local poo = SpawnPrefab("poop") poo.Transform:
SetPosition(inst.Transform:GetWorldPosition()) end
¼´¿Éι×ÔÑø¸ßÄñ²ú±ã±ã
inst.components.combat:SetDefaultDamage(TUNING.TEENBIRD_DAMAGE)
Ìæ
»»
Ϊ
inst.components.combat:SetDefaultDamage(TUNING.TEENBIRD_DAMAGE*5)
inst.components.health:SetMaxHealth(TUNING.TEENBIRD_HEALTH)
Ìæ
»»
Ϊ
inst.components.health:SetMaxHealth(TUNING.TEENBIRD_HEALTH*100)¼´¿É
ÁùÊ®Æß.×ÔÑø¸ßÄñ²»ÓÃιʳ£¨²»ÒªÓëι×ÔÑø¸ßÄñ²ú±ã±ãͬʱÐ޸ģ©
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\smallbird.luaÎļþ£¬½«ÏÂÁÐÄÚÈÝ£º
inst:AddComponent("hunger")
inst.components.hunger:SetMax(TUNING.SMALLBIRD_HUNGER)
inst.components.hunger:SetRate(TUNING.SMALLBIRD_HUNGER/TUNING.SMALLBIRD_STARVE_TIME) inst.components.hunger:SetKillRate(TUNING.SMALLBIRD_HEALTH/TUNING.SMALLBIRD_STARVE_KILL_TIME)
inst.components.hunger:SetMax(TUNING.TEENBIRD_HUNGER)
inst.components.hunger:SetRate(TUNING.TEENBIRD_HUNGER/TUNING.TEENBIRD_STARVE_TIME) inst.components.hunger:SetKillRate(TUNING.TEENBIRD_HEALTH/TUNING.TEENBIRD_STARVE_KILL_TIME)
ÐÞ¸ÄΪ£º
--inst:AddComponent("hunger")
--inst.components.hunger:SetMax(TUNING.SMALLBIRD_HUNGER)
--inst.components.hunger:SetRate(TUNING.SMALLBIRD_HUNGER/TUNING.SMALLBIRD_STARVE_TIME)
--inst.components.hunger:SetKillRate(TUNING.SMALLBIRD_HEALTH/TUNING.SMALLBIRD_STARVE_KILL_TIME)
--inst.components.hunger:SetMax(TUNING.TEENBIRD_HUNGER)
--inst.components.hunger:SetRate(TUNING.TEENBIRD_HUNGER/TUNING.TEENBIRD_STARVE_TIME) --inst.components.hunger:SetKillRate(TUNING.TEENBIRD_HEALTH/TUNING.TEENBIRD_STARVE_KILL_TIME)
¼´¿ÉÈÃ×ÔÑø¸ßÄñ²»ÓÃιʳ
ÁùÊ®°Ë.ÑÀ³ÝÏÝÚå²»É˺¦×ÔÑø¸ßÄñ
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\trap_teeth.luaÎļþ£¬½«if target thenÌæ»»Îªif target and not target:HasTag("smallbird") then¼´¿É
ÁùÊ®¾Å.Ö÷½Ç´øÈâ²»±»ÍÃÈ˹¥»÷
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\bunnyman.lua
Îļþ£¬½«
if
guy:HasTag("player")Ìæ»»Îªif guy:HasTag("monster")¼´¿É£¬×¢ÒâÌæ»»µÄÖ»ÊÇ
Ò»¾äÖеÄÒ»²¿·Ö£¬Óï¾äÆäËû²¿·Ö²»Òª¶¯
ÆßÊ®.ÖíÈËÓÀ¾Ã¸úËæ
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\pigman.luaÎļþ£¬ 1.
--inst.components.follower:AddLoyaltyTime(item.components.edible:GetHunger() TUNING.PIG_LOYALTY_PER_HUNGER)
2.½«inst.components.follower.maxfollowtime = TUNING.PIG_LOYALTY_MAXTIMEÌæ»»ÎªÒÔÏÂÄÚÈÝ£º
--inst.components.follower.maxfollowtime = TUNING.PIG_LOYALTY_MAXTIME
¼´¿ÉÈÃÖíÈËÓÀ¾Ã¸úËæ£¬¶öÁËÒ²²»»áÀ뿪¡£µ«ÍíÉÏÒ»ÑùÐèÒª¸øËüµã»ð£¬Ëü»á´ôÔÚ»ðÅÔ£¬µ½°×Ìì¼ÌÐø¸úËæ
Æßʮһ.ιÄñ·èÈâµÃ±¦Ê¯
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\birdcage.luaÎļþ£¬
1.½«if item.prefab == "egg" or item.prefab == "bird_egg" or item.prefab == "rottenegg" or item.prefab == "monstermeat" thenÌæ»»ÎªÒÔÏÂÄÚÈÝ£º
if item.prefab == "egg" or item.prefab == "bird_egg" or item.prefab == "rottenegg" then
2.ÔÚinst:DoTaskInTime(60*FRAMES, function()µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
if item.prefab == "monstermeat" then
inst.components.lootdropper:SpawnLootPrefab("redgem") inst.components.lootdropper:SpawnLootPrefab("bluegem")
*
½«
inst.components.follower:AddLoyaltyTime(item.components.edible:GetHunger()
*
TUNING.PIG_LOYALTY_PER_HUNGER)Ìæ»»ÎªÒÔÏÂÄÚÈÝ£º
inst.components.lootdropper:SpawnLootPrefab("orangegem") inst.components.lootdropper:SpawnLootPrefab("yellowgem") inst.components.lootdropper:SpawnLootPrefab("greengem") inst.components.lootdropper:SpawnLootPrefab("purplegem") end
¼´¿É¸øÄñÁýÖеÄÄñι·èÈâµÃ±¦Ê¯¡£ÐÞ¸ÄÆäÖÐredgem¡¢bluegem¡¢orangegem¡¢yellowgem¡¢greengem¡¢purplegem±¦Ê¯Ãû³ÆÎªÆäËûÎïÆ·Ãû³Æ£¬¼´¿ÉιÄñ³Ô·èÈâµÃÆäËûÎïÆ·
ÆßÊ®¶þ.Å©ÌïÊÕ»ñ¸ü¶à²úÆ·
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\components\\crop.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º
harvester.components.inventory:GiveItem(product) Ìæ»»Îª£º
harvester.components.inventory:GiveItem(SpawnPrefab(self.product_prefab)) harvester.components.inventory:GiveItem(SpawnPrefab(self.product_prefab)) harvester.components.inventory:GiveItem(SpawnPrefab(self.product_prefab))
¼´¿ÉÒ»´ÎÊÕ»ñ
ÆßÊ®Èý.Å©×÷Îï1Ã볤³öÀ´
1.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\seeds.luainst.components.plantable.growtime
2.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\veggies.luainst.components.plantable.growtime
¼´¿ÉÈÃËùÓÐÅ©×÷Îï1Ã볤³ö
ÆßÊ®ËÄ.ÁÀÈâÎÞÐèµÈ´ý£¨½«Èâ·ÅÔÚÁÀÈâ¼ÜÉϼ´¸É£©
=
TUNING.SEEDS_GROW_TIME
inst.components.plantable.growtime = TUNING.SEEDS_GROW_TIME*0
Îļþ£¬½«ÐÞ
¸Ä
Ϊ
=
TUNING.SEEDS_GROW_TIME
inst.components.plantable.growtime = TUNING.SEEDS_GROW_TIME*0
Îļþ£¬½«ÐÞ
¸Ä
Ϊ
3
¸ö²úÆ·£¬ÏëÊÕ»ñ¶àÉÙ£¬¾Í¸´ÖƶàÉÙÐÐ
harvester.components.inventory:GiveItem(SpawnPrefab(self.product_prefab))¼´¿É
1.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\meats.luainst.components.dryable:SetDryTime(TUNING.DRY_FAST)inst.components.dryable:SetDryTime(TUNING.DRY_FAST*0) ½«
2.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\fish.luainst.components.dryable:SetDryTime(TUNING.DRY_FAST)inst.components.dryable:SetDryTime(TUNING.DRY_FAST*0)
3.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\froglegs.luainst.components.dryable:SetDryTime(TUNING.DRY_FAST)inst.components.dryable:SetDryTime(TUNING.DRY_FAST*0)
¼´¿ÉÁÀÈâÎÞÐèµÈ´ý£¬°üÀ¨ÈâÀà¡¢Óã¡¢ÍÜÍÈ
ÆßÊ®Îå.ÖóÒ»¹øÊÕ¶à¸öÁÏÀí
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\components\\stewer.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º
if loot and loot.components.perishable then
loot.components.perishable:SetPercent( self.product_spoilage) end harvester.
components.inventory:GiveItem(loot, Vector3(TheSim:GetScreenPos(self.inst.Transform:GetWorldPosition()))) Ìæ»»Îª£º
local pt = Vector3(TheSim:GetScreenPos(self.inst.Transform:GetWorldPosition())) harvester.components.inventory:GiveItem(SpawnPrefab(self.product), nil, pt) harvester.components.inventory:GiveItem(SpawnPrefab(self.product), nil, pt) harvester.components.inventory:GiveItem(SpawnPrefab(self.product), nil, pt)
¼´¿ÉÖóÒ»¹øÊÕ
3
¸öÁÏÀí£¬ÏëÊÕ¶àÉÙ£¬¾Í¸´ÖƶàÉÙÐÐ
harvester.components.inventory:GiveItem(SpawnPrefab(self.product), nil, pt)¼´¿É
nil,
ÐÞ
Îļþ£¬½«¸Ä
Ϊ
ÐÞ
Îļþ£¬½«¸Ä
Ϊ
¹²
¶þ
¾ä
inst.components.dryable:SetDryTime(TUNING.DRY_MED)
ÐÞ
¸Ä
Ϊ
inst.components.dryable:SetDryTime(TUNING.DRY_MED*0)
ÐÞ
Îļþ£¬½«¹²Èý¾ä
¸Ä
Ϊ
ÆßÊ®Áù.Ëõ¶ÌÖóÁÏÀíʱ¼ä
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«BASE_COOK_TIME = night_time*.3333,ÐÞ¸ÄΪBASE_COOK_TIME = seg_time*.01,¼´¿É
ÆßÊ®Æß.Ëõ¶ÌµöÓãʱ¼ä
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º
FISHING_MINWAIT = 2, FISHING_MAXWAIT = 20, ÐÞ¸ÄΪ£º
FISHING_MINWAIT = 1, FISHING_MAXWAIT = 5,
¼´¿ÉËõ¶ÌµöÓãʱ¼ä
ÆßÊ®°Ë.ÊÕ»ñ·äÏä²»±»ÕÝ
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\beebox.luainst.components.childspawner:ReleaseAllChildren(picker)Ìæ»»ÎªÒÔÏÂÄÚÈÝ£º
--inst.components.childspawner:ReleaseAllChildren(picker)
¼´¿ÉÔÚÊÕ»ñ·äÏäʱ²»·É³öÃÛ·ä
ÆßÊ®¾Å.¿ÕÊÖ×¥Ã۷䡢ɱÈË·ä¡¢ºûµû¡¢Ó©»ð³æ£¨ÓóÈÉ«»¤Éí·û¿ÉÒÔ¿ìËÙÎüÈ¡£©
1.¿ÕÊÖ×¥Ã۷䡢ɱÈ˷䣺ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\bee.luaÎļþ£¬½«inst.components.inventoryitem.canbepickedup inst.components.inventoryitem.canbepickedup = true
2.¿ÕÊÖ×¥ºûµû£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\butterfly.luaÎļþ£¬½«
=
false
Ìæ
»»
Ϊ
Îļþ£¬½«
inst.components.inventoryitem.canbepickedup inst.components.inventoryitem.canbepickedup = true
= falseÌæ»»Îª
3.¿ÕÊÖ×¥Ó©»ð³æ£ºÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\fireflies.luaÎļþ£¬½«inst.components.inventoryitem.canbepickedup inst.components.inventoryitem.canbepickedup = true
¼´¿É¿ÕÊÖ×¥Ã۷䡢ɱÈË·ä¡¢ºûµû¡¢Ó©»ð³æ£¨ÓÃÐ¡ÍøÒ²Ì«ÄïÁ˰ɣ©
°ËÊ®.×°±¸²¶ÄñÆ÷¿ÉÎüÄñ£¨Ëü¾ø²»º±ÓУ¬Íù½ÖÀïÈÆ¹ýÒ»ÖÜ£¬Ëü±ã»¯ÎÚÓУ©
1.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\birdtrap.luaÎļþ£¬ÔÚ--this should be redone as a periodic test, probably, so that we can control the expected return explicitlyµÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
local function SpawnEffect(inst) local pt = inst:GetPosition()
local fx = SpawnPrefab("small_puff") fx.Transform:SetPosition(pt.x, pt.y, pt.z) fx.Transform:SetScale(0.5,0.5,0.5) end
local function getitem(player, amulet, item) SpawnEffect(item)
if item.components.stackable then item = item.components.stackable:Get() end
player.components.invento
ry:GiveItem(item) end
local function pickup(inst, owner) local pt = owner:GetPosition()
local ents = TheSim:FindEntities(pt.x, pt.y, pt.z, TUNING.ORANGEAMULET_RANGE*5)
for k,v in pairs(ents) do if
v.components.inventoryitem
and
v.components.inventoryitem.canbepickedup
and
v.components.inventoryitem.cangoincontainer and v:HasTag("bird") and not v.components.inventoryitem:IsHeld() then
=
false
Ìæ
»»
Ϊ
if not owner.components.inventory:IsFull() then getitem(owner, inst, v) return
elseif v.components.stackable then
local stack = owner.components.inventory:FindItem(function(item) return (item.prefab == v.prefab and not item.components.stackable:IsFull()
and item ~= owner.components.inventory.activeitem) end) if stack then
getitem(owner, inst, v) return end end end end end
local function onequip(inst, owner)
owner.AnimState:OverrideSymbol("swap_body", "swap_birdtrap")
inst.task = inst:DoPeriodicTask(TUNING.ORANGEAMULET_ICD*.1, function() pickup(inst, owner) end) end
local function onunequip(inst, owner)
owner.AnimState:ClearOverrideSymbol("swap_body") if inst.task then inst.task:Cancel() inst.task = nil end end
2.ÔÚinst:AddComponent("inventoryitem")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
inst:AddComponent("equippable") inst.components.equippable:SetOnEquip( onequip ) inst.components.equippable:SetOnUnequip( onunequip ) inst.components.equippable.equipslot = EQUIPSLOTS.BODY
3.ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\birds.luainst.components.inventoryitem.canbepickedup inst.components.inventoryitem.canbepickedup = true
4.ÔÚinst:AddComponent("occupier")µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
=
false
Ìæ
Îļþ£¬½«
»»
Ϊ
"swap_birdtrap",
inst:AddComponent("stackable")
inst.components.stackable.maxsize = TUNING.STACK_SIZE_SMALLITEM
¼´¿É×°±¸²¶ÄñÆ÷¿ÉÎüÄñ
°Ëʮһ.°×ÌìÒ²ÄÜ˯ÕÊÅñ£¬Ë¯ÕÊÅñ²»¼õ¼¢¶ö
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\tent.luaÎļþ£¬
1.ɾ³ýÏÂÁÐÄÚÈÝ£º
if GetClock():IsDay() then if sleeper.components.talker then
sleeper.components.talker:Say(GetString(inst.prefab, "ANNOUNCE_NODAYSLEEP")) return end end
2.ɾ³ýÏÂÁÐÄÚÈÝ£º
if GetClock():IsDay() then
if sleeper.components.talker then
sleeper.components.talker:Say(GetString(inst.prefab, "ANNOUNCE_NODAYSLEEP")) sleeper.components.health:SetInvincible(false) sleeper.components.playercontroller:Enable(true) return end end 3.½«
¼´¿É°×ÌìÒ²ÄÜ˯ÕÊÅñ£¬Ë¯ÕÊÅñ²»¼õ¼¢¶ö
sleeper.components.hunger:DoDelta(-TUNING.CALORIES_HUGE,
false,
true)Ìæ»»Îª
--sleeper.components.hunger:DoDelta(-TUNING.CALORIES_HUGE, false, true)
°ËÊ®¶þ.Óø¯ÀÃʳÎïÖÖ³ö³ØÌÁ
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\spoiledfood.lua
local function OnDeploy (inst, pt)
local pond = SpawnPrefab("pond") if pond then
pond:PushEvent("growfromspoiledfood") pond.Transform:SetPosition(pt.x, pt.y, pt.z) inst.components.stackable:Get():Remove() end end
inst:AddComponent("deployable") inst.components.deployable.ondeploy = OnDeploy
¼´¿ÉÓø¯ÀÃʳÎïÖÖ³ö³ØÌÁ
°ËÊ®Èý.Óòù×ÓÍÚµô³ØÌÁ
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\prefabs\\pond.luaÎļþ£¬
1.ÔÚÏÂÁÐÄÚÈݵÄÏÂÒ»ÐУº
local prefabs = {
"marsh_plant", "fish", "frog", "mosquito", }
²åÈëÒÔÏÂÄÚÈÝ£º
local function dig_up(inst, chopper) inst:Remove() end
Îļþ£¬ÔÚ
inst.components.edible.hungervalue = TUNING.SPOILED_HUNGERµÄÏÂÒ»ÐвåÈëÏÂÁÐÄÚÈÝ£º
2.ÔÚinst.components.fishable:SetRespawnTime(TUNING.FISH_RESPAWN_TIME)µÄÏÂÒ»ÐвåÈëÒÔÏÂÄÚÈÝ£º
inst:AddComponent("workable")
inst.components.workable:SetWorkAction(ACTIONS.DIG) inst.components.workable:SetOnFinishCallback(dig_up) inst.components.workable:SetWorkLeft(1)
¼´¿É½«³ØÌÁÓòù×ÓÍÚµô
°ËÊ®ËÄ.³ýµôÈ«²¿Æó¶ì¼°Æó¶ì±ù£¨ÊÀ½ç´Ó´ËÇå¾²ÁË£© ÓÃ
¼Ç
ÊÂ
±¾
´ò
¿ª
ÓÎ
Ï·
Ä¿
¼
\\data\\scripts\\prefabs\\forest.lua
Ìæ
ÎÄ»»
¼þ
£¬
½«Îª
inst:AddComponent("penguinspawner")¶ì²»»áÔÙÉú
°ËÊ®Îå.ÑÓ³¤È¼ÁÏȼÉÕʱ¼ä
ÓüÇʱ¾´ò¿ªÓÎϷĿ¼\\data\\scripts\\tuning.luaÎļþ£¬½«ÒÔÏÂÄÚÈÝ£º TINY_FUEL = seg_time*.25, SMALL_FUEL = seg_time * .5, MED_FUEL = seg_time * 1.5, MED_LARGE_FUEL = seg_time * 3, LARGE_FUEL = seg_time * 6, ÐÞ¸ÄΪ£º
TINY_FUEL = seg_time*1.25, SMALL_FUEL = seg_time * 2.5, MED_FUEL = seg_time * 7.5, MED_LARGE_FUEL = seg_time * 12, LARGE_FUEL = total_day_time*1,
ÓÎÏ·ÖÐseg_time£¨Ð¡Ê±£©Êý²»Òª³¬¹ý16£¬»áÌø³ö¡£Èç¹ûÏë¸Ä³¬¹ýÒ»Ìì¾ÍÓÃtotal_day_time*1,ÕâÑùµÄ¸ñʽ
--inst:AddComponent("penguinspawner")¼´¿É£¬´æµµÖÐÒѾÉϰ¶µÄÆó¶ìÇëÊÖ¶¯ÏûÃð£¬Æó